Перейти к содержимому
Калькуляторы

Расскажите еще, для полной картины - у Вас 6 ethernet-ов, какие порты - какие модели карт (я смотрю 2-5 ethernet-ы это Ваш 82576-й счетвереный Интел, а 0-1 что?), какие порты - куда смотрят (какие аплинк, на каких пппое, что куда маршрутизируется), как бондите (и если бондите то почему ПППоЕ сервера на физических интерфейсах а не на бонде). Сервер, насколько я понял, дуальный с включеным гипертрейдингом?

 

Из того что Вы опубликовали сразу видно, что молотит только первое ядро - т.е. smp_affinity в итоге рулить таки придется. Ну и опять же - пересобирайте rp-pppoe с поддержкой кернелмод-ы.

Поделиться сообщением


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

Рассказываю :)

0-1 - это аплинк, встроенные в мать сетевки, в бонде, делаю его так:

 

# cat /etc/network/bond0cfg

auto bond0
iface bond0 inet static
        address 192.168.10.12
        netmask 255.255.255.0
        network 192.168.10.0
        gateway 192.168.10.1
        slaves eth0 eth1
        bond_mode 802.3ad
        miimon 100
        lacp_rate slow

 

Со 2 по 5 интерфейсы - это вот та quad сетевка, на ней куча vlan'ов поднята.

 

То есть вы советуете всё-таки довести до ума smp_affinity в первую очередь и наблюдать как себя поведет машинка?

Поделиться сообщением


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

Такой вопрос тогда - вот сейчас сервак работает в промышленных условиях, если я начну в процессе работы менять affinity, у меня ничего не встанет?

И может быть имеет смысл поставить irqbalance?

Изменено пользователем DukeNukem3D

Поделиться сообщением


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

Имеет смысл перекомпилить pppoe-server c поддержкой кернел-моде. Все остальное бессмысленные танцы с бубном..

Перекомпилить просто и быстро, дерните потом pppoe, одиночный обрыв юзеры вам простят я думаю.

 

Еще есть вариант - интерфейсы и так в бондинге, убрать нафиг поддержку очередей у IGB и раскидать через affinity прерывания на 4 интерфейса вручную. Soft irq должны распределиться равномерно. Или не убирать очереди, а расставить ручками 80-88 - affinity 1, 89-97 - 2 и т.д.

 

При играх с аффинити современные ядра не падают, можно эксперементировать.

Изменено пользователем kayot

Поделиться сообщением


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

Вот ща с affinity балуюсь - вроде помогает. Только это получается что - у меня 6 физических интерфейсов, на каждом 8 очередей - это мне нужно 48 прерываний ручками раскидать? Ладно еще один раз это сделать и в скрипт загнать, а после ребута номера прерываний не поменяются?

Вобщем пока статично раскидал по ядрам физические интерфейсы вместе с очередями по ядрам, вроде спало average load, правда на 1/3. Буду пробовать пересобрать в кернел мод рррое тогда, на виртуалке сделал, полет нормальный, на работающей машинке уж в понедельник осуществлю.

Изменено пользователем DukeNukem3D

Поделиться сообщением


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

учитывая что в kernel mode ресурсы в pppoe-server тратятся мало - смысла мало

Поделиться сообщением


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

После ребута номера перерываний не поменяются. У вас фактически при 4ех ядрах и 6ти инерфейсах очереди вообще не нужны, уберите их для простоты настройки :) Ну и в кернел-моде загрузка сама собой упадет до единиц процентов, это все глупости.

Поделиться сообщением


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

После ребута номера перерываний не поменяются. У вас фактически при 4ех ядрах и 6ти инерфейсах очереди вообще не нужны, уберите их для простоты настройки :) Ну и в кернел-моде загрузка сама собой упадет до единиц процентов, это все глупости.

Подскажите манул по отключению очередей? В readme драйвера чет нет внятных пояснений по этому поводу.

Поделиться сообщением


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

После ребута номера перерываний не поменяются. У вас фактически при 4ех ядрах и 6ти инерфейсах очереди вообще не нужны, уберите их для простоты настройки :) Ну и в кернел-моде загрузка сама собой упадет до единиц процентов, это все глупости.
А где Вы у него 4 ядра увидели? - суда по тому что написано, то у него двухпроцессорный сервер с включеным гипертрейдингом.

