Перейти до

дрова Yandex


jack

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

Уровневая структура пакета, подразумевает инкапсуляцию данных.

В связи с этим, любое передающее устройство должно полностю подготовить пакет к транспорту на езернет уровне.

Никто не знает кто будет принимать пакет на другой стороне.

Поетому все должно быть предсказуемо, то есть согласно протокола.

 

Писюк, это один из приемников, который ОБЯЗАН, разбуть пакет чтобы обработать.

В зависимости от задачи, производится распаковывания пакета.

для тупого роута, а писюк можно настроить и так, разбувается только езернет уровень,

а скажем для прокси, он разбирается еще больше.

 

То есть это не есть вопрос.

 

Вот обратил внимание на такую инфу, карточка вроде деловская

http://torg.od.ua/index.php?productID=146

 

Что тут интересного не считая перечисления того что я ненашол в карточке?

Во!

Support caches up to 64 packets descriptors per queue

 

Двухголовая карточка...

Зачем ей кеш на 64 дескриптора?

Есть идеи?

 

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

Лично я ожидал, учитывая выше приведеную опцию, что разгон пойдет по технологии анализа заголовков, построения фабрики коммутации на базе сетевой карты,

и прямого управления регистрами этой фабрики коммутации.

И в таком случае кеш необходим, потому что пакет был скомутирован сетевой картой с порта в порт,

а дескриптор помещен а очередь для дальнейшей обработки процом.

По такой технологии работает цыска, да и все коммутаторы выше второго уровня.

 

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

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

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Уважаемый, а какую связь вы вообще углядели между _южными_ мостами и поддержкой нужных фич для pci-e?? Хватит смущать народ домыслами..

идея дров от яндекса была в том, чтобы распределить загрузку по ядрам, на картах 1000PT было несколько очередей, но их нельзя было повесить на разные прерывания/процессоры, драйвера от яндекса прогр

Не понял. http://www.tomshardware.com/reviews/southbridge-battle,1394-2.html http://www.tomshardware.com/reviews/intel-p45-chipset,1961-3.html   Я за пишу за матери в целом, а судя по реплике, вы

Posted Images

Уровневая структура пакета, подразумевает инкапсуляцию данных.

В связи с этим, любое передающее устройство должно полностю подготовить пакет к транспорту на езернет уровне.

Никто не знает кто будет принимать пакет на другой стороне.

Поетому все должно быть предсказуемо, то есть согласно протокола.

 

Писюк, это один из приемников, который ОБЯЗАН, разбуть пакет чтобы обработать.

В зависимости от задачи, производится распаковывания пакета.

для тупого роута, а писюк можно настроить и так, разбувается только езернет уровень,

а скажем для прокси, он разбирается еще больше.

 

То есть это не есть вопрос.

 

Вот обратил внимание на такую инфу, карточка вроде деловская

http://torg.od.ua/index.php?productID=146

 

Что тут интересного не считая перечисления того что я ненашол в карточке?

Во!

Support caches up to 64 packets descriptors per queue

 

Двухголовая карточка...

Зачем ей кеш на 64 дескриптора?

Есть идеи?

 

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

Лично я ожидал, учитывая выше приведеную опцию, что разгон пойдет по технологии анализа заголовков, построения фабрики коммутации на базе сетевой карты,

и прямого управления регистрами этой фабрики коммутации.

И в таком случае кеш необходим, потому что пакет был скомутирован сетевой картой с порта в порт,

а дескриптор помещен а очередь для дальнейшей обработки процом.

По такой технологии работает цыска, да и все коммутаторы выше второго уровня.

 

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

Какая фабрика коммутации, какие разгоны, зачем все это на сетевке?? Как-то вас из крайности в крайность кидает.. Есть сегодняшние вполне рабочие сетевые чипы, легко пропускающие положенные 1 или 10Г. Под linux и дрова совершенно стабильные и красивые, с bsd попозжее видимо тоже все красиво будет.

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

Какая фабрика коммутации, какие разгоны, зачем все это на сетевке?? Как-то вас из крайности в крайность кидает.. Есть сегодняшние вполне рабочие сетевые чипы, легко пропускающие положенные 1 или 10Г. Под linux и дрова совершенно стабильные и красивые, с bsd попозжее видимо тоже все красиво будет.

 

Меня интересует не сегодня, а завтра.

 

Сори если чем обидел.

Удачи.

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

Уровневая структура пакета, подразумевает инкапсуляцию данных.

