Я обнаружил капли на моем tun0
интерфейс.
Похоже, они были вызваны низким txqueuelen
настройка. Теперь, когда я увеличил txqueuelen
значение для сетевого устройства, и еще нет сбросов - мне интересно, есть ли способ получить фактическое текущее использование буфера сетевого устройства?
Для буфера 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