Т.е. ядер больше чем сетевых и при такой конфигурации применение нескольких очередей на nic оправдано.

Беда только в том, что при пппое трафике работать будет только первая очередь. Так что в лучшем случае чего удастся добиться это седелать отдельно TX и RX (разнеся их по прерываниям). - Это касаемо счетверной карты.

На двух же аплинковых сетевых интерфейсах можно снизить количество очередей до двух.

 

Регулировка количества овередей выполняется опциями драйвера IGB:

 

 

RSS

 

Valid Range: 0-8

 

Default Value: 1

 

0 - Assign up to whichever is less, number of CPUS or number of

queues X - Assign X queues where X is less than the maximum num-

ber of queues

 

Note: for 82575-based adapters the maximum number of queues is

4; for 82576-based and newer adapters it is 8.

 

This parameter is also affected by the VMDq parameter in that it

will limit the queues more.

 

QueuePairs

 

Valid Range: 0-1

 

Default Value: 1 (TX and RX will be paired onto one interrupt

vector)

 

If set to 0, when MSI-X is enabled, the TX and RX will attempt

to occupy separate vectors.

 

Поделиться сообщением


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

Да, чет между глаз попало, в readme всё это есть.

Однако я вот сейчас наблюдаю - у меня не только первая очередь работает на интерфейсах с РРРоЕ - все примерно поровну.

Изменено пользователем DukeNukem3D

Поделиться сообщением


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

да уж....ну вы даете ребят:)
А что нибудь более осмысленное сказать можете? - Что не так то?

 

Да, чет между глаз попало, в readme всё это есть.

Однако я вот сейчас наблюдаю - у меня не только первая очередь работает на интерфейсах с РРРоЕ - все примерно поровну.

Если сделать выжимку из cat /proc/interrupts | grep eth, то видно следующее:

 

 98:          1 eth2
99:   75962605 eth2-TxRx-0
100:      63062 eth2-TxRx-1
101:   62583580 eth2-TxRx-2
102:      45308 eth2-TxRx-3
103:      80676 eth2-TxRx-4
104:     912289 eth2-TxRx-5
105:     140807 eth2-TxRx-6
106:     179521 eth2-TxRx-7
107:          1 eth3
108:   17755826 eth3-TxRx-0
109:      24566 eth3-TxRx-1
110:   16286844 eth3-TxRx-2
111:      26189 eth3-TxRx-3
112:      24871 eth3-TxRx-4
113:     411432 eth3-TxRx-5
114:      24473 eth3-TxRx-6
115:      46123 eth3-TxRx-7
116:          1 eth4
117:   21286619 eth4-TxRx-0
118:      25408 eth4-TxRx-1
119:   18629108 eth4-TxRx-2
120:      31585 eth4-TxRx-3
121:      25233 eth4-TxRx-4
122:     167914 eth4-TxRx-5
123:      26318 eth4-TxRx-6
124:      66783 eth4-TxRx-7
125:          1 eth5
126:   57167410 eth5-TxRx-0
127:      31932 eth5-TxRx-1
128:   52959686 eth5-TxRx-2
129:      75702 eth5-TxRx-3
130:      88835 eth5-TxRx-4
131:     757497 eth5-TxRx-5
132:      70384 eth5-TxRx-6
133:     157981 eth5-TxRx-7

 

А из этого можно сделать вывод что прерывания ложатся не ровно - т.е. работают 0 и 2 очереди, причем они у Вас совмещенные и логично предположить, что одна работает на прием а другая на передачу.

Попробуйте поглядеть вот так:

ethtool -S eth2 | grep _queue_ | grep _bytes
ethtool -S eth3 | grep _queue_ | grep _bytes
ethtool -S eth4 | grep _queue_ | grep _bytes
ethtool -S eth5 | grep _queue_ | grep _bytes

Станет более понятно.

 

Так же наблюдается дисбаланс между сетевыми интерфейсами - Вы на разных сетевых интерфейсах PPPoEм обслуживаете разные вланы что ли? Потому как если на все 4 интерфейса загнать одинаковые вланы и стартануть на них pppoe-server-а, то клиенты размазываются по этим сpppoe-server-ам достаточно ровно.

 