В связи с этим, любое передающее устройство должно полностю подготовить пакет к транспорту на езернет уровне.

Никто не знает кто будет принимать пакет на другой стороне.

Поетому все должно быть предсказуемо, то есть согласно протокола.

свич этим не занимается.

 

для тупого роута, а писюк можно настроить и так, разбувается только езернет уровень,

а скажем для прокси, он разбирается еще больше.

причем тут прокси? вопрос идет о маршрутизации

 

Лично я ожидал, учитывая выше приведеную опцию, что разгон пойдет по технологии анализа заголовков, построения фабрики коммутации на базе сетевой карты,

и прямого управления регистрами этой фабрики коммутации.

И в таком случае кеш необходим, потому что пакет был скомутирован сетевой картой с порта в порт,

а дескриптор помещен а очередь для дальнейшей обработки процом.

По такой технологии работает цыска, да и все коммутаторы выше второго уровня.

есть такие сетевушки. только стоимость их на текущий момент порядка 1k$ за гиговый порт. вы готовы платить такие суммы?

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

Opteron 6100 and Xeon 5600 series have different memory controller architectures. For best performance, you have to populate DIMMs in groups of 8 on a 2-processsor Opteron 6100 series server, while you have to populate DIMMs in groups of 6 on a 2-processor Xeon 5600 series server.

 

I ran the test in this video with 8x2GB in the AMD server, and 6x4GB in the Intel. I re-ran the test with 8x4GB in the AMD server and got about the same result (33,900 MB/s on the AMD).

 

 

Вот такая сказка...

http://www.amd.com/us/products/server/processors/six-core-opteron/Pages/six-core-processors-with-amd-chipset.aspx

http://market.yandex.ua/model.xml?hid=91020&modelid=6325035

http://cgi.ebay.com/TYAN-S8812WGM3NR-AMD-SP5100-AMD-SR5690-DDR3-DIMM-/300516937042?pt=LH_DefaultDomain_0&hash=item45f8348d52

 

http://www.overclockers.ru/hardnews/36648/AMD_predstavlyaet_processory_Opteron_61xx.html

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

У меня freebsd 8.2 amd64 на core i5 4G ram, на этой машине были две сетевушки:

 

Mar  5 07:12:37 billing kernel: em0: <Intel(R) PRO/1000 Network Connection 7.1.9> port 0xdc00-0xdc1f mem 0xeffe0000-0xefffffff,0xeffc0000-0xeffdffff irq 16 at device 0.0 on pci3
Mar  5 07:12:37 billing kernel: em0: Using an MSI interrupt
Mar  5 07:12:37 billing kernel: em0: [FILTER]
...
Mar  5 07:12:37 billing kernel: em1: <Intel(R) PRO/1000 Legacy Network Connection 1.0.3> port 0xec00-0xec3f mem 0xf7fe0000-0xf7ffffff,0xf7fc0000-0xf7fdffff irq 16 at device 1.0 on pci5
Mar  5 07:12:37 billing kernel: em1: [FILTER]

 

накрутил net.isr и тд чтобы как-то разрулить нагрузку по ядрам. Разруливалось неплохо в принципе. Но потом появилась одна карточка ET dual port server adapter на два порта.

 

Выглядит так:

Mar 12 06:17:46 billing kernel: igb0: <Intel(R) PRO/1000 Network Connection version - 2.0.7> port 0xd880-0xd89f mem 0xf3da0000-0xf3dbffff,0xf3400000-0xf37fffff,0xf3dd8000-0xf3ddbfff irq 16 at device 0.0 on pci1
Mar 12 06:17:46 billing kernel: igb0: Using MSIX interrupts with 5 vectors
Mar 12 06:17:46 billing kernel: igb0: [iTHREAD]
Mar 12 06:17:46 billing last message repeated 4 times
Mar 12 06:17:46 billing kernel: igb0: Ethernet address: 00:1b:21:4a:4e:1c
Mar 12 06:17:46 billing kernel: igb1: <Intel(R) PRO/1000 Network Connection version - 2.0.7> port 0xdc00-0xdc1f mem 0xf3de0000-0xf3dfffff,0xf3800000-0xf3bfffff,0xf3ddc000-0xf3ddffff irq 17 at device 0.1 on pci1
Mar 12 06:17:46 billing kernel: igb1: Using MSIX interrupts with 5 vectors
Mar 12 06:17:46 billing kernel: igb1: [iTHREAD]
Mar 12 06:17:46 billing last message repeated 4 times

 

