Есть ли способ получить текущее использование txqueue, например, на устройстве eth0 или tun?

Я обнаружил капли на моем tun0 интерфейс.

Они, кажется, были вызваны низким txqueuelen установка. Теперь, когда я увеличил txqueuelen значение для сетевого устройства и больше нет падений - мне интересно, есть ли способ получить текущее текущее использование буфера сетевого устройства?

1 ответ

Для TCP Buffer вы можете использовать

       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", который включен по умолчанию, выполняет автонастройку приемного буфера. Согласно kernel-doc

     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

Попробуйте проверить с помощью 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.

Другие вопросы по тегам