Jump to content
Калькуляторы

Upgrade шейпера Упёрся в производительность сетевых :)

Всем доброго времени суток!

 

Имеется шейпер, обсуждаемый когда-то в этой теме: http://forum.nag.ru/forum/index.php?showtopic=49336

Платформа Intel sr1630bc на 2х xeon 5520. Установлена pro/1000 PT dual, em0 - к пограничнику, em1 в сеть.

Сервер занимается маршрутизацией - 0.0.0.0 в ядро по ospf, шейпингом и натингом :)

На данный момент нагрузка по сетевым приближается к 80%. По процессору - загружены на 50% только первые 7 из 16 виртуальных.

 

В ЧНН нагрузка чуть выше, чем приведённая

shaper-0 16:35:52 ~ # netstat -w1d
    205097     0  159597690     203601     0  160596994     0
    203944     0  159027946     202248     0  160017831     0
    206316     0  160121798     204564     0  161361380     0
    205305     0  159661574     203407     0  160274076     0
    203136     0  160762659     201302     0  159682926     0
    205133     0  160831585     202442     0  158285687     0
    204073     0  159997438     201657     0  157972303     0
    208393     0  162726945     205767     0  160343248     0
    205144     0  160977995     202836     0  158564620     0
    205161     0  161568061     202235     0  159337878     0
    207557     0  160559455     205161     0  158634721     0
    202014     0  159948872     199521     0  157821071     0
    202879     0  161294195     200446     0  160487068     0

Понятно, что необходимо или менять pro/1000 dual на pro/1000 quad, или использовать 2 встроенные в мать сетевые.

Сам склоняюсь к 1 варианту, ибо по спецификации одна из встроенных в мать сетевых вроде как подключена через pci шину.

 

2ой вопрос - это как быть с 4 новыми портами:

- оставаться на роутинге, не организовывая lagg интерфейсы, пытаясь роутинг оставить как есть.

- оставаться на роутинге, организовывая lagg (2 сетевые к пограничнику, 2 - в ядро)

- немного изменить дизайн и перейти на bridge'ывание 2х lagg интерфейсов (2 сетевые к пограничнику, 2 - в ядро). Ибо по противоречивым сведениями bridge производительнее маршрутизации.

 

Прошу совета, как лучше поступить, особенно с 4 имеющимися/новыми портами

Заранее спасибо.

Share this post


Link to post
Share on other sites

дык разнесите задачи по разным машинам

 

Share this post


Link to post
Share on other sites

пы.сы.

сколько трафика бегает через этот роутер?

тоесть сколько реальная полоса аплинка а не эти чудо-мега-цифры

 

Edited by Giga-Byte

Share this post


Link to post
Share on other sites
дык разнесите задачи по разным машинам
К сожалению, 2 машины это геморно и дороже, чем одна сетёвка на 4 порта. К тому-же роутер как мне кажется себя ещё далеко не исчепал.

 

пы.сы.

сколько трафика бегает через этот роутер?

тоесть сколько реальная полоса аплинка а не эти чудо-мега-цифры

800 Мбит/с входящего с интернета на шейпер прилетает.

Share this post


Link to post
Share on other sites
дык разнесите задачи по разным машинам
К сожалению, 2 машины это геморно и дороже, чем одна сетёвка на 4 порта. К тому-же роутер как мне кажется себя ещё далеко не исчепал.

думаю, стоит попробовать, но лучше разнести шейп от ната и смотреть где и в чём затык

 

пы.сы.

сколько трафика бегает через этот роутер?

тоесть сколько реальная полоса аплинка а не эти чудо-мега-цифры

800 Мбит/с входящего с интернета на шейпер прилетает.

такой трафик только на брасах, с rate-limit ng_car, поэтому ничего советовать не осмелюсь.

 

Share this post


Link to post
Share on other sites

А драйвера яндексовские? Можно увидеть top -aSH?

Share this post


Link to post
Share on other sites
А драйвера яндексовские? Можно увидеть top -aSH?
Да. Но трафика сейчас в 1.5 раза меньше, чем в ЧНН