Не в пиковое время на igb0:

# netstat -w1 -h -I igb0
           input         (igb0)           output
  packets  errs idrops      bytes    packets  errs      bytes colls
      25K     0     0        21M        24K     0        16M     0
      24K     0     0        19M        24K     0        16M     0
      25K     0     0        21M        24K     0        15M     0
      25K     0     0        20M        24K     0        15M     0
      24K     0     0        20M        24K     0        16M     0
      25K     0     0        20M        24K     0        16M     0
      23K     0     0        19M        22K     0        14M     0
      25K     0     0        21M        23K     0        15M     0

 

top -SHP показывает:

last pid: 92551;  load averages:  0.25,  0.28,  0.21      up 2+15:13:04  22:13:17
153 processes: 5 running, 122 sleeping, 2 zombie, 24 waiting
CPU 0:  4.9% user,  0.0% nice,  0.0% system, 19.5% interrupt, 75.6% idle
CPU 1:  4.9% user,  0.0% nice,  1.2% system,  2.4% interrupt, 91.5% idle
CPU 2:  2.4% user,  0.0% nice,  1.2% system,  1.2% interrupt, 95.1% idle
CPU 3:  2.4% user,  0.0% nice,  3.7% system,  1.2% interrupt, 92.7% idle
Mem: 472M Active, 1108M Inact, 662M Wired, 572K Cache, 418M Buf, 1711M Free
Swap: 2048M Total, 2048M Free

 PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
  11 root     171 ki31     0K    64K CPU2    2  58.9H 97.56% {idle: cpu2}
  11 root     171 ki31     0K    64K RUN     3  59.1H 93.26% {idle: cpu3}
  11 root     171 ki31     0K    64K CPU1    1  58.7H 92.87% {idle: cpu1}
  11 root     171 ki31     0K    64K CPU0    0  51.7H 79.39% {idle: cpu0}
  12 root     -68    -     0K   384K WAIT    0 442:43 16.06% {irq261: igb1:que}
  12 root     -68    -     0K   384K WAIT    0 140:42  4.59% {irq256: igb0:que}
  12 root     -68    -     0K   384K WAIT    1 122:21  3.66% {irq257: igb0:que}
  12 root     -68    -     0K   384K WAIT    2 122:30  3.47% {irq258: igb0:que}
  12 root     -68    -     0K   384K WAIT    3 123:02  3.17% {irq259: igb0:que}
   0 root     -68    0     0K   224K -       1  30:16  0.49% {igb1 que}
   0 root     -68    0     0K   224K -       2  16:59  0.10% {igb0 que}
1594 root      76    0 65844K 28744K select  1   9:02  0.00% {mpd5}
   0 root     -68    0     0K   224K -       1   8:06  0.00% {dummynet}
 929 root      60    0 25784K 19888K select  0   5:16  0.00% zebra
  12 root     -32    -     0K   384K WAIT    2   5:05  0.00% {swi4: clock}
1664 root      44    0 26932K  7468K select  3   5:02  0.00% snmpd
1461 bind      44    0   140M   130M ucond   1   4:03  0.00% {named}
1461 bind      44    0   140M   130M ucond   2   4:03  0.00% {named}
1461 bind      44    0   140M   130M ucond   1   4:02  0.00% {named}
1461 bind      44    0   140M   130M ucond   1   4:02  0.00% {named}

 

Статистика по прерываниям:

# vmstat -i
interrupt                          total       rate
irq1: atkbd0                         375          0
irq0:                                  1          0
stray irq0                             1          0
irq21: atapci2+                  1731836          7
cpu0: timer                    455343656       2000
irq256: igb0:que 0            1723037558       7568
irq257: igb0:que 1             817785911       3591
irq258: igb0:que 2             816455836       3586
irq259: igb0:que 3             827039286       3632
irq260: igb0:link                      3          0
irq261: igb1:que 0            1955252087       8588
irq262: igb1:que 1              11240652         49
irq263: igb1:que 2              10827474         47
irq264: igb1:que 3              15654927         68
irq265: igb1:link                      4          0
cpu1: timer                    455343525       2000
cpu3: timer                    455343524       2000
cpu2: timer                    455343525       2000
Total                         8000400181      35140

 

На igb1 у меня локаль с юзерами - dhcp + pppoe.

 

