La configuración net.core.wmem_defaulty wmem_maxcontrola los tamaños inicial y máximo de los búferes de socket TX en bytes. Si bien la cola en sí misma es solo una lista vinculada de skbpunteros, el núcleo también realiza un seguimiento del tamaño total de bytes consumido por los skb's cuando se agregan y eliminan del búfer de socket. El wmem_defaultsysctl establece el techo inicial predeterminado para los nuevos sockets ( net/core/sock.c:sock_init_data()). Se permite que las aplicaciones aumenten el tamaño de los buffers de sus sockets y wmem_maxes el límite para esa funcionalidad ( net/core/sock.c:sock_setsockopt()).
Cuando un paquete se ha eliminado de un búfer de socket y se abre paso a través de la pila de redes del kernel, se coloca en una cola de transmisión para que una interfaz espere a que se cargue en la NIC. El txqueuelenconjunto de comandos ifconfigo ipes el número de tramas permitidas por cola de transmisión del núcleo para la disciplina de colas ( net/sched/sch_generic.c:pfifo_fast_enqueue()).
Finalmente, ethtool -Gusa ioctl para establecer el número de entradas de anillo para el búfer de anillo en la propia NIC.
Christopher Neylan
fuente