As configurações net.core.wmem_default
e wmem_max
controlam os tamanhos inicial e máximo dos buffers de soquete TX em bytes. Enquanto a fila em si é apenas uma lista vinculada de skb
ponteiros, o kernel também controla o tamanho total de bytes consumido pelos, à skb
medida que são adicionados e removidos do buffer do soquete. O wmem_default
sysctl define o teto inicial padrão para novos soquetes ( net/core/sock.c:sock_init_data()
). É permitido aos aplicativos aumentar o tamanho dos buffers de seus soquetes e wmem_max
é o limite máximo para essa funcionalidade ( net/core/sock.c:sock_setsockopt()
).
Quando um pacote é removido de um buffer de soquete e encontra seu caminho através da pilha de redes do kernel, ele é colocado em uma fila de transmissão para que uma interface aguarde o carregamento na própria NIC. O txqueuelen
conjunto dos comandos ifconfig
ou ip
é o número de quadros permitido por fila de transmissão do kernel para a disciplina de enfileiramento ( net/sched/sch_generic.c:pfifo_fast_enqueue()
).
Por fim, ethtool -G
usa ioctl para definir o número de entradas de toque para o buffer de toque na própria NIC.