Есть маршрутизатор(не один но все идентично) построенный на freebsd 8.Две сетевые карты - Intel Pro/1000 GT Desktop Adapter. Серверная материнка Asus с процессором Intel Quad.
Проблема в том что через сервер не проходит сумарно более 450Мбит хотя при этом он не загружен.
Далее выкладываю системную инфу.
ifconfig
-------------------------------
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
ether 00:1b:21:1c:46:ed
inet 9.9.9.9 netmask 0xffffff00 broadcast 9.9.9.255
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
ether 00:1b:21:1c:46:97
inet 10.0.0.9 netmask 0xff000000 broadcast 10.255.255.255
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
правки в sysctlnet.graph.recvspace=512000
net.graph.maxdgram=512000и в rc.d
sysctl net.inet.tcp.ecn.enable=1
sysctl kern.ipc.maxsockbuf=23554432
sysctl kern.ipc.somaxconn=2024
sysctl kern.ipc.nmbclusters=624288
sysctl kern.ipc.maxsockets=524288
sysctl net.local.inflight=0
sysctl net.inet.udp.checksum=0
sysctl net.inet.udp.maxdgram=331072
sysctl net.inet.udp.recvspace=222080
sysctl net.inet.ip.fw.dyn_udp_lifetime=5
sysctl net.inet.ip.fastforwarding=0
sysctl net.local.stream.recvspace=125535
sysctl net.local.stream.sendspace=125535
sysctl net.local.dgram.recvspace=125535
sysctl net.local.dgram.maxdgram=125535
sysctl kern.smp.active=4sysctl net.inet.ip.fw.dyn_max=50000
Добавлено в ядроoptions NO_ADAPTIVE_MUTEXES ## Improve routing performance?
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=5000
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options LIBALIAS
options NETGRAPH
options NETGRAPH_ETHER
options NETGRAPH_NETFLOW
options NETGRAPH_TEE
options NETGRAPH_CAR
options NETGRAPH_IPFW
loader.conf
---------------------------------if_em_load="YES" - для загрузки 6.9.21, в ядре em закомментировано
net.isr.maxthreads=4
net.isr.numthreads=4
net.isr.bindthreads=0
net.isr.direct=1
net.isr.direct_force=1
hw.em.rxd=4096
hw.em.txd=4096
net.isr.defaultqlimit=4096
net.isr.maxqlimit=10000
net.inet.tcp.syncache.hashsize=2048
net.inet.tcp.syncache.bucketlimit=100
net.inet.tcp.hostcache.hashsize=16384
net.inet.tcp.hostcache.bucketlimit=100
net.inet.tcp.tcbhashsize=4096net.inet.ip.intr_queue_maxlen=10000
net.route.netisr_maxqlen=10000
netstat -m
---------------------------------8211/1914/10125 mbufs in use (current/cache/total)
8209/1141/9350/624288 mbuf clusters in use (current/cache/total/max)
8209/1135 mbuf+clusters out of packet secondary zone in use (current/cache)
0/77/77/12800 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/6400 9k jumbo clusters in use (current/cache/total/max)
0/0/0/3200 16k jumbo clusters in use (current/cache/total/max)
18470K/3068K/21539K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0/7/6656 sfbufs in use (current/peak/max)
0 requests for sfbufs denied
0 requests for sfbufs delayed
0 requests for I/O initiated by sendfile
0 calls to protocol drain routines
netstat -w1
---------------------------input (Total) output
packets errs bytes packets errs bytes colls
19777 0 15587200 19344 0 15400057 0
19381 0 15392439 19071 0 15300189 0
19795 0 15521849 19491 0 15456449 0
20459 0 16145808 20095 0 16044806 0
20577 0 16014850 20151 0 15853150 0
20325 0 15994665 19871 0 15857087 0
19702 0 15360824 19115 0 15179898 0
18070 0 13442654 17647 0 13377272 0
18764 0 14575149 18340 0 14431822 0
22376 0 18681125 21989 0 18635825 0
top -SH
-----------------------------last pid: 63571; load averages: 0.95, 0.75, 0.69 up 0+06:35:15 10:46:00
76 processes: 5 running, 49 sleeping, 22 waiting
CPU: 0.1% user, 0.0% nice, 14.4% system, 0.5% interrupt, 85.1% idle
Mem: 11M Active, 44M Inact, 172M Wired, 176K Cache, 109M Buf, 745M Free
Swap: 4096M Total, 4096M FreePID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 171 ki31 0K 32K RUN 1 356:40 99.46% {idle: cpu1}
11 root 171 ki31 0K 32K CPU2 2 347:42 88.28% {idle: cpu2}
11 root 171 ki31 0K 32K CPU0 0 344:55 79.30% {idle: cpu0}
11 root 171 ki31 0K 32K CPU3 3 355:10 75.98% {idle: cpu3}
0 root -68 0 0K 64K - 0 27:29 16.46% {em1 taskq}
12 root -68 - 0K 176K WAIT 0 6:04 2.10% {irq16: em0 atapc}
0 root -68 0 0K 64K - 3 31:44 0.49% {em0 taskq}
13 root 48 - 0K 32K sleep 1 7:43 0.00% {ng_queue2}
13 root 47 - 0K 32K sleep 2 7:39 0.00% {ng_queue1}
13 root 48 - 0K 32K sleep 1 7:02 0.00% {ng_queue0}
13 root 49 - 0K 32K sleep 3 5:46 0.00% {ng_queue3}
12 root -32 - 0K 176K WAIT 1 1:45 0.00% {swi4: clock}
14 root 44 - 0K 8K - 2 1:12 0.00% yarrow
2873 root 44 0 3644K 1924K select 1 0:44 0.00% flow-capture
16 root 44 - 0K 8K syncer 0 0:06 0.00% syncer
3 root -8 - 0K 8K - 2 0:04 0.00% g_up
924 root 44 0 10400K 6468K select 0 0:03 0.00% snmpd
4 root -8 - 0K 8K - 0 0:03 0.00% g_down
707 root 44 0 3344K 1324K select 2 0:03 0.00% syslogd
12 root -64 - 0K 176K WAIT 2 0:02 0.00% {irq22: atapci2+}
12 root -44 - 0K 176K WAIT 2 0:02 0.00% {swi1: netisr 0}
12 root -32 - 0K 176K WAIT 0 0:01 0.00% {swi4: clock}
2 root -8 - 0K 8K - 3 0:01 0.00% g_event
12 root -32 - 0K 176K WAIT 1 0:01 0.00% {swi4: clock}
972 root 55 0 3372K 1376K nanslp 0 0:01 0.00% cron
12 root -32 - 0K 176K WAIT 1 0:01 0.00% {swi4: clock}
17 root 44 - 0K 8K sdflus 0 0:00 0.00% softdepflush
1 root 44 0 2912K 508K wait 1 0:00 0.00% init
15 root 44 - 0K 8K vlruwt 0 0:00 0.00% vnlru
9 root 71 - 0K 8K psleep 0 0:00 0.00% bufdaemon
12 root -28 - 0K 176K WAIT 1 0:00 0.00% {swi5: +}
0 root 44 0 0K 64K sched 1 0:00 0.00% {swapper}
37839 gab 44 0 9400K 4480K select 0 0:00 0.00% sshd
13731 root 46 0 9400K 4308K sbwait 1 0:00 0.00% sshd
37836 root 44 0 9400K 4396K sbwait 1 0:00 0.00% sshd
6 root 44 - 0K 8K psleep 0 0:00 0.00% pagedaemon
37840 gab 44 0 3624K 1648K wait 0 0:00 0.00% sh
2870 root 45 0 3624K 1424K wait 3 0:00 0.00% sh
13735 gab 45 0 6492K 2872K select 3 0:00 0.00% sftp-server
2855 root 76 0 3344K 1180K ttyin 2 0:00 0.00% getty
2853 root 76 0 3344K 1180K ttyin 1 0:00 0.00% getty
2852 root 76 0 3344K 1180K ttyin 0 0:00 0.00% getty
2858 root 76 0 3344K 1180K ttyin 3 0:00 0.00% getty
2857 root 76 0 3344K 1180K ttyin 0 0:00 0.00% getty
2859 root 76 0 3344K 1180K ttyin 2 0:00 0.00% getty
покажите, еще, пожалуйста: vmstat -i
>покажите, еще, пожалуйста: vmstat -ivmstat -i
interrupt total rate
irq1: atkbd0 6 0
irq16: em0 atapci1 210273137 4901
irq17: em1 221353937 5159
irq22: atapci2+ 309283 7
cpu0: timer 85819225 2000
cpu2: timer 85754595 1998
cpu1: timer 85819062 2000
cpu3: timer 85754591 1998
Total 775083836 18065
и эти параметры правдо не в момент максимальной нагрузки.
>и эти параметры правдо не в момент максимальной нагрузки.тогда эти цифры бесполезны
симпотомы на максимальном потоке какие?
потери?
растет rtt?
или просто не можете больше трафика нагенерить?
>>и эти параметры правдо не в момент максимальной нагрузки.
>
>тогда эти цифры бесполезны
>симпотомы на максимальном потоке какие?
>потери?
>растет rtt?
>или просто не можете больше трафика нагенерить?потерь нет, пинг тоже не повышается. просто такое впечатление что упирается в определенную планку.
на такой же сервер поставили уже серверную Intel <E1G42ET> Gigabit Adapter Dual Port (OEM) PCI-E x4 10/100/1000Mbps и на ней максималка сразу подскочила до 750.
причем 750 это между сервером с FreeBSD и таким же мощным компом с Windows XP и гигабитным риалтеком. Самым интересным получается то что FreeBSD 8 с Intel Pro/1000 GT Desktop Adapter выдает меньше почти в два раза скорость чем Windows XP с дешевым Realtek. Вот это впринципе и настораживает.
>[оверквотинг удален]
>потерь нет, пинг тоже не повышается. просто такое впечатление что упирается в
>определенную планку.
>
>на такой же сервер поставили уже серверную Intel <E1G42ET> Gigabit Adapter Dual Port (OEM) PCI-E x4 10/100/1000Mbps и на ней максималка сразу подскочила до 750.
>
>причем 750 это между сервером с FreeBSD и таким же мощным компом
>с Windows XP и гигабитным риалтеком. Самым интересным получается то что
>FreeBSD 8 с Intel Pro/1000 GT Desktop Adapter выдает меньше почти
>в два раза скорость чем Windows XP с дешевым Realtek. Вот
>это впринципе и настораживает.http://ru.wikipedia.org/wiki/PCI
пиковая пропускная способность PCI - 533Мбит
учитывая, что, как правило, под пиком понимают теоритический максимум
вы как раз и уперлись в PCI,
>[оверквотинг удален]
>>с Windows XP и гигабитным риалтеком. Самым интересным получается то что
>>FreeBSD 8 с Intel Pro/1000 GT Desktop Adapter выдает меньше почти
>>в два раза скорость чем Windows XP с дешевым Realtek. Вот
>>это впринципе и настораживает.
>
>http://ru.wikipedia.org/wiki/PCI
>
>пиковая пропускная способность PCI - 533Мбит
>учитывая, что, как правило, под пиком понимают теоритический максимум
>вы как раз и уперлись в PCI,"...PCI 66 — это PCI 64 работающий на тактовой частоте 66 МГц, использует 3,3 В-слоты,
карты имеют универсальный, либо 3,3 В форм-фактор. Пиковая пропускная способность — 533 Мбайт/с;"533 Мбайт/c * 8 = 4264 Мбит/с
>[оверквотинг удален]
>>
>>причем 750 это между сервером с FreeBSD и таким же мощным компом
>>с Windows XP и гигабитным риалтеком. Самым интересным получается то что
>>FreeBSD 8 с Intel Pro/1000 GT Desktop Adapter выдает меньше почти
>>в два раза скорость чем Windows XP с дешевым Realtek. Вот
>>это впринципе и настораживает.
>
>http://ru.wikipedia.org/wiki/PCI
>
>пиковая пропускная способность PCI - 533Мбитэмм, где же вы такие данные-то нашли ?
Цитирую:
>PCI 2.1-3.0 - Пиковая пропускная способность для 33 МГц — 133 Мбайт/с, а для 66 МГц — 266 Мбайт/с;
133 Мбайт/с умножить на восемь, не пробовали ?
>учитывая, что, как правило, под пиком понимают теоритический максимум
>вы как раз и уперлись в PCI,
>[оверквотинг удален]
>
>Цитирую:
>
>>PCI 2.1-3.0 - Пиковая пропускная способность для 33 МГц — 133 Мбайт/с, а для 66 МГц — 266 Мбайт/с;
>
>133 Мбайт/с умножить на восемь, не пробовали ?
>
>
>>учитывая, что, как правило, под пиком понимают теоритический максимум
>>вы как раз и уперлись в PCI,Понял, не дурак, был бы дураком не понял бы. :) Бес попутал, куда-то я не туда посмотрел...
Осталось спросить у уважаемого топик-стартера модель материнки и какие слоты используются сетевыми картами.
Судя по симптомам юзается 33МГц режим. Но, если "вдруг" окажется что 66МГц.. то можно заново строить гипотезы. :)
>>[оверквотинг удален]
>>133 Мбайт/с умножить на восемь, не пробовали ?
>Понял, не дурак, был бы дураком не понял бы. :)У меня для вас новости (С) :-)
>>[оверквотинг удален]
>133 Мбайт/с умножить на восемь, не пробовали ?PavelR - а позвольте спросить - в результате умножения чего мы получим?
А получим мы бред голимый - посмотри _внимательно_ на единицу измерения :)
>>>[оверквотинг удален]
>>133 Мбайт/с умножить на восемь, не пробовали ?
>
>PavelR - а позвольте спросить - в результате умножения чего мы получим?
>
>А получим мы бред голимый - посмотри _внимательно_ на единицу измерения :)
>дык вроде как стремимся получить скорость в мегабитах, которых ранее было заявлено 533, а умножением получается в два раза больше, и это на 33Мгц (шина-то 32 разрядная).
05:01.0 Ethernet controller: Intel Corporation 82541PI Gigabit Ethernet Controller (rev 05)
Subsystem: Intel Corporation PRO/1000 GT Desktop Adapter
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 21---
сетевая, к примеру, поддерживает 66Мгц на 32-битной шине PCI 2.3.
>дык вроде как стремимся получить скорость в мегабитах, которых ранее было заявлено
>533, а умножением получается в два раза больше, и это на
>33Мгц (шина-то 32 разрядная).ммм видимо потому что данные нужно прогнать дважды по шине )) до проца и обратно ))
>>дык вроде как стремимся получить скорость в мегабитах, которых ранее было заявлено
>>533, а умножением получается в два раза больше, и это на
>>33Мгц (шина-то 32 разрядная).
>
>ммм видимо потому что данные нужно прогнать дважды по шине )) до
>проца и обратно ))а, ну да - карточек то две, только прогонять данные, видимо, надо не до проца, а от карточки до ОЗУ и обратно из ОЗУ в другую карточку... Я этого маленько не учел, у меня на такой карточке файловая раздача, а не раутер.
>Есть маршрутизатор(не один но все идентично) построенный на freebsd 8.
>
>Две сетевые карты - Intel Pro/1000 GT Desktop Adapter. Серверная материнка Asus
>с процессором Intel Quad.
>
>Проблема в том что через сервер не проходит сумарно более 450Мбит хотя
>при этом он не загружен.
>
>Далее выкладываю системную инфу.echo 'kern.hz="3000"' >> /boot/loader.conf
>[оверквотинг удален]
>>
>>Две сетевые карты - Intel Pro/1000 GT Desktop Adapter. Серверная материнка Asus
>>с процессором Intel Quad.
>>
>>Проблема в том что через сервер не проходит сумарно более 450Мбит хотя
>>при этом он не загружен.
>>
>>Далее выкладываю системную инфу.
>
>echo 'kern.hz="3000"' >> /boot/loader.confнеужели частота прерываний повлияет на это?
>>echo 'kern.hz="3000"' >> /boot/loader.conf
>
>неужели частота прерываний повлияет на это?Это НЕ частота прерываний. Это частота циклов переключений процессов планировщиком многозадачности. В том числе - и ядреных процессов, в числе которых ИПФВ и ДАММИНЕТ. Сетевушки генерируют 3-5к прерываний в секунду каждая. По прерываниям пакеты с сетевух загоняются в буфера, которые не бездонны и переполняются. Потому что в другой стороны буферов находятся заторможенные процессы ядра, откликающиеся лишь сто раз в секунду.
>неужели частота прерываний повлияет на это?Кстати, неплохо было бы узнать, сколько прерываний в секунду генерят ваши сетевухи.
>Кстати, неплохо было бы узнать, сколько прерываний в секунду генерят ваши сетевухи.
>о чем я и спрашивал топикстартера, но он почему-то решил, что вполне будет достаточно показать кол-во прерываний ни тогда, когда сетвую "забивает".
>Есть маршрутизатор(не один но все идентично) построенный на freebsd 8.
>
>Две сетевые карты - Intel Pro/1000 GT Desktop Adapter. Серверная материнка Asus
>с процессором Intel Quad.
>
>Проблема в том что через сервер не проходит сумарно более 450Мбит хотя
>при этом он не загружен.
>
>Далее выкладываю системную инфу.помоему 450 это достаточно близко к потолку для pci карт
>[оверквотинг удален]
>>
>>Две сетевые карты - Intel Pro/1000 GT Desktop Adapter. Серверная материнка Asus
>>с процессором Intel Quad.
>>
>>Проблема в том что через сервер не проходит сумарно более 450Мбит хотя
>>при этом он не загружен.
>>
>>Далее выкладываю системную инфу.
>
>помоему 450 это достаточно близко к потолку для pci картне так давно была абсолютно аналогичная тема - там чел тоже уперся в похожий потолок.
В ядро:
options DEVICE_POLLINGВ sysctl:
sysctl kern.polling.enable=1И тестить.
Вот тут описание:
http://www.lissyara.su/articles/freebsd/trivia/device_polling/При тесте рекомендую поиграться с размером HZ (1000, 2000, 3000, 4000, ...).
Ещё могу порекомендовать проштудировать man em - там могут быть параметры тюнинга, специфичные для сетевухи.
>[оверквотинг удален]
>sysctl kern.polling.enable=1
>
>И тестить.
>Вот тут описание:
>http://www.lissyara.su/articles/freebsd/trivia/device_polling/
>
>При тесте рекомендую поиграться с размером HZ (1000, 2000, 3000, 4000, ...).
>
>Ещё могу порекомендовать проштудировать man em - там могут быть параметры тюнинга,
>специфичные для сетевухи.могу ошибаться, но по моему данных сетевух как-раз касается совет DeadLoco в последнем сообщении в ветке: http://www.opennet.me/openforum/vsluhforumID10/4593.html#6
>могу ошибаться, но по моему данных сетевух как-раз касается совет DeadLoco в
>последнем сообщении в ветке: http://www.opennet.me/openforum/vsluhforumID10/4593.html#6Очень интересно, спасибо за ссылку.
Да, поллинг может помешать.
Хотя карточка "Intel Pro/1000 GT Desktop Adapter" вышла в 2004 году, но в спецификациях указано на управление прерыванем.
Я бы порекомендовал потестить polling под нагрузкой.
И в силе остаются мои советы насчет размера HZ и настроек драйвера самой сетевухи.
Плюс можно посмотреть sysctl dev.em.