URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 74327
[ Назад ]

Исходное сообщение
"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"

Отправлено brag , 28-Май-07 16:16 
Здравствуйте!
Есть 2 машинки,одна duron 800mhz,512mb RAM DDR (x); вторая Celeron 2.53ghz, 512mb RAM DDR (root).
Поставил гигабитную сетку между ними, но скорость была где-то 20-25мбайт/с.
Начал рыть,выяснилось,что дело не в карточках и не в сетке,а в самой оси...
Замерил скорость dd+netcat:
root# nc -l 127.0.0.1 80>/dev/null
root# dd if=/dev/zero bs=256k count=8192 | nc 127.0.0.1 80
8192+0 records in
8192+0 records out
2147483648 bytes transferred in 55.636119 secs (38598732 bytes/sec)
при этом топ показывал:
CPU states:  7.5% user,  0.0% nice, 72.1% system, 20.4% interrupt,  0.0% idle
pf был вкючен,но без pf скорость поднималась не сильно,а по сетке даже падала...

Вот по сетке с pf-ом,только на одной машине - на сервере(celeron):
root# nc -l root 80
x# dd if=/dev/zero bs=256k count=2048 | nc root 80
2048+0 records in
2048+0 records out
536870912 bytes transferred in 23.798705 secs (22558829 bytes/sec)
TOP на root-e:
CPU states:  0.8% user,  0.0% nice,  1.9% system,  0.0% interrupt, 97.4% idle
TOP на x-е:
CPU states:  1.9% user,  0.0% nice, 63.8% system, 31.9% interrupt,  2.3% idle

Поменялись ролями:
x# nc -l x 80
root# dd if=/dev/zero bs=256k count=2048 | nc x 80
2048+0 records in
2048+0 records out
536870912 bytes transferred in 17.875630 secs (30033678 bytes/sec)


TOP на root-e:
CPU states:  5.6% user,  0.0% nice, 45.9% system,  0.0% interrupt, 48.5% idle
TOP на x-е:
CPU states:  2.7% user,  0.0% nice, 24.2% system, 49.6% interrupt, 23.4% idle

Вот такие пироги..
На root-е включен device-polling,потому и IRQ хавает мало, на x-е драйвер сетевухи не поддерживает polling (skc0: DGE-530T Gigabit Ethernet Adapter rev. (0x9))

Пробовал также тестить loopback на:
hw.model: Intel(R) Pentium(R) D CPU 2.80GHz hw.physmem: 2137337856
серверная мамка supermicro какая-то..
там другое дело,скорость по lo0 в раене 150mbyte/сек, уже приемлемо..

Можно ли как-то заставить tcp/ip FreeBSD работать на обычных десктоповых машинах так же быстро?
Пробовал это: http://www.opennet.me/docs/RUS/GigabitEthernet/ - не помогло...
Скорость сильно не зависит в лучшую сторону от правки буфферов..
все тесты проводились на FreeBSD 6.2-STABLE #0: Tue May 15 08:24:11 EEST 2007
Ядро GENERIC,но немного поправлен конфиг. с чистым GENERIC результаты примерно такие же

Пробовал на своей десктопке(root) NetBSD,там получилось 100myte/s по lo0,без всяких настроек. уже лучше.но мне NetBSD многими вещами не нравится.надо кучу времени убить,чтобы ее пропатчить..
Стоит ли дальше копать фряху или лучше пересесть на что-то другое?


Содержание

Сообщения в этом обсуждении
"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено DN , 28-Май-07 16:41 
>Есть 2 машинки,одна duron 800mhz,512mb RAM DDR (x); вторая Celeron 2.53ghz, 512mb
>RAM DDR (root).

>при этом топ показывал:
>CPU states:  7.5% user,  0.0% nice, 72.1% system, 20.4% interrupt,
> 0.0% idle

>TOP на x-е:
>CPU states:  1.9% user,  0.0% nice, 63.8% system, 31.9% interrupt,
> 2.3% idle

А кто столько прерываний отедает?

vmstat -i

Точно на skc0 указывает?

>Вот такие пироги..
>На root-е включен device-polling,потому и IRQ хавает мало, на x-е драйвер сетевухи
>не поддерживает polling (skc0: DGE-530T Gigabit Ethernet Adapter rev. (0x9))



"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено brag , 28-Май-07 17:34 
x# vmstat -i
interrupt                          total       rate
irq0: clk                         549909        998
irq1: atkbd0                           8          0
irq8: rtc                          70378        127
irq10: skc0 uhci1                 811545       1472
irq14: ata0                          782          1
irq15: ata1                           28          0
Точно skc0.. на usb там ничего не висит

