Здравствуйте!
Есть 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 многими вещами не нравится.надо кучу времени убить,чтобы ее пропатчить..
Стоит ли дальше копать фряху или лучше пересесть на что-то другое?
>Есть 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))
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)
>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 , что покажет?
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примерно то же и те же скоростя
hz.clockrate выставь в 1000. поллинг на сетевухе вруби.
Все понятно в FreeBSD тормозит /dev/zeroточняк ;-)
Ну как сказать... Не сильно,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
Что, ни у всех летает FreeBSD или все забили на тормоза?:)
Или гиговыми сетками не пользуемся? ;)
Уже кучу сайтов перерыл,ничего не нашлось...
>Что, ни у всех летает 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?...
>Что, ни у всех летает FreeBSD или все забили на тормоза?:)
>Или гиговыми сетками не пользуемся? ;)
>Уже кучу сайтов перерыл,ничего не нашлось...Проблема на стареньком компе, а точнее в скорости PCI шины :)
Аффтор, утчи матчасть :)
Я про lo0 говорю, при чем тут pci? И комп совсем не старый, celeron 2.53 socket 775.Спасибо, почитаю;)
>Проблема на стареньком компе, а точнее в скорости PCI шины :)
>Аффтор, утчи матчасть :)
Сам хоть тестил,какая у тебя скорость? ;)
не уверен, что в тему, но всё же...
нашёл машинку с Дюроном 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 1000K2.
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 cat3.
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 у тебя по прерываниям идёт нагрузка?
Сапасибо;)
Правильно. к стати,дело не в пайпе,а в копировании даных с одного буффера в другой.
можешь передать так:
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-ами ничего не.но оно ничего особого прироста скорости не дает, всего лишь на несколько мегабит