FreeBSD netstat -di, Idrop против Drop and drop от NIC или ядра?
В FreeBSD какая разница между Drop и Idrop в выводе netstat?
$ netstat -di
Name Mtu Network Address Ipkts Ierrs Idrop Opkts Oerrs Coll Drop
bge0* 1500 <Link#1> 00:16:d4:e3:49:31 0 0 0 0 0 0 0
wpi0 2290 <Link#2> 00:1b:77:86:2d:fa 0 53068 0 179587 3 0 0
Кроме того, netstat получает счетчик сбрасываний из NIC или из буфера ядра? Например, если сетевой адаптер не может принимать больше пакетов из-за отсутствия дескрипторов, будут ли потерянные пакеты сообщаться как одно из значений отбрасывания в netstat?
Я спрашиваю, потому что в Linux ifconfig читает из /proc/net/dev и, насколько я знаю, он удаляется только тогда, когда буфер ядра заполнен. Поэтому, если сетевой адаптер не будет принимать пакеты из-за отсутствия дескрипторов, вы не будете знать об этом, то есть он не попадет в память ядра.
это и netstat во FreeBSD имеет опцию -B для статистики буфера BPF, поэтому сейчас имеет смысл, что netstat -di сообщает о количестве сбрасываний от самого NIC/ драйвера.
Правильно Неправильно?
Любая помощь приветствуется, спасибо
1 ответ
Отсутствие программных дескрипторов (то есть кластеров mbuf) можно наблюдать с помощью:
# vmstat -z
смотреть на FAIL
колонка.
Нехватка аппаратных дескрипторов может наблюдаться только через специфичный для драйвера интерфейс, например, для карт Intel e1000 через:
# sysctl dev.em.0.debug=1 && dmesg | tail
...
em0: Tx Descriptors avail failure = 0
em0: RX discarded packets = 0
...
Также счетчик дескрипторов может быть настроен через loader.conf
в некоторых сетевых картах
Относительно вашего вопроса "капли против капель" вы должны искать источники
if_data.ifi_iqdrops
if_snd.ifq_drops
Если я правильно понял, один для ввода капель, другой для вывода капель (т.е. ALTQ
).
PS. Для получения дополнительной информации обратитесь к разделу 3.3 "ifnet
структура "из TCP/IP, иллюстрированный том 2, Stevens & Wright. Или исходный код вашей ОС.