Как видно, пол-компа просто простаивает :(

 

last pid: 53112;  load averages:  2.14,  1.91,  1.55   up 31+09:10:22  14:43:03
102 processes: 18 running, 71 sleeping, 13 waiting
CPU:  0.0% user,  0.0% nice,  7.4% system,  0.0% interrupt, 92.6% idle
Mem: 91M Active, 214M Inact, 497M Wired, 216K Cache, 208M Buf, 1119M Free
Swap:

  PID USERNAME PRI NICE   SIZE    RES STATE  C   TIME    CPU COMMAND
   11 root     171 ki31     0K    16K CPU14  e 746.9H 100.00% [idle: cpu14]
   12 root     171 ki31     0K    16K CPU13  d 746.7H 100.00% [idle: cpu13]
   15 root     171 ki31     0K    16K CPU10  a 744.6H 100.00% [idle: cpu10]
   16 root     171 ki31     0K    16K CPU9   9 744.1H 100.00% [idle: cpu9]
   18 root     171 ki31     0K    16K CPU7   7 740.4H 100.00% [idle: cpu7]
   25 root     171 ki31     0K    16K CPU0   0 639.4H 100.00% [idle: cpu0]
   14 root     171 ki31     0K    16K CPU11  b 745.3H 99.27% [idle: cpu11]
   10 root     171 ki31     0K    16K CPU15  f 747.5H 99.17% [idle: cpu15]
   17 root     171 ki31     0K    16K CPU8   8 743.3H 99.17% [idle: cpu8]
   13 root     171 ki31     0K    16K CPU12  c 746.7H 98.97% [idle: cpu12]
   20 root     171 ki31     0K    16K CPU5   5 671.1H 87.89% [idle: cpu5]
   19 root     171 ki31     0K    16K RUN    6 675.4H 86.38% [idle: cpu6]
   23 root     171 ki31     0K    16K RUN    2 663.8H 86.18% [idle: cpu2]
   24 root     171 ki31     0K    16K CPU1   1 664.5H 84.96% [idle: cpu1]
   22 root     171 ki31     0K    16K CPU3   3 669.1H 84.77% [idle: cpu3]
   21 root     171 ki31     0K    16K CPU4   4 667.4H 82.28% [idle: cpu4]
   59 root      43    -     0K    16K WAIT   1  83.7H 20.07% [em1_rx_kthread_0]
   60 root      43    -     0K    16K WAIT   2  79.7H 19.68% [em1_rx_kthread_1]
   64 root      43    -     0K    16K WAIT   5  78.1H 18.80% [em2_rx_kthread_1]
  232 root      43    -     0K    16K WAIT   3  80.0H 18.65% [em1_rx_kthread_2]
  219 root      43    -     0K    16K CPU6   6  72.9H 18.65% [em2_rx_kthread_2]
   63 root      43    -     0K    16K WAIT   4  78.0H 17.68% [em2_rx_kthread_0]
   27 root     -32    -     0K    16K WAIT   7 449:51  0.29% [swi4: clock]
   73 root     -68    -     0K    16K -      0 105.2H  0.00% [dummynet]
   58 root     -68    -     0K    16K WAIT   0 547:17  0.00% [em1_txcleaner]
   62 root     -68    -     0K    16K WAIT   0 483:55  0.00% [em2_txcleaner]
   40 root      44    -     0K    16K -      b  89:53  0.00% [yarrow]
   72 root       8    -     0K    16K pftm   3  68:16  0.00% [pfpurge]

 

Share this post


Link to post
Share on other sites

Ну если не принимать в расчёт отсутствие ЧНН, то всё выглядит весьма прилично.

Кстати, увеличение rx_kthreads вроде должно помочь разбросать обработку сетевух на ещё большее количество ядер.

 

P.S. Кстати, очень интересный документ у Интела нашёл, который помог мне лучше понять разницу между таймерами в яндексовских драйверах. Рекомендую к прочтению: Interrupt Moderation Using Intel GbE Controllers

Share this post


Link to post
Share on other sites
Ну если не принимать в расчёт отсутствие ЧНН, то всё выглядит весьма прилично.

Кстати, увеличение rx_kthreads вроде должно помочь разбросать обработку сетевух на ещё большее количество ядер.

 

P.S. Кстати, очень интересный документ у Интела нашёл, который помог мне лучше понять разницу между таймерами в яндексовских драйверах. Рекомендую к прочтению: Interrupt Moderation Using Intel GbE Controllers

:-) При 3х rx_kthreads, суммарная нагрузка на ядра процессоров получается меньше, чем при 4х. По крайней мере у меня.

 

