Jump to content

µTorrent µTP


kokaracha

Recommended Posts

да това го четош, но въпроса ми е да няма и странични ефекти ...

Тествай и ще видиш. "Разхвърляй" прекъсванията на мрежовите карти. Може дори да пробваш и iptables да го бинд-неш само към едно от ядрата.

Така е наистина,polling-а сваля натоварването и прекъсванията но пък внася задръжки,което при много пакети пак не е добре.

Естествено всяко нещо си има своите плюсове и минуси. Зависи от това по колко пакета да взема на poll, колко пъти да poll ва за секунда и др...

Тези неща не ги гoворя от опит(няма къде да го реализирам и тествам аз) а ще е интересно. Просто съм чел от хора споделяли опит в тази насока.

Даже бе писано някъде за модифицирани BSD-та които пак poll-ват, дето въртят по 1mpps на 7 gbps с 50 % idle на ядро на quad-core. Предоплагам е чисто рутиране само без допълнителни сървиси, но пак е много добър резултат.

Проблема главно е бил в това, че се заключва преди да почне poll-ването на картите и то линейно, като друг процес неможе да ги poll-не.

Вече поне във FreBSD 8 е имплементирано (smp affinity) и може да се указва коя карта към кое ядро да се биндне, което предполагам оптимизира още нещата.

Има и една друга фунционалност още във FreeBSD 5,  IP Fast Forward(доста интересно решение), което не съм запознат дали го има в линукс.

Друго което е свързано с перформънса е, дали мрежовите контролери са на северния мост или на южния. Т.е. зависи от реализацията на дъното.

Та извода на всичко това е че има много фактори влиаещи...

Адрес на коментара
Сподели в други сайтове

  • Отговори 67
  • Created
  • Последен отговор

Top Posters In This Topic

  • kokaracha

    18

  • Mile

    12

  • byte

    9

  • NetworkPro

    8

Ми те дъната са ясни от много време. Чипсет 3200-3210, bcm 5721 или pro1000. Предполагам всички са с такива. Тя разликата чисто рутиране и шейпене, Н брой влани, бриджове, imq-та и прочие. Машинка с чисто рутиране при мен 500mbps с 2 broadcom-a, PentiumD 945 на 3400мхз спеше на 10-15% лоад. С шейпенето, локала и прочие лайна quad 9550 е на 80%-тина със същите карти. То ясно, че може да се оптимизира до безкрай всичко (правилото за мъртвия кон), но идва един момент да се вземе по-силно животно, второ или бог знае какво. Аз като се гледам инвестирам смело в собствената си глупост да троша пари и да се надявам да не пуснат по udp на малки пакети още нещо. Те хората си пишат, променят.. За isp-то остава да ъпгрейдва, оптимизира, да гледа графики споменавайки майките на домашните юзери чудейки се какво толкова намериха да споделят, след като "Война и мир" е 600кб с форматирането те какво по-добро са измислили да споделят със света, че да не им стигат на 900 юзера 100k pps :)

Адрес на коментара
Сподели в други сайтове

Ми те дъната са ясни от много време. Чипсет 3200-3210, bcm 5721 или pro1000. Предполагам всички са с такива. Тя разликата чисто рутиране и шейпене, Н брой влани, бриджове, imq-та и прочие. Машинка с чисто рутиране при мен 500mbps с 2 broadcom-a, PentiumD 945 на 3400мхз спеше на 10-15% лоад. С шейпенето, локала и прочие лайна quad 9550 е на 80%-тина със същите карти. То ясно, че може да се оптимизира до безкрай всичко (правилото за мъртвия кон), но идва един момент да се вземе по-силно животно, второ или бог знае какво. Аз като се гледам инвестирам смело в собствената си глупост да троша пари и да се надявам да не пуснат по udp на малки пакети още нещо. Те хората си пишат, променят.. За isp-то остава да ъпгрейдва, оптимизира, да гледа графики споменавайки майките на домашните юзери чудейки се какво толкова намериха да споделят, след като "Война и мир" е 600кб с форматирането те какво по-добро са измислили да споделят със света, че да не им стигат на 900 юзера 100k pps :)

Прав си Миле, все пак говориш от опит, което е по близо до реалност от теория.

