As configurações net.core.wmem_default
e wmem_max
controlam os tamanhos inicial e máximo dos buffers do soquete TX em bytes. Embora a fila em si seja apenas uma lista vinculada de skb
ponteiros, o kernel também registra o tamanho total de bytes consumido pelo skb
à medida que são adicionados e removidos do buffer de soquete. O wmem_default
sysctl define o limite inicial padrão para novos soquetes ( net/core/sock.c:sock_init_data()
). As aplicações podem aumentar o tamanho dos buffers de seus soquetes e wmem_max
é o teto 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 ser carregada na própria NIC. O txqueuelen
definido pelos comandos ifconfig
ou ip
é o número de quadros permitidos por fila de transmissão do kernel para a disciplina de enfileiramento ( net/sched/sch_generic.c:pfifo_fast_enqueue()
).
Finalmente, ethtool -G
usa ioctl para definir o número de entradas de toques para o buffer de anel na própria NIC.