Linux
有沒有辦法在例如 eth0 或 tun 設備上獲取目前的 txqueue 使用率?
我在我的
tun0
界面上檢測到掉線。它們似乎是由低
txqueuelen
設置引起的。現在,隨著我增加txqueuelen
網路設備的值並且沒有更多的下降 - 我想知道有沒有辦法獲得網路設備緩衝區的實際目前使用情況?
嘗試使用tc檢查:
# 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 使用netlink介面從核心獲取此資訊。
對於 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