Но изначально про высокую загрузку проца речи не шло. Она как-бы ещё терпит...

Я хотел узнать, как эффективнее перейти к 4 сетевым картам, есть ли смысл в бридже и агрегации каналов?

Share this post


Link to post
Share on other sites
Я хотел узнать, как эффективнее перейти к 4 сетевым картам, есть ли смысл в бридже и агрегации каналов?

смотря что на другой стороне кабеля и какой метод балансировки,

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

если это бордер и если свич не умеет балансировку по IP,

тогда от этой балансировки толку - ноль.

Share this post


Link to post
Share on other sites

С обоих сторон по одному маку, балансировать только по IP, если умеет свитч.

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

Попробовать PBR между двумя линками.

И почему не купить новые карточки третьего поколения от интел? Они, как написано, сделаны специально с расчетом на многопоточность.

Share this post


Link to post
Share on other sites
И почему не купить новые карточки третьего поколения от интел? Они, как написано, сделаны специально с расчетом на многопоточность.
Это какие?

 

Я хотел узнать, как эффективнее перейти к 4 сетевым картам, есть ли смысл в бридже и агрегации каналов?
А, ну тады не знаю :)

Lagg выглядит очень вкусным решением.

Share this post


Link to post
Share on other sites
И почему не купить новые карточки третьего поколения от интел? Они, как написано, сделаны специально с расчетом на многопоточность.
Это какие?

Это сетевые карты на чипе 82576, 82575 - igb(4)

Share this post


Link to post
Share on other sites
Это какие?
pro 1000ET наверное имелось ввиду, они драйвером igb вроде как обрабатываются, а там многопоточность прямо интелом заложена. Хотелось бы попробовать, да не продают такие в Украине, хоть отпишитесь кто что видел

 

Lagg выглядит очень вкусным решением.

Кстати, феерично недавно получилось:

 

ifconfig lagg0 create

ifconfig lagg0 laggproto lacp laggport em0 laggport em1

ifconfig vlan10 create

ifconfig vlan10 vlandev lagg0 vlan 10

 

и кернел паник, хорошо рядом с консолью был. Наткнулся на чей-то баг-репорт, фикс не проверял еще http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/132715

 

У меня 2 аплинка в разных вланах, в 2 карты сунул, в сторону дмз агрегировал еще 2 штуки - там вланов нет, получилось так:

 

last pid: 34793;  load averages:  0.48,  0.49,  0.49     
82 processes:  8 running, 63 sleeping, 11 waiting
CPU 0: 10.1% user,  0.0% nice,  3.1% system,  0.0% interrupt, 86.8% idle
CPU 1:  0.8% user,  0.0% nice, 12.4% system,  0.0% interrupt, 86.8% idle
CPU 2:  0.0% user,  0.0% nice, 18.6% system,  0.0% interrupt, 81.4% idle
CPU 3:  0.0% user,  0.0% nice,  7.8% system,  0.0% interrupt, 92.2% idle
Mem: 155M Active, 67M Inact, 143M Wired, 13M Buf, 1635M Free
Swap: 2048M Total, 2048M Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE  C   TIME    CPU COMMAND
   14 root        1 171 ki31     0K     8K RUN    0 582:20 100.00% idle: cpu0
   13 root        1 171 ki31     0K     8K RUN    1 545:26 86.47% idle: cpu1
   11 root        1 171 ki31     0K     8K CPU3   3 550:54 85.64% idle: cpu3
   12 root        1 171 ki31     0K     8K RUN    2 499:40 76.03% idle: cpu2
   26 root        1 -68    -     0K     8K -      1  56:47 13.77% em3 taskq
   23 root        1 -68    -     0K     8K -      2  60:20 13.57% em0 taskq
   24 root        1 -68    -     0K     8K -      3  51:59 13.38% em1 taskq
   27 root        1 -68    -     0K     8K CPU2   2  53:48 12.55% em4 taskq
  947 root        1  44    0   125M   124M CPU0   0   5:12  0.83% bgpd

