Différence entre txqueuelen et ethtool tx

Quelle est la différence entre le paramètre txqueuelen qui peut être appliqué avec:

 ifconfig eth4 txqueuelen 5000 ip link set eth4 txqueuelen 5000 

Et le réglage de la taille de l'anneau tx qui peut être appliqué avec:

 ethtool -G eth4 tx 4096 

Comment sont-ils liés aux parameters globaux /proc/sys/net/core/wmem* ?

Je suis sur RHEL6.

Les parameters net.core.wmem_default et wmem_max contrôlent les tailles initiale et maximale des tampons de socket TX en octets. Bien que la queue elle-même ne soit qu'une list skb pointeurs skb , le kernel garde également la trace de la taille totale des octets consommés par les skb au skb et à mesure qu'ils sont ajoutés et retirés du tampon de socket. Le wmem_default wmem_default définit le plafond initial par défaut pour les nouvelles sockets ( net/core/sock.c:sock_init_data() ). Les applications sont autorisées à augmenter la taille des tampons de leurs sockets et wmem_max est le plafond de cette fonctionnalité ( net/core/sock.c:sock_setsockopt() ).

Lorsqu'un package a été retiré d'un tampon de socket et se trouve dans la stack de réseaux du kernel, il est placé sur une queue de transmission pour qu'une interface attende d'être chargée sur le NIC lui-même. Le txqueuelen défini par les commands ifconfig ou ip est le nombre de trames autorisées par queue de transmission du kernel pour la discipline de mise en queue ( net/sched/sch_generic.c:pfifo_fast_enqueue() ).

Enfin, ethtool -G utilise ioctl pour définir le nombre d'inputs d'anneau pour le tampon d'anneau sur le NIC lui-même.

Je sais que je suis censé donner une longue explication, mais D un Seimon a déjà . En bref, txqueuelen est la taille de la memory tampon. Tous les packages réseau s'intègrent dans ce tampon, alors que tx est la taille du package IP qui passe dans ledit tampon. C'est si je comprends ce post correctement.