Из отличий igb1 от em1: по графикам мртг при всем том же пропали ошибки, их было немного, но они были. Правда полета всего несколько дней, но на em1 ошибки были в первый же вечер активной нагрузки, в райное нескольких десятков ошибок. Это при ппс порядка 35 кппс. После установки dual port et визуально по графикам появились ппсы под 50кппс в первый же вечер. Раньше еле до 40кппс доходило в пики за многие месяцы. Но это субъективное мнение.

 

Не нравится на et dual port что второй порт, который раздает pppoe и dhcp не параллелится на все четыре ядра, а только на одном преимущественно. В то же время на выхлопе igb0 не идеально, но параллелится на четыре очереди и по сравнению с em0 (intel pt) все четыре очереди потребляют на этом же железе вроде даже больше %WCPU.

 

Вопросы: где почитать о том как подтюнить сетевушку чтобы нагрузка на портах лучше параллелилась?

 

з.ы. может кому-то что-то по et dual port интересно на фре 8.2 -- спрашивайте, стоит, работает -- могу еще чего рассказать.

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

Не в пиковое время на igb0:

# netstat -w1 -h -I igb0
           input         (igb0)           output
  packets  errs idrops      bytes    packets  errs      bytes colls
      25K     0     0        21M        24K     0        16M     0

это не нагрузка для этой карты

 

Статистика по прерываниям:

прерываний многовато.

добавьте в /boot/loader.conf

hw.igb.rxd=4096

hw.igb.txd=4096

hw.igb.enable_aim=0

hw.igb.low_latency=2000

hw.igb.ave_latency=4000

hw.igb.bulk_latency=8000

hw.igb.rx_process_limit=1000

hw.igb.fc_setting=0

станет чуть поменьше.

у меня на одном тазике в два раза больше трафика (читай пакетов), а прерываний 5-3-3-3к

 

Не нравится на et dual port что второй порт, который раздает pppoe и dhcp не параллелится на все четыре ядра, а только на одном преимущественно.

это фича. чип ET делит пакеты на очереди на основе IP заголовков пакетов, у PPPoE трафика данные заголовки отсутствуют.

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

прерываний многовато.

добавьте в /boot/loader.conf

hw.igb.rxd=4096

hw.igb.txd=4096

hw.igb.enable_aim=0

hw.igb.low_latency=2000

hw.igb.ave_latency=4000

hw.igb.bulk_latency=8000

hw.igb.rx_process_limit=1000

hw.igb.fc_setting=0

станет чуть поменьше.

у меня на одном тазике в два раза больше трафика (читай пакетов), а прерываний 5-3-3-3к

 

что для ET еще посоветуете подкрутить? или можно понаглеть, и увидеть конфиги?

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

что для ET еще посоветуете подкрутить? или можно понаглеть, и увидеть конфиги?

конкретно относящегося к igb больше ничего, собственно там больше крутить нечего. значения 1000-2000-4000-8000 выбраны эмпирическим путем, на наге где-то даже есть обсуждения и споры по поводу них, но работает)

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

Не в пиковое время на igb0:

# netstat -w1 -h -I igb0
           input         (igb0)           output
  packets  errs idrops      bytes    packets  errs      bytes colls
      25K     0     0        21M        24K     0        16M     0

это не нагрузка для этой карты

 

Дык знаю. :) Пока на том сервере в пики до 50кппс доходит, но лучше пусть серверок с запасом будет работать, чем на пределе. :lol:

 

Статистика по прерываниям:

прерываний многовато.

добавьте в /boot/loader.conf

hw.igb.rxd=4096

hw.igb.txd=4096

hw.igb.enable_aim=0

hw.igb.low_latency=2000

hw.igb.ave_latency=4000

hw.igb.bulk_latency=8000

hw.igb.rx_process_limit=1000

hw.igb.fc_setting=0

станет чуть поменьше.

у меня на одном тазике в два раза больше трафика (читай пакетов), а прерываний 5-3-3-3к

ok. сперва почитаю в if_igb.c об этом, потом решу добавлять или нет и сколько.

Спасибо.

А вот такой вопрос, sysctl -a не показывает в своем выводе hw.igb.rxd и кое-что еще, хочу понять, установка таки повлияет на что-то? Обычно то, что в loader.conf все показывает sysctl. Может этих переменных и нет в ядре и установка их ничего не изменит? ;)

 

Не нравится на et dual port что второй порт, который раздает pppoe и dhcp не параллелится на все четыре ядра, а только на одном преимущественно.

это фича. чип ET делит пакеты на очереди на основе IP заголовков пакетов, у PPPoE трафика данные заголовки отсутствуют.