ifconfig lagg1
lagg1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
    ether 00:15:17:71:f8:7a
    inet xxxx netmask 0xffffffe0 bro xxxxxx
    media: Ethernet autoselect
    status: active
    laggproto roundrobin
    laggport: em4 flags=4<ACTIVE>
    laggport: em3 flags=4<ACTIVE>



border# netstat -I lagg1 -w 1
            input        (lagg1)           output
   packets  errs      bytes    packets  errs      bytes colls
     72836     0   25344923      80540     0   73951096     0
     72438     0   25264213      80369     0   74061459     0
     74999     0   26506346      84047     0   76605787     0
     75883     0   27840548      84385     0   76440572     0
     74097     0   27157256      80127     0   72321352     0
     72232     0   26491817      77793     0   71186034     0
     70999     0   25945059      77995     0   70754759     0
     72832     0   25415901      80794     0   73561824     0
     74533     0   26371727      82640     0   76900177     0
     73662     0   26639467      81296     0   73997402     0
     72263     0   26119675      79246     0   71443311     0

 

 

Share this post


Link to post
Share on other sites

make.kernel,

а на другом конце линка какая железка?

Share this post


Link to post
Share on other sites

Длинк смартовая гигабитная мыльница, аж стыдно, из разряда "отключили flow control и забыли ip", со стороны свича ничего не делал. Почему работает - не знаю, но работает вот так:

 

border# netstat -I lagg1 -w 1
            input        (lagg1)           output
   packets  errs      bytes    packets  errs      bytes colls
     63562     0   23912904      70022     0   67833331     0
     63110     0   23919037      68475     0   66978633     0
     61044     0   24316779      65340     0   62239073     0
     64300     0   24270941      68831     0   66591418     0
^C
border# netstat -I em3 -w 1
            input          (em3)           output
   packets  errs      bytes    packets  errs      bytes colls
     32406     0   12209755      33825     0   32840111     0
     30426     0   11629989      33868     0   32491273     0
     30640     0   11398538      34272     0   33120692     0
^C
border# netstat -I em4 -w 1
            input          (em4)           output
   packets  errs      bytes    packets  errs      bytes colls
     30723     0   11314771      34520     0   33498133     0
     31673     0   11935815      33908     0   32706036     0
     29735     0   11471434      33722     0   31528786     0
     31940     0   12385549      34928     0   33256339     0
^C
border#

 

ЧНН 110 кппс, нагрузка на ядра 20-25% на каждое, при росте трафика соотношение 50х50 на карточках сохраняется, больше гигабита не гонял. Теоретически оно работать НЕ должно без поддержки со стороны свича, скажу спасибо, если кто-то расскажет почему работает.

 

Кто всетаки пробовал 1000ЕТ под бсд отпишитесь, а? Выглядит вкусно, если под сильный заказ - привезут через месяц, а смысл в них есть? А, да, em3 и 4 в одной 1000РТ драйвер последний с сайта интела.

Edited by make.kernel

Share this post


Link to post
Share on other sites
ЧНН 110 кппс, нагрузка на ядра 20-25% на каждое, при росте трафика соотношение 50х50 на карточках сохраняется
Интересно roundrobin работает...

попробую на кошке грохнуть Port-Channel и нагрузить с roundrobin.

Share this post


Link to post
Share on other sites
Интересно roundrobin работает...

попробую на кошке грохнуть Port-Channel и нагрузить с roundrobin.

Пакеты местами в потоке меняться будут, у меня раундробин из-за iq ссвича, вернее его отсутствия.

Share this post


Link to post
Share on other sites
Кто всетаки пробовал 1000ЕТ под бсд отпишитесь, а? Выглядит вкусно, если под сильный заказ - привезут через месяц, а смысл в них есть? А, да, em3 и 4 в одной 1000РТ драйвер последний с сайта интела.
Я пробовал - где-то уже писал тут.

На бридже разница между em и igb на глаз не различима. Шейпим дамминетом порядка 600-700 Мегабит/с.

Share this post


