Answers:
的net.core.wmem_default和wmem_max设置控制TX插座缓冲器以字节为单位的初始和最大尺寸。尽管队列本身只是skb指针的链接列表,但内核也会跟踪skbs在套接字缓冲区中添加和删除时所消耗的总字节大小。该wmem_defaultsysctl的设置了新的套接字默认初始上限(net/core/sock.c:sock_init_data())。允许应用程序增加其套接字缓冲区的大小,并且wmem_max是该功能的上限(net/core/sock.c:sock_setsockopt())。
当数据包从套接字缓冲区中删除并通过内核网络堆栈找到其路径时,会将其放在传输队列中,等待接口加载到NIC本身。该txqueuelen集合由ifconfig或ip命令是每内核传输队列允许排队规则帧数(net/sched/sch_generic.c:pfifo_fast_enqueue())。
最后,ethtool -G使用ioctl设置NIC上环形缓冲区的环形条目数。
我知道我应该给出一个详尽的解释,但是D a Seimon已经有了。简而言之txqueuelen是缓冲区大小。所有网络数据包都适合此缓冲区,而在该缓冲区tx中的IP数据包的数据包大小就是。也就是说,如果我正确理解了该帖子。