М/у другото гледах блок схемата на Supermicro x7sbi-ln4 точно мрежовите контролери са на южния мост, а трябва да е обратното. Примерно Intel S5000P серията има 2 x PCI Express x8 на северния мост.

Адрес на коментара
Сподели в други сайтове

  • Администратор

Тествай и ще видиш. "Разхвърляй" прекъсванията на мрежовите карти. Може дори да пробваш и iptables да го бинд-неш само към едно от ядрата.

Естествено всяко нещо си има своите плюсове и минуси. Зависи от това по колко пакета да взема на poll, колко пъти да poll ва за секунда и др...

Тези неща не ги гoворя от опит(няма къде да го реализирам и тествам аз) а ще е интересно. Просто съм чел от хора споделяли опит в тази насока.

Даже бе писано някъде за модифицирани BSD-та които пак poll-ват, дето въртят по 1mpps на 7 gbps с 50 % idle на ядро на quad-core. Предоплагам е чисто рутиране само без допълнителни сървиси, но пак е много добър резултат.

Проблема главно е бил в това, че се заключва преди да почне poll-ването на картите и то линейно, като друг процес неможе да ги poll-не.

Вече поне във FreBSD 8 е имплементирано (smp affinity) и може да се указва коя карта към кое ядро да се биндне, което предполагам оптимизира още нещата.

Има и една друга фунционалност още във FreeBSD 5,  IP Fast Forward(доста интересно решение), което не съм запознат дали го има в линукс.

Друго което е свързано с перформънса е, дали мрежовите контролери са на северния мост или на южния. Т.е. зависи от реализацията на дъното.

Та извода на всичко това е че има много фактори влиаещи...

Аз ползвам 8-ци и 7-ци  за бордери,на сравнително вече стари кошници.Всичко което си го написал е така,исках само да кажа че се усеща леко в задржката но не е фатално.При мен се вдигана 1 мс  на 300мбпс което не е нищо  за пeнтиум дyалкор на 4гхз,с карти броудкомки чипсет bcm5721. Cpuset-a не сам пипал щото не не се налага товара е под 5% без шеип и около 20% с шеип с 4,5К динамични правила.

Кернела ми е компилиран с device polling/hz=1000  и ipfw/dummynet

При мен сисцтла е така5


kern.polling.enable=1

kern.polling.burst_max=1000

kern.polling.each_burst=50

kern.polling.user_frac=50

net.inet.ip.fastforwarding=1

net.inet.ip.portrange.randomized=0

net.inet.ip.dummynet.hash_size=512

net.inet.ip.dummynet.io_fast=1



Use since

OpenBSD 3.x

FreeBSD 4.x

Centos 5.x Debian 3.x Ubuntu 7.x

Аз съм фен на OpenWRT.

 

Горчивината от лошото качество остава дълго след като е преминало удоволствието от ниската цена.

_____________________________

___|____|____|____|____|____|__

_|____|____|____|____|____|____

___|____|_ Удряй _|____|____|__

_|____|___ главата ___|____|____

___|____|_ си тук!! |____|____|__

_|____|____|____|____|____|____

___|____|____|____|____|____|__

Адрес на коментара
Сподели в други сайтове

  • Администратор

Чипсет 3200-3210, bcm 5721 ,pro1000 не са ли вече малко остарели.

Виж за новото pro/10ge lr/sr по добре.

Use since

OpenBSD 3.x

FreeBSD 4.x

Centos 5.x Debian 3.x Ubuntu 7.x

Аз съм фен на OpenWRT.

 

Горчивината от лошото качество остава дълго след като е преминало удоволствието от ниската цена.

_____________________________

___|____|____|____|____|____|__

_|____|____|____|____|____|____

___|____|_ Удряй _|____|____|__

_|____|___ главата ___|____|____

___|____|_ си тук!! |____|____|__

_|____|____|____|____|____|____

___|____|____|____|____|____|__

Адрес на коментара
Сподели в други сайтове

Кернела ми е компилиран с device polling/hz=1000  и ipfw/dummynet

При мен сисцтла е така5


kern.polling.enable=1

kern.polling.burst_max=1000

kern.polling.each_burst=50

kern.polling.user_frac=50

