Сколько пакетов ожидается внутри сетевого интерфейса?

И не забывайте о разреженных файлах:

$ dd if=/dev/null of=MEAN_FILE bs=1024k seek=1024k
0+0 Datensätze ein
0+0 Datensätze aus
0 Bytes (0 B) kopiert, 1,0298e-05 s, 0,0 kB/s
$ ls -lh MEAN_FILE 
-rw-r--r-- 1 yeti yeti 1,0T Apr  3 09:44 MEAN_FILE
$ du MEAN_FILE 
0       MEAN_FILE
0
28.01.2019, 19:42
1 ответ

Похоже, нет способа получить длину очереди устройства из пользовательского пространства.


Кстати, некоторые подробности, если кому интересно:

Устройства

usbnetотслеживают стоящие в очереди пакеты TX, используя поле txq.qlenв struct usbnet. Максимальная длина очереди TX определяется полем tx_qlenиз struct usbnet.

В моем примере у меня есть 60(tx_qlen)пакетов в очереди в драйвере USB и (более или менее )30 пакетов на qdisc, каждый из которых содержит 1500 байт данных. Поскольку буфер сокета рассчитывается с учетом skb->truesize(, то есть данных skb + размер структуры skb ), размер каждого пакета составляет 2,3 КБ :

.
2.3k * (60 + 30) ~= 200k

Это подтверждает, что 138 КБ буфера сокета потребляются пакетами, поставленными в очередь в сетевом драйвере, в то время как 69 КБ буфера сокета находятся в очереди qdisc :нет других пакетов, поставленных в очередь где-то еще в ядре.

1
28.01.2020, 04:03

Теги

Похожие вопросы