В вашем случае я бы наверное выключил гипертрейдинг (и получил бы систему с 8-ю ядрами), перекомпилил pppoe-server с поддержкой кернел-моды, все сетевые интерфейсы сконфигурировал в режим с одной совмещенной (Tx+RX) очередью, 0 и 1 первый сетевые интерфейсы прибил бы при помощи affinity к 3 и 4 ядрам, в интерфейсы 2-4 к ядрам 4-8.

 

 

 

После ребута номера перерываний не поменяются. У вас фактически при 4ех ядрах и 6ти инерфейсах очереди вообще не нужны, уберите их для простоты настройки :) Ну и в кернел-моде загрузка сама собой упадет до единиц процентов, это все глупости.
В автозагрузку нечто типа такого добавьте и будет Вам счастье:

 

 

/bin/echo 1  >   /proc/irq/`cat /proc/interrupts | grep 'eth0-tx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 2  >   /proc/irq/`cat /proc/interrupts | grep 'eth1-tx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 4  >   /proc/irq/`cat /proc/interrupts | grep 'eth2-tx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 8  >   /proc/irq/`cat /proc/interrupts | grep 'eth3-tx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 10 >   /proc/irq/`cat /proc/interrupts | grep 'eth0-rx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 20 >   /proc/irq/`cat /proc/interrupts | grep 'eth1-rx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 40 >   /proc/irq/`cat /proc/interrupts | grep 'eth2-rx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 80 >   /proc/irq/`cat /proc/interrupts | grep 'eth3-rx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity

 

Да, чет между глаз попало, в readme всё это есть.

Однако я вот сейчас наблюдаю - у меня не только первая очередь работает на интерфейсах с РРРоЕ - все примерно поровну.

Опять же

cat /proc/interrupts | grep eth

ethtool -S eth?? | grep _queue_ | grep _bytes

в студию.

Т.е. слабо верится что оно вдруг заработало нормально - RSS в принципе не может с pppoe трафиком работать нормально.

Изменено пользователем Jugernault

Поделиться сообщением


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

У некоторых, вроде, получалось прерывания от сетевых с РРРоЕ раскидать с помощью RPS в 35 ядре. Здесь была где-то тема, поищите, может поможет.

 

пс. да, для такого сервера ваши 300 тунелей - смешная нагрузка. соберите в кернел мод, распределять вообще ничего не надо будет

 

Поделиться сообщением


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

У некоторых, вроде, получалось прерывания от сетевых с РРРоЕ раскидать с помощью RPS в 35 ядре. Здесь была где-то тема, поищите, может поможет.
Тема была, да вот только результатов положительных никто не видел.
пс. да, для такого сервера ваши 300 тунелей - смешная нагрузка. соберите в кернел мод, распределять вообще ничего не надо будет
Не пишите бред - распределять конечно же нужно, причем вдумчиво. В противном случае часть ядер будет простаивать.

Ну а то что нагрузка смешная это факт - такой сервер "упрется" где то в районе 5К тоннелей и 2-2.5Г суммарного трафика при где то 500 KPps.

Изменено пользователем Jugernault

Поделиться сообщением


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

Тема была, да вот только результатов положительных никто не видел.
я делаю вывод по этому --

http://forum.nag.ru/forum/index.php?showto...mp;#entry527216

сам не экспериментировал

 

Не пишите бред - распределять конечно же нужно, причем вдумчиво. В противном случае часть ядер будет простаивать.

Ну а то что нагрузка смешная это факт - такой сервер "упрется" где то в районе 5К тоннелей и 2-2.5Г суммарного трафика при где то 500 KPps.

Но сейчас ведь речь идет не о "5К тоннелей и 2-2.5Г суммарного трафика при где то 500 KPps".

Если жалко что простаивают ядра, то можно и распределить.

 

Поделиться сообщением


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