net.inet.ip.fastforwarding=1

net.inet.ip.portrange.randomized=0

net.inet.ip.dummynet.hash_size=512

net.inet.ip.dummynet.io_fast=1



В мейл листите на Freebsd препоръчват polling да се сетва през ifconfig(ifconfig em0 polling), не през sysctl променливата.

Ето сравнителни тестове(вярно от преди доста време, но пак е база за сравнение) http://taosecurity.blogspot.com/2006/09/freebsd-device-polling.html

Адрес на коментара
Сподели в други сайтове

Чипсет 3200-3210, bcm 5721 ,pro1000 не са ли вече малко остарели.

Виж за новото pro/10ge lr/sr по добре.

Не се изплаща за нашия размер (като isp). Купуването им "за във времето" не е оправдано без оптика до нас. Би ми било интересно някой ако ползва да сподели как е, но не бих дал пари да тествам аз :)

Адрес на коментара
Сподели в други сайтове

И в крайна сметка някой ползва ли smp affinity под Linux и получавали нужните резултати

иначе Linux-a го ползвам за рутер, vlan-i, shaper, imq и т.н.

товар към 100-150Мбит-а pps 20000

hard стара щайга:

HP ProLiant DL360 G3 Dual Xeon 2.8 GHz 1U ServerDual NC7781 PCI-X Gigabit Ethernet NICs - driver Broadcom Tigon3

Адрес на коментара
Сподели в други сайтове

Ползва се, работи, силно препоръчително е даже, да не кажа задължително. :

          CPU0                  CPU1

  0:        70                      0  IO-APIC-edge      timer

  1:          2                        0  IO-APIC-edge      i8042

  2:          0                        0    XT-PIC-XT        cascade

14:          0                      0  IO-APIC-edge      ide0

15:          0                      0  IO-APIC-edge      ide1

16: 1971946639              0  IO-APIC-fasteoi  uhci_hcd:usb5, eth0

17:        467        1236315100  IO-APIC-fasteoi  eth1

18:          0                      0  IO-APIC-fasteoi  uhci_hcd:usb4

19:  12999319                1  IO-APIC-fasteoi  ata_piix, uhci_hcd:usb3

23:          0                      0  IO-APIC-fasteoi  ehci_hcd:usb1, uhci_hcd:usb2

NMI:          0                      0  Non-maskable interrupts

LOC: 2408860747    2408860691  Local timer interrupts

RES:    218449                125831  Rescheduling interrupts

CAL:      1406                      1641  function call interrupts

TLB:    706887                956898  TLB shootdowns

TRM:          0                            0  Thermal event interrupts

SPU:          0                            0  Spurious interrupts

ERR:          0

MIS:          0

Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 63.3%id,  0.0%wa,  7.3%hi, 29.2%si,  0.0%st

това при: IN 152.8Mbps / 40.4kpps и OUT 150.6Mbps / 39.4kpps

Доволно старо желязо SUPERMICRO:

processor      : 0

vendor_id      : GenuineIntel

cpu family      : 6

model          : 15

model name      : Intel® Xeon® CPU            3040  @ 1.86GHz

stepping        : 2

cpu MHz        : 1861.993

cache size      : 2048 KB

картите са pro1000, вградените на дъното.

работят: BGPd+zebra - вътрешно, шейпър елементарен, файъруол елементарен, 30vpn тунела за училища и... ба ли го, сигурно има още нещо

Адрес на коментара
Сподели в други сайтове

И аз да кажа че е задължително (при трафик над 300-400мбит)

root@gw:~# cat /proc/interrupts

          CPU0      CPU1      CPU2      CPU3

  0:        124          0          0          0  IO-APIC-edge      timer

  1:          2          2          2          2  IO-APIC-edge      i8042

  9:          0          0          0          0  IO-APIC-fasteoi  acpi

12:        29        28        28        29  IO-APIC-edge      i8042

14:          0          0          0          0  IO-APIC-edge      ide0

15:          0          0          0          0  IO-APIC-edge      ide1

216: 2057265928 2051916226 2044687402 2045760842  PCI-MSI-edge      eth1

217: 1686990078 1687156004 1720860977 1717298118  PCI-MSI-edge      eth3

