Я использую гигабитный четырехпортовый сетевой адаптер Intel i350 с драйвером igb.Сетевая карта была установлена на компьютере Dell с 32 ядрами процессора и работает под управлением Ubuntu 18.04.Имя интерфейса, с которым я работаю: "eno2
"
Интерфейс (т. Е. Eno2) имеет очереди 8 rx
и 8 tx
.Вот результат для ethool -l eno2
:
Channel parameters for eno2:
Pre-set maximums:
RX: 0
TX: 0
Other: 1
Combined: 8
Current hardware settings:
RX: 0
TX: 0
Other: 1
Combined: 8
, а вот результат для ls /sys/class/net/eno2/queues/
:
drwxr-xr-x 2 root root 0 Sep 25 19:09 rx-0
drwxr-xr-x 2 root root 0 Sep 25 19:09 rx-1
drwxr-xr-x 2 root root 0 Sep 25 19:09 rx-2
drwxr-xr-x 2 root root 0 Sep 25 19:09 rx-3
drwxr-xr-x 2 root root 0 Sep 25 19:09 rx-4
drwxr-xr-x 2 root root 0 Sep 25 19:09 rx-5
drwxr-xr-x 2 root root 0 Sep 25 19:09 rx-6
drwxr-xr-x 2 root root 0 Sep 25 19:09 rx-7
drwxr-xr-x 3 root root 0 Sep 25 19:09 tx-0
drwxr-xr-x 3 root root 0 Sep 25 19:09 tx-1
drwxr-xr-x 3 root root 0 Sep 25 19:09 tx-2
drwxr-xr-x 3 root root 0 Sep 25 19:09 tx-3
drwxr-xr-x 3 root root 0 Sep 25 19:09 tx-4
drwxr-xr-x 3 root root 0 Sep 25 19:09 tx-5
drwxr-xr-x 3 root root 0 Sep 25 19:09 tx-6
drwxr-xr-x 3 root root 0 Sep 25 19:09 tx-7
Я использовал ethtool -X eno2 weight 1 1 1 1 1 1 1 1
, чтобы придать всем им одинаковый вес.
Когда я пересылаю трафик на eno2
, одновременно работает только одна из его rx-очередей.Вот результат ethool -X eno2 | grep rx_queue_'[0-7]'*_packets
во время, скажем, t1:
rx_queue_0_packets: 0
rx_queue_1_packets: 1
rx_queue_2_packets: 40251934
rx_queue_3_packets: 0
rx_queue_4_packets: 6
rx_queue_5_packets: 3
rx_queue_6_packets: 0
rx_queue_7_packets: 1
, если я сделаю еще один эксперимент (скажем, в момент времени t2) и выполню ту же команду, результат будет таким:
rx_queue_0_packets: 0
rx_queue_1_packets: 1
rx_queue_2_packets: 40251934
rx_queue_3_packets: 0
rx_queue_4_packets: 6
rx_queue_5_packets: 76334041
rx_queue_6_packets: 0
rx_queue_7_packets: 1
Как видите, активна только одна очередь rx.Я хотел бы знать, как я могу распределить нагрузку между всеми очередями RX?
Кстати, я также пытался echo ffffffff > /sys/class/net/neo2/queues/rx-0/rps_cpus
распределить нагрузку на все 32 ядра процессора (используя все очереди rx), но это не сработало.
Я также пытался манипулировать числом rx иTX с использованием ethrtool
, и это тоже не сработало.
Любая помощь будет высоко оценен.