有没有办法获取 eth0 或 tun 设备上的当前 txqueue 利用率?

有没有办法获取 eth0 或 tun 设备上的当前 txqueue 利用率?

我检测到我的tun0接口上有丢失。

它们似乎是由低txqueuelen设置引起的。现在,当我增加txqueuelen网络设备的值时,仍然没有出现任何丢失 - 我想知道是否有任何方法可以获取网络设备缓冲区的实际当前使用情况?

答案1

尝试检查

# tc -s qdisc show dev tun0
qdisc mq 0: root 
 Sent 889257959003266 bytes 478800964 pkt (dropped 162977296, overlimits 0 requeues 1784154649) 
 backlog 0b 0p requeues 1784154649 

重要的部分是backlog 0b 0p它告诉您 TX 队列中的数据包和字节数的填充情况。

Tc 使用以下方式从内核获取此信息网络链接界面。

答案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

相关内容