我检测到我的tun0
接口上有丢失。
它们似乎是由低txqueuelen
设置引起的。现在,当我增加txqueuelen
网络设备的值时,仍然没有出现任何丢失 - 我想知道是否有任何方法可以获取网络设备缓冲区的实际当前使用情况?
答案1
答案2
对于 TCP 缓冲区,您可以使用
netstat -nt
并查找第二列和第三列的接收和发送缓冲区(Recv-Q,Send-Q)
对于 UDP
netstat -nua
同样,您可以查看 /proc/net/{tcp,udp} 并查找 tx_queue 和 rx_queue
你也可以使用同样的方式
ethtool -S <nic card name> (driver need to support)
NIC statistics:
rx_packets: 445
tx_packets: 48
rx_bytes: 56015
tx_bytes: 5938
rx_broadcast: 336
tx_broadcast: 2
rx_multicast: 89
tx_multicast: 28
rx_errors: 0
tx_errors: 0
tx_dropped: 0
另外只想添加一个网络参数“tcp_moderate_rcvbuf”,默认情况下启用该参数,执行接收缓冲区自动调整。根据内核文档
If set, TCP performs receive buffer auto-tuning, attempting to
automatically size the buffer (no greater than tcp_rmem[2]) to
match the size required by the path for full throughput