Link to post
Share on other sites
Длинк смартовая гигабитная мыльница, аж стыдно, из разряда "отключили flow control и забыли ip", со стороны свича ничего не делал. Почему работает - не знаю, но работает вот так:

 

border# netstat -I lagg1 -w 1
            input        (lagg1)           output
   packets  errs      bytes    packets  errs      bytes colls
     63562     0   23912904      70022     0   67833331     0
     63110     0   23919037      68475     0   66978633     0
     61044     0   24316779      65340     0   62239073     0
     64300     0   24270941      68831     0   66591418     0
^C
border# netstat -I em3 -w 1
            input          (em3)           output
   packets  errs      bytes    packets  errs      bytes colls
     32406     0   12209755      33825     0   32840111     0
     30426     0   11629989      33868     0   32491273     0
     30640     0   11398538      34272     0   33120692     0
^C
border# netstat -I em4 -w 1
            input          (em4)           output
   packets  errs      bytes    packets  errs      bytes colls
     30723     0   11314771      34520     0   33498133     0
     31673     0   11935815      33908     0   32706036     0
     29735     0   11471434      33722     0   31528786     0
     31940     0   12385549      34928     0   33256339     0
^C
border#

 

ЧНН 110 кппс, нагрузка на ядра 20-25% на каждое, при росте трафика соотношение 50х50 на карточках сохраняется, больше гигабита не гонял. Теоретически оно работать НЕ должно без поддержки со стороны свича, скажу спасибо, если кто-то расскажет почему работает.

 

Кто всетаки пробовал 1000ЕТ под бсд отпишитесь, а? Выглядит вкусно, если под сильный заказ - привезут через месяц, а смысл в них есть? А, да, em3 и 4 в одной 1000РТ драйвер последний с сайта интела.

Я заказал новую машинку, должны на той недели привезти. Core 7+Dual ET, сделаю обширные тесты разумеется.

Share this post


Link to post
Share on other sites
pro 1000ET наверное имелось ввиду, они драйвером igb вроде как обрабатываются, а там многопоточность прямо интелом заложена. Хотелось бы попробовать, да не продают такие в Украине, хоть отпишитесь кто что видел
есть в Украине такие:

Intel 82575EB - это Supermicro на Intel-овском чипсете

Supermicro Dual Port Gigabit Ethernet Adapter 2 ports 10/100/1000 Base-T, Gigabit Ethernet, PCI-E x4 (Gen 2), Intel 82575EB, PXE, iSCSI boot, VMDq, Windows, Linux, VMWare, FreeBSD, Netware, full size and LP brackets

~150$

Share this post


Link to post
Share on other sites

Нашли мне в Киеве интеловую E1G42ET на 576м, жду на тест.

Share this post


Link to post
Share on other sites
Нашли мне в Киеве интеловую E1G42ET на 576м, жду на тест.

На днях собрали сервер на Core i7 + E1G42ET в роли роутера.

В итоге клиенты получают по 15кб/с при закачке на сессию. Дрова собрали последнии 1.8.4.

Случаем никто ли с таким не сталкивался?

 

dev.igb.0.%desc: Intel® PRO/1000 Network Connection version - 1.8.4

dev.igb.0.%driver: igb

 

Share this post


Link to post
Share on other sites
pro 1000ET наверное имелось ввиду, они драйвером igb вроде как обрабатываются, а там многопоточность прямо интелом заложена. Хотелось бы попробовать, да не продают такие в Украине, хоть отпишитесь кто что видел
есть в Украине такие:

Intel 82575EB - это Supermicro на Intel-овском чипсете

Supermicro Dual Port Gigabit Ethernet Adapter 2 ports 10/100/1000 Base-T, Gigabit Ethernet, PCI-E x4 (Gen 2), Intel 82575EB, PXE, iSCSI boot, VMDq, Windows, Linux, VMWare, FreeBSD, Netware, full size and LP brackets

~150$

E1G42ET стоит 170 баксов. Но это не Supermicro, а Intel :). У Supermicro один существенный недостаток - у них элементы в другую сторону торчат :). В результате - не всегда нормально влазит в корпус.

 

Кстати, в свое время (месяца два-три назад) без проблем купил в Украине две E1G42ET. ЧЯДНТ? :)

Edited by Abram

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this