root# vmstat -i
interrupt                          total       rate
irq1: atkbd0                       59691          3
irq12: psm0                       292590         17
irq14: ata0                           26          0
irq19: uhci1+                      20719          1
irq21: fwohci0                         1          0
irq23: uhci0 ehci0                155577          9
cpu0: timer                     33517132       1999
тут другая картина. сетевуха вобще не IRQ-кает :)

Надо рыть в сторону ядра, реализации tcp/ip...еще на gentoo попробовал, там было 250mbytes/s по lo0..жаль только,не по душе мне линух..:( хотя может и прийдется пересесть

ПС. Если не сложно, протестируйте у себя плз, кто может tcp по lo0 любыми средствами... Интересно, у одного ли меня такие тормоза :)

UDP тестил:
root# dd if=/dev/zero bs=256k count=4048 | nc -u x 80
4048+0 records in
4048+0 records out
1061158912 bytes transferred in 15.343951 secs (69158127 bytes/sec)
top:
CPU states: 10.2% user,  0.0% nice, 89.8% system,  0.0% interrupt,  0.0% idle
x# nc -lu x 80 > /dev/null
top:
CPU states:  0.8% user,  0.0% nice, 30.1% system, 62.2% interrupt,  6.9% idle

поменялись ролями:
root# nc -lu root 80 > /dev/null
top:
CPU states:  0.4% user,  0.0% nice,  0.8% system,  0.0% interrupt, 98.9% idle
x# dd if=/dev/zero bs=256k count=4048 | nc -u root 80
4048+0 records in
4048+0 records out
1061158912 bytes transferred in 32.969431 secs (32186146 bytes/sec)
top:
CPU states:  2.3% user,  0.0% nice, 78.5% system, 19.1% interrupt,  0.0% idle

Видно,что UDP хавает system отправителя, зато принимается безболезненно(с polling)


"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено DN , 28-Май-07 18:12 
>x# vmstat -i
>interrupt            
>          
>   total       rate
>
>irq0: clk          
>          
>   549909        
>998
>irq1: atkbd0          
>          
>     8      
>    0
>irq8: rtc          
>          
>    70378      
> 127
>irq10: skc0 uhci1          
>       811545    
>   1472
>irq14: ata0          
>          
>    782      
>   1
>irq15: ata1          
>          
>     28      
>    0
>Точно skc0.. на usb там ничего не висит

Была у меня одна материнская плата от Интел, так она по USB столько прерываний делала.
При этом к USB ничего подключено не было.

Попробуй запретить USB в BIOS , что покажет?


"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено brag , 28-Май-07 18:19 
interrupt                          total       rate
irq0: clk                         168603        991
irq1: atkbd0                         290          1
irq8: rtc                          21579        126
irq10: skc0                       314274       1848
irq14: ata0                          683          4
irq15: ata1                           28          0
Total                             505457       2973

примерно то же и те же скоростя


"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено Dmitry , 01-Июн-07 11:42 
hz.clockrate выставь в 1000. поллинг на сетевухе вруби.

"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено OnlySlon , 28-Май-07 19:11 
Все понятно в FreeBSD тормозит /dev/zero

точняк ;-)


"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено brag , 28-Май-07 19:26 
Ну как сказать... Не сильно,4.5гбайт/с .в линухе было вроде 10
root# dd if=/dev/zero bs=128k count=1m > /dev/null
1048576+0 records in
1048576+0 records out
137438953472 bytes transferred in 30.275685 secs (4539581950 bytes/sec)
TOP:
CPU states:  3.4% user,  0.0% nice, 96.2% system,  0.4% interrupt,  0.0% idle

Дело не в zero и не в dd или netcat-e,я и NFS тестил(наихудшие результаты), и ftp+wget(конкурирует с nc) и еще всякой байдой

Параллельно запускаь тоже пробовал.толку 0


"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено brag , 30-Май-07 15:10 
Что, ни у всех летает FreeBSD или все забили на тормоза?:)
Или гиговыми сетками не пользуемся? ;)
Уже кучу сайтов перерыл,ничего не нашлось...

"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено lavr , 30-Май-07 15:31 
>Что, ни у всех летает FreeBSD или все забили на тормоза?:)
>Или гиговыми сетками не пользуемся? ;)
>Уже кучу сайтов перерыл,ничего не нашлось...

Welcome to the freebsd maillist: freebsd-net + freebsd-stable:

http://groups.google.ru/group/mailing.freebsd.net/topics?lnk...
http://groups.google.ru/group/mailing.freebsd.stable/topics?...


"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено universite , 30-Май-07 16:06 
>Что, ни у всех летает FreeBSD или все забили на тормоза?:)
>Или гиговыми сетками не пользуемся? ;)
>Уже кучу сайтов перерыл,ничего не нашлось...

Проблема на стареньком компе, а точнее в скорости PCI шины :)
Аффтор, утчи матчасть :)


"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено brag , 01-Июн-07 00:28 
Я про lo0 говорю, при чем тут pci? И комп совсем не старый, celeron 2.53 socket 775.

Спасибо, почитаю;)


"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено brag , 01-Июн-07 11:29 
>Проблема на стареньком компе, а точнее в скорости PCI шины :)
>Аффтор, утчи матчасть :)


Сам хоть тестил,какая у тебя скорость? ;)


"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено Sergei , 06-Июн-07 18:14 
не уверен, что в тему, но всё же...
нашёл машинку с Дюроном 800МГц. Память - SDRAM, частоту не знаю.
Правда, линукс 2.6.21.3, а не бсд.
попробовал 3 теста:
1.
dd if=/dev/zero bs=1M count=100K of=/dev/null
107374182400 bytes (107 GB) copied, 4.59997 seconds, 23.3 GB/s
top:
Cpu(s):  3.0%us, 97.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
31463 root      25   0  2716 1552 1468 R 99.8  1.2   0:24.28 dd if /dev/zero bs 1M count 1000K

2.
dd if=/dev/zero bs=1M count=1M | cat > /dev/null
1073741824 bytes (1.1 GB) copied, 3.71993 seconds, 289 MB/s
top:
Cpu(s):  5.5%us, 94.5%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
31790 root      25   0  2716 1564 1480 R 54.4  1.2   0:10.30 dd if /dev/zero bs 1M count 1M
31791 root      18   0  1552  404  340 R 45.4  0.3   0:08.15 cat

3.
dd if=/dev/zero bs=1M count=1k | dd of=/dev/null
4294967296 bytes (4.3 GB) copied, 38.122 seconds, 113 MB/s
top:
Cpu(s): 20.0%us, 80.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
8150 root      18   0  2712 1560 1480 S 19.0  1.2   0:05.42 dd if /dev/zero bs 1M count 4k
8151 root      25   0  1676  524  436 R 80.8  0.4   0:19.97 dd of /dev/null

то есть: если копировать /dev/zero -> /dev/null одной dd - 23ГБ/с
если 1 dd читает и через pipe передаёт на cat - 289МБ/с
если 1 dd читает и через pipe передаёт другому dd - 113МБ/с

вот теперь думаю, в чём затык? как и что ещё можно померять? с nc пока не могу побаловаться... тут свои заморочки есть :(

>Замерил скорость dd+netcat:
>root# nc -l 127.0.0.1 80>/dev/null
>root# dd if=/dev/zero bs=256k count=8192 | nc 127.0.0.1 80
>2147483648 bytes transferred in 55.636119 secs (38598732 bytes/sec)
>при этом топ показывал:
>CPU states:  7.5% user,  0.0% nice, 72.1% system, 20.4% interrupt,
а почему при передаче через loopback у тебя по прерываниям идёт нагрузка?


"Быстродействие TCP/IP в FreeBSD(тормоза). как увеличить?"
Отправлено brag , 07-Июн-07 11:37 
Сапасибо;)
Правильно. к стати,дело не в пайпе,а в копировании даных с одного буффера в другой.
можешь передать так:
dd if=/dev/zero bs=128k count=1024M >/dev/null и скорость будет тоже 23G/s
В линухе оно довольно быстро и по loopback тоже довольно неплохо,а вот в BSD...
у меня на 2.6.хз_какой тоже скоростя по lo были ~250MB/s

Хз,почему прерывания нагружены. сабака порылась гдето-там..
дело не в щедулере - проверено. тредовые алгоритмы, файлы,пайпы таботают на ура,реще,чем в linux-2.6 по дефолту.
Сегодня еще затестю линк по raw-сокетам между 2мя тачками и через MAC минуя ARP(типа на прямую).

Вобще не охота похеривать BSD, поработал несколько дней в линухе, потом восстановил с дампа фрю, аж полегчало :)

Читал еще mail list-ы, там кроме манипуляции sysctl-ами ничего не.но оно ничего особого прироста скорости не дает, всего лишь на несколько мегабит