ну я это и подозревал.

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

...

прерываний многовато.

добавьте в /boot/loader.conf

hw.igb.rxd=4096

hw.igb.txd=4096

hw.igb.enable_aim=0

hw.igb.low_latency=2000

hw.igb.ave_latency=4000

hw.igb.bulk_latency=8000

hw.igb.rx_process_limit=1000

hw.igb.fc_setting=0

станет чуть поменьше.

у меня на одном тазике в два раза больше трафика (читай пакетов), а прерываний 5-3-3-3к

..

А что за переменные:

hw.igb.low_latency=2000
hw.igb.ave_latency=4000
hw.igb.bulk_latency=8000

??? Я их в исходниках драйвера не нашел, в выводе sysctl -a тоже нет. Где о них почитать? :lol:

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

А что за переменные:

hw.igb.low_latency=2000
hw.igb.ave_latency=4000
hw.igb.bulk_latency=8000

??? Я их в исходниках драйвера не нашел, в выводе sysctl -a тоже нет. Где о них почитать? :lol:

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

 

Однако при указанных строчках имеем 5к прерываний.

включаем

sysctl dev.igb.0.enable_aim=1

 

и имеем 8-9к прерываний.

выключаем

 

sysctl dev.igb.0.enable_aim=0

 

и получаем вообще волшебство:

22092 igb0:que 0

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

Спасибо.

 

Поставил у себя на лету dev.igb.1.enable_aim=0 и dev.igb.0.enable_aim=0 и судя по top -SHP стало постепенно становится меньше нагрузки в WCPU. Ну то есть, {irq261: igb1:que} при значении 1 было больше 8%, а при значении 0 стало около 7%. В это время на igb1 была пппое нагрузка + dhcp в районе 18-22кппс.

 

Решил оставить = 0 и понаблюдать в пиковое время что будет.

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

прерываний многовато.

добавьте в /boot/loader.conf

hw.igb.rxd=4096

hw.igb.txd=4096

hw.igb.enable_aim=0

hw.igb.low_latency=2000

hw.igb.ave_latency=4000

hw.igb.bulk_latency=8000

hw.igb.rx_process_limit=1000

hw.igb.fc_setting=0

станет чуть поменьше.

у меня на одном тазике в два раза больше трафика (читай пакетов), а прерываний 5-3-3-3к

 

что для ET еще посоветуете подкрутить? или можно понаглеть, и увидеть конфиги?

 

man igb

В зависимости от версии драйвера, расписывает возможные регулировки, помещается в /boot/loader.conf

 

В /etc/sysctl.conf, помещаются общие настройки для системы

немного тут можно почитать

http://dadv.livejournal.com/49013.html

http://nix-sa.blogspot.com/2010/12/sysctl.html

 

Еще подсказку можно получить так

# sysctl -d dev.igb.0.enable_aim

dev.igb.0.enable_aim: Interrupt Moderation

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

надо не забывать только что у сысоева оптимизация больше под сервер приложений (веб), а не под роутер. тут скорее wawa надо пытать :lol:

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

На сайте Интела еще в феврале появились драйвера для igb версии 2.0.8, кто знает что в них нового? А-то на сайте и в архиве нету changelog-а. :lol: Может кто-то тут юзал уже в тестах их?

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

это фича. чип ET делит пакеты на очереди на основе IP заголовков пакетов, у PPPoE трафика данные заголовки отсутствуют.

а как жеш IPv6 ?

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

это фича. чип ET делит пакеты на очереди на основе IP заголовков пакетов, у PPPoE трафика данные заголовки отсутствуют.

а как жеш IPv6 ?

А он у вас в ОГОшном модеме используется?)

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

это фича. чип ET делит пакеты на очереди на основе IP заголовков пакетов, у PPPoE трафика данные заголовки отсутствуют.

а как жеш IPv6 ?

А он у вас в ОГОшном модеме используется?)

Да, используется! И вам рекомендую :):)

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

а как жеш IPv6 ?

это кстати вопрос интересный. можно попробовать задать интеловцам.

В даташите на боард заявлены все те же оффлоады/чексумы и RSS для IPv4/IPv6 TCP/UDP.

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

А MSI-X ? собственно

а вы мне объясните чем rss от msi-x по сути отличается?)

имхо в данном случае rss это как раз то, что распихивает пакеты в очереди msi-x

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

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

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

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

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

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

Вхід

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

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

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


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