ISC (Internet Systems Consortium) представила ethq — инструмент для Linux, позволяющий отслеживать активность сетевых карт. Каждую секунду он считывает статистику карты и преобразует абсолютные значения в байты и пакеты в секунду для каждой очереди. Поддерживается ограниченное количество драйверов: i40e, ixgbe, а также vmxnet3. Код инструмента можно найти на GitHub.
Как работает ethq?
Драйвера сетевых карт на Linux, как правило, содержат статистику о том, какое количество пакетов и байтов было передано и получено. Эту информацию можно получить с помощью утилиты ethtool командой ethtool -S enp5s0f1
. Впрочем, драйвера содержат куда больший набор информации, поэтому для получения данных по очередям сетевой карты нужно воспользоваться, например, следующей командой:
$ ethtool -S enp5s0f1 | grep '[rt]x-[0-9]'
tx-0.tx_packets: 61122861442
tx-0.tx_bytes: 10359359292618
rx-0.rx_packets: 165894101718
rx-0.rx_bytes: 12865093535024
tx-1.tx_packets: 72709177633
tx-1.tx_bytes: 11351345564539
rx-1.rx_packets: 18640137236
rx-1.rx_bytes: 1462729691538
...
Проблема состоит в преобразовании этих значений в статистику по очередям в реальном времени. Именно для этого и предназначен инструмент ethq. С его помощью можно видеть данные в следующем формате:
Почему это важно?
Сетевые карты часто имеют несколько очередей для передаваемых и принимаемых пакетов. Причем ядро Linux может быть настроено таким образом, что за каждую очередь отвечает определенное ядро CPU. Для достижения максимальной эффективности сети необходимо равномерно распределить нагрузку между очередями и ядрами процессора. Возможность собирать статистику — важный шаг в этом направлении.
Терминал Linux позволяет решать множество задач. Чтобы работать в нем, как профи, используйте подборку полезных команд.
Source: блог Internet Systems Consortium