ethtool -S eth2 | grep _queue_ | grep _bytes
     tx_queue_0_bytes: 0
     tx_queue_1_bytes: 3070529
     tx_queue_2_bytes: 1299610477899
     tx_queue_3_bytes: 737
     tx_queue_4_bytes: 0
     tx_queue_5_bytes: 47141316103
     tx_queue_6_bytes: 6332010
     tx_queue_7_bytes: 75277618
     rx_queue_0_bytes: 871260868477
     rx_queue_1_bytes: 14105146
     rx_queue_2_bytes: 19587137
     rx_queue_3_bytes: 15651124
     rx_queue_4_bytes: 34265216
     rx_queue_5_bytes: 12428979
     rx_queue_6_bytes: 47709876
     rx_queue_7_bytes: 18843446

 

Да, неравномерно как-то, но всё же каждая очередь то занята.

На разных интерфейсах у меня разные вланы, делать одинаковые как-то в голову даже не приходило. Не проще ли будет в таком случае интерфейсы на quad сетевке объединить в bond и уже на самом bond'е настроить vlan'ов? Ну это я уже попробую если кернел мод не спасет.

Поделиться сообщением


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

да уж....ну вы даете ребят:)
А что нибудь более осмысленное сказать можете? - Что не так то?

Судя по нику и тексту - это бот тыкается.

Поделиться сообщением


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

Да, неравномерно как-то, но всё же каждая очередь то занята.
Да практически ничем не заняты - по одно на прием и на передачу работает. Разница же между значениями на 3-4 порядка.

 

На разных интерфейсах у меня разные вланы, делать одинаковые как-то в голову даже не приходило.

Не проще ли будет в таком случае интерфейсы на quad сетевке объединить в bond и уже на самом bond'е настроить vlan'ов?

Ну скажем так - попробовать можно. Я пробовал - у меня получилось, что результаты лучше когда не бондено. Ровнее нагрузка по ядрам ложилась.

 

Ну это я уже попробую если кернел мод не спасет.
Спасти то спасет, это однозначно, только все равно же надо оптимума добиться - совесть Вам жить спокойно даст, что такая железяка в 1/8 своей мощи работает? :)

Поделиться сообщением


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

Совесть не даст спать, это верно!

Кстати о булочках - у меня на интерфейсах который в vlan'ах висят реально IP адреса для раздачи по DHCP, так что походу не получится сделать как вы предлагаете... На кройняк чем догрузить остальные ядра я найду - воткну еще одну сетевку и заставлю его трафик шейпить между делом - тоже вариант.

Поделиться сообщением


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

Кстати о булочках - у меня на интерфейсах который в vlan'ах висят реально IP адреса для раздачи по DHCP, так что походу не получится сделать как вы предлагаете...

Это почему же? :)

Поделиться сообщением


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

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

Допустим есть сейчас так:

 

/etc/network/interfaces

auto eth2.2
iface eth2.2 inet static
        address 10.0.2.2
        netmask 255.255.255.0

auto eth3.4
iface eth3.4 inet static
        address 10.0.3.2
        netmask 255.255.255.0

 

а чтобы сделать один vlan на 2 и 4 интерфейс получается надо сделать так?

 

auto eth2.2
iface eth2.2 inet static
        address 10.0.2.2
        netmask 255.255.255.0

auto eth3.2
iface eth3.2 inet static
        address 10.0.2.2
        netmask 255.255.255.0

iface eth2.4 inet static
        address 10.0.3.2
        netmask 255.255.255.0

auto eth3.4
iface eth3.2 inet static
        address 10.0.3.2
        netmask 255.255.255.0

 

При попытке поднять это добро ifup меня обругает же?

Поделиться сообщением


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

А для чего IP на обеих сетевках? На одной пусть будет, на второй уберите, для pppoe все равно что там стоит.

Поделиться сообщением


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

Типа того?

 

iface eth2.2 inet manual
      pre-up ifconfig $IFACE up
      post-down ifconfig $IFACE down

iface eth3.2 inet static
        address 10.0.2.2
        netmask 255.255.255.0
...

Поделиться сообщением


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

А для чего IP на обеих сетевках? На одной пусть будет, на второй уберите, для pppoe все равно что там стоит.

Именно. :)

Поделиться сообщением


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

Перекомпилил тут РРРоЕ с поддержкой кернел мода и такую картину наблюдаю - на той машине, на которой компилил - работает, на другой, где версия ядра старее - тоже работает, на другой версия ядра новее - не работает - нужно на ней самой компилить? Или в сторону ядра неправильно грешить?

Поделиться сообщением


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.