Как я могу распределить нагрузку между очередями RIC NIC? - PullRequest
0 голосов
/ 26 сентября 2018

Я использую гигабитный четырехпортовый сетевой адаптер 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, и это тоже не сработало.

Любая помощь будет высоко оценен.

...