218: 1725793294 1728639946 1699921232 1696154869  PCI-MSI-edge      eth2

219: 1581657990 1584588469 1586029330 1591379806  PCI-MSI-edge      eth0

220:      29204      29296      29095      29087  PCI-MSI-edge      ahci

Адрес на коментара
Сподели в други сайтове

мдам, това е другия вариант - не всяка мрежарка на отделно core, а всички мрежарки на всички ядра/цпу-та.

Лошото е, че не всеки път ми се получава... особено с по-новите дъна, незнам защо

Адрес на коментара
Сподели в други сайтове

Има една тъпа работа която наблюдавам, ако имаш две физически цпу-та, не е добре да сложиш дадена карта и върху двете. Почват странни лагове и т.н.

Някъде четох, че се губи много време за работа на един драйвер с два отделни Л2/Л3 кеша.

Адрес на коментара
Сподели в други сайтове

Ето и резултат след прехвърляне на прекъсванията на отделни cpu-ta

cpu1s.png

echo 2 > /proc/irq/29/smp_affinity # bind CPU1 eth0

echo 4 > /proc/irq/30/smp_affinity # bind CPU2 eth1

в момента:

<pre>

          CPU0      CPU1      CPU2      CPU3

  0:        45          0          0          0  IO-APIC-edge      timer

  1:      1505          0          0          0  IO-APIC-edge      i8042

  8:          2          0          0          0  IO-APIC-edge      rtc0

  9:          0          0          0          0  IO-APIC-fasteoi  acpi

10:          0          0          0          0  IO-APIC-fasteoi  ohci_hcd:usb1

12:        114          0          0          0  IO-APIC-edge      i8042

14:        95          0          0          0  IO-APIC-edge      ide0

15:          0          0          0          0  IO-APIC-edge      ide1

29: 1983396804  29287258          0      25372  IO-APIC-fasteoi  eth1

30: 2801574107          0  113328335    573108  IO-APIC-fasteoi  eth0

31:  32693085          0          0          0  IO-APIC-fasteoi  cciss0

NMI:          0          0          0          0  Non-maskable interrupts

LOC: 3857238347  702568723  425641319  615633502  Local timer interrupts

RES:  15992182  24964226  19574436  21590346  Rescheduling interrupts

CAL:        433        747        767        810  Function call interrupts

TLB:    2958454    3045568    2891653    3829800  TLB shootdowns

TRM:          0          0          0          0  Thermal event interrupts

SPU:          0          0          0          0  Spurious interrupts

ERR:          0

MIS:          0

</pre>

Адрес на коментара
Сподели в други сайтове

  • Администратор

utp

post-100-130900726047_thumb.jpg

Use since

OpenBSD 3.x

FreeBSD 4.x

Centos 5.x Debian 3.x Ubuntu 7.x

Аз съм фен на OpenWRT.

 

Горчивината от лошото качество остава дълго след като е преминало удоволствието от ниската цена.

_____________________________

___|____|____|____|____|____|__

_|____|____|____|____|____|____

___|____|_ Удряй _|____|____|__

_|____|___ главата ___|____|____

___|____|_ си тук!! |____|____|__

_|____|____|____|____|____|____

___|____|____|____|____|____|__

Адрес на коментара
Сподели в други сайтове

  • Администратор

Ето и резултат след прехвърляне на прекъсванията на отделни cpu-ta

echo 2 > /proc/irq/29/smp_affinity # bind CPU1 eth0

echo 4 > /proc/irq/30/smp_affinity # bind CPU2 eth1

Тодоре разликата ще се личи повече ако беше постнал картинка какво е и натоварването вечерта.

Не отговарям на постове написани с шльокавица!

Адрес на коментара
Сподели в други сайтове

Създайте нов акаунт или се впишете, за да коментирате

За да коментирате, трябва да имате регистрация

Създайте акаунт

Присъединете се към нашата общност. Регистрацията става бързо!

Регистрация на нов акаунт

Вход

Имате акаунт? Впишете се оттук.

Вписване
  • Потребители разглеждащи страницата   0 потребители

    • No registered users viewing this page.

×
×
  • Създай нов...

Important Information

By using this site, you agree to our Terms of Use.