Перейти до

Проблема с tx очередями


Рекомендованные сообщения

Имеется NAS на CentOS release 6.7 (Final), ядро 3.10.80, сетевые Ethernet controller: Intel Corporation 82580 Gigabit Fiber Network Connection (rev 01). accel-ppp-1.9.0 терминирует PPPoE и PPTP.

8 комбинированных очередей TxRx. Прерывания раскинуты по ядрам.

cat /proc/interrupts | grep igb0
 46:          0          0          0          0          0          0          0          0   PCI-MSI-edge      igb0
 47: 3681205889   50048953   50029181   50047552   50036376   50035311   49712369    3536645   PCI-MSI-edge      igb0-TxRx-0
 48:  219271596 2486502926  219196088  219174340  219155134  219342744  218315017    8599117   PCI-MSI-edge      igb0-TxRx-1
 49:   49541202   49564067 3438797244   49581141   49567721   49551820   49312647    3497787   PCI-MSI-edge      igb0-TxRx-2
 50:   50308046   50330700   50304861 3547024542   50333286   50305789   50061946    3523822   PCI-MSI-edge      igb0-TxRx-3
 51:   50344026   50356494   50342528   50380676 3505792337   50340448   50090666    3541274   PCI-MSI-edge      igb0-TxRx-4
 52:   49138509   49172907   49156121   49171407   49154017 3590379958   48913366    3440452   PCI-MSI-edge      igb0-TxRx-5
 53:   50352666   50379452   50371972   50384448   50382185   50358444 3488944827    3523133   PCI-MSI-edge      igb0-TxRx-6
 54:   48432785   48448748   48424295   48463658   48451977   48426345   48159713 2872785078   PCI-MSI-edge      igb0-TxRx-7 

Проблема в распределении Tx пакетов. Почти все пакеты попадают в tx_queue_1

 ethtool -S igb0 | grep tx | grep packets
     tx_packets: 228382405263
     tx_queue_0_packets: 32612151
     tx_queue_1_packets: 228135401120
     tx_queue_2_packets: 36839517
     tx_queue_3_packets: 35262224
     tx_queue_4_packets: 36911828
     tx_queue_5_packets: 33273054
     tx_queue_6_packets: 32876886
     tx_queue_7_packets: 39228483

При этом с Rx все нормально

ethtool -S igb0 | grep rx | grep packets
     rx_packets: 315411770721
     rx_queue_0_packets: 39698105729
     rx_queue_1_packets: 39411188725
     rx_queue_2_packets: 39358073581
     rx_queue_3_packets: 39463342718
     rx_queue_4_packets: 39405329904
     rx_queue_5_packets: 39551789194
     rx_queue_6_packets: 39401547446
     rx_queue_7_packets: 39122381986

Интерфейс igb0 смотрит в интернет, на нем 2 VLAN.

На интерфейсе igb1 та же ситуация, на нем 256 VLAN (здесь accel-ppp).

Непонятно почему исходящие пакеты не распределяются равномерно по очередям? Куда копать?

Відредаговано foreverok
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

да ручками прерывания прибит к ядрам и делов то)

 

Это сделано, о чем я написал сразу

echo 01 > /proc/irq/47/smp_affinity
echo 02 > /proc/irq/48/smp_affinity
echo 04 > /proc/irq/49/smp_affinity
echo 08 > /proc/irq/50/smp_affinity
echo 10 > /proc/irq/51/smp_affinity
echo 20 > /proc/irq/52/smp_affinity
echo 40 > /proc/irq/53/smp_affinity
echo 80 > /proc/irq/54/smp_affinity
Відредаговано foreverok
Ссылка на сообщение
Поделиться на других сайтах

да меня смутила картина 

cat /proc/interrupts | grep igb0

ожидал увидеть нечто похожее

 65:      34309          1          0          0   PCI-MSI-edge      eth0-TxRx-0
 66:          0      25596          1          1   PCI-MSI-edge      eth0-TxRx-1
 67:          1          1     168587          0   PCI-MSI-edge      eth0-TxRx-2
 68:          0          0          1      31182   PCI-MSI-edge      eth0-TxRx-3
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Там счетчики еще с того момента, когда они свободно гуляли по ядрам.

 

В общем похоже проблема в стандартной дисциплине mq.

tc -s -d class show dev igb0
class mq :1 root
 Sent 4248819500 bytes 32806685 pkt (dropped 0, overlimits 0 requeues 1785)
 backlog 0b 0p requeues 1785
class mq :2 root
 Sent 70099802402310 bytes 1550251209 pkt (dropped 19391, overlimits 0 requeues 10021965)
 backlog 0b 0p requeues 10021965
class mq :3 root
 Sent 4784327130 bytes 37032812 pkt (dropped 0, overlimits 0 requeues 1988)
 backlog 0b 0p requeues 1988
class mq :4 root
 Sent 4690785532 bytes 35456978 pkt (dropped 0, overlimits 0 requeues 2182)
 backlog 0b 0p requeues 2182
class mq :5 root
 Sent 4546919954 bytes 37108307 pkt (dropped 0, overlimits 0 requeues 2000)
 backlog 0b 0p requeues 2000
class mq :6 root
 Sent 4352457687 bytes 33484935 pkt (dropped 0, overlimits 0 requeues 1691)
 backlog 0b 0p requeues 1691
class mq :7 root
 Sent 4273704762 bytes 33073391 pkt (dropped 0, overlimits 0 requeues 1612)
 backlog 0b 0p requeues 1612
class mq :8 root
 Sent 4629802846 bytes 39471512 pkt (dropped 0, overlimits 0 requeues 2661)
 backlog 0b 0p requeues 2661

А решение:

tc qdisc add dev eth0 root handle 1: multiq 

И раскинуть фильтрами по очередям.

Осталось только нужные фильтры подобрать что бы раскинуть трафик по очередям.

 

Взял тут https://www.kernel.org/doc/Documentation/networking/multiqueue.txt

Відредаговано foreverok
Ссылка на сообщение
Поделиться на других сайтах

Врядли это оно. По крайней мере к tx_queue оно не относится, там драйвер рулит распределением трафика и похоже делает это сугубо по dst mac.

Да и с сами multiq есть вопросы, это ж получатся отдельные инстансы для шейпера со всеми вытекающими приколами.

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Оно. Добавил график в заббикс. Что бы визуально видеть изменения.

Данные снимаются через ethtool 

 

В итоге получил следующую картину:

 

rBlGaAmgfCtfgEbp9nRa7GLcsQS6o9.png

 

Не идеально конечно. Но уже лучше. 

Відредаговано foreverok
Ссылка на сообщение
Поделиться на других сайтах

PPPoE/PPTP проблема наблюдалась как на внутреннем интерфейсе так и на внешнем только с TX . C RX очередями все ровно.

Что то не нашел тут ничего про TX.

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/network-rps.html

 

удалось разрулить как писал выше через tc multiq

Ссылка на сообщение
Поделиться на других сайтах

tx - по идее грабли быть не должно. да и вообще нагрузка от него окологнулевая, и отдельные rx/tx очереди обычно не используют.

 

rx - все падает в одну очередь т.к. сетевуха смотрит по фиксированному смещению на ip, а там - PPPoE header. очень странно что смена дисциплины повлияла на то, как сетевуха сортирует пакеты.

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Еще раз говорю, с RX все ок

 ethtool -S igb0 | grep rx | grep packets
     rx_packets: 330764836530
     rx_queue_0_packets: 41641938982
     rx_queue_1_packets: 41324756652
     rx_queue_2_packets: 41284168751
     rx_queue_3_packets: 41376661849
     rx_queue_4_packets: 41290403953
     rx_queue_5_packets: 41482067750
     rx_queue_6_packets: 41332238092
     rx_queue_7_packets: 41032589069

А вот Tx :

 ethtool -S igb0 | grep tx | grep packets
     tx_packets: 239368064948
     tx_queue_0_packets: 1354117513
     tx_queue_1_packets: 231581877249
     tx_queue_2_packets: 1148038306
     tx_queue_3_packets: 1064090349
     tx_queue_4_packets: 1048531361
     tx_queue_5_packets: 1054769623
     tx_queue_6_packets: 1056601340
     tx_queue_7_packets: 1060039209
Відредаговано foreverok
Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...