Всем привет.
Долго гулял по ссылкам гугла, но так и не нашел ответа на свой вопрос.
Суть моей проблемы: Есть серверCPU: Intel(R) Xeon(R) CPU E5606 @ 2.13GHz (2133.42-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0x206c2 Family = 6 Model = 2c Stepping = 2FreeBSD 8.2-RELEASE FreeBSD 8.2-RELEASE #1: Fri Jul 22 20:06:37 MSD 2011 Renaissance87@localhost:/usr/obj/usr/src/sys/MYKERNEL i386
Четырех портовая сетевая карта Интел:
igb0: <Intel(R) PRO/1000 Network Connection version - 2.0.7> port 0xe880-0xe89f mem 0xfbe60000-0xfbe7ffff,0xfbe40000-0xfbe5ffff,0xfbeb8000-0xfbebbfff irq 32 at device 0.0 on pci5
igb0: Using MSIX interrupts with 5 vectors
igb0: [ITHREAD]
igb0: [ITHREAD]
igb0: [ITHREAD]
igb0: [ITHREAD]
igb0: [ITHREAD]делаю бридж
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether ae:6d:e9:75:aa:5c
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: igb0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 1 priority 128 path cost 2000000
member: igb1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 2 priority 128 path cost 2000000
в igb0 - один комп
в igb1 - другойуправление в igb4 (встроенная)
КОМП----[igb0] cервер [igb1] ---- КОМПдля теста ipfw - allow ip from any to any
начинаю гонять трафик iperfom
и наблюдаю вот такую ситуацию:CPU 0: 0.0% user, 0.0% nice, 99.6% system, 0.0% interrupt, 0.4% idle
CPU 1: 0.0% user, 0.0% nice, 0.0% system, 5.4% interrupt, 94.6% idle
CPU 2: 0.0% user, 0.0% nice, 0.0% system, 39.9% interrupt, 60.1% idle
CPU 3: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
Mem: 8680K Active, 7720K Inact, 165M Wired, 80K Cache, 11M Buf, 2812M Free
Swap: 4096M Total, 4096M FreePID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 4 171 ki31 0K 32K RUN 0 141:31 302.69% idle
0 root 32 -68 0 0K 248K - 3 3:07 79.05% kernel
12 root 49 -60 - 0K 392K WAIT 0 0:35 32.37% intrИз-за чего грузится только одно ядро системы?
Как это можно победить?
Что еще предоставить для просмотра?
>Из-за чего грузится только одно ядро системы?бсдя так и не научилась SMP
>Как это можно победить?поставить линух, любой
>Что еще предоставить для просмотра?ничего
>>Из-за чего грузится только одно ядро системы?
> бсдя так и не научилась SMPВы просто не научились читать ман ;-)
>>Как это можно победить?
> поставить линух, любой
> 1. Включить отложенную обработку пакетов
> sysctl net.isr.direct=0
> sysctl net.isr.direct_force=0
> sysctl net.isr.maxthreads=число cpu
> sysctl net.isr.numthreads=число cpuЯ бы порекомендовал (число цпу) -1.
Директ и форсу в 1 ставить не нужно, т.к. в этом случае будет задействовано только одно ядро на одну сетевую, если директ 1 и форсе 0, то в это случае, это так пишут, а я сам не пробовал, будет пакеты обрабатываться одним ядром, а что не поместилось в остальных -- как-то сомнительно звучит.
и нужно обязательно тюнить sysctl net.isr.maxthreads, т.к. по умолчанию стоит 1, т.е будет обрабатываться одним ядром, что на мультироцессорных системах не выгодно ))
>[оверквотинг удален]
> 32 -68 0
> 0K 248K -
> 3 3:07 79.05% kernel
> 12 root
> 49 -60 -
> 0K 392K WAIT
> 0 0:35 32.37% intr
> Из-за чего грузится только одно ядро системы?
> Как это можно победить?
> Что еще предоставить для просмотра?Есть 2 варианта:
1. Включить отложенную обработку пакетов
sysctl net.isr.direct=0
sysctl net.isr.direct_force=0
sysctl net.isr.maxthreads=число cpu
sysctl net.isr.numthreads=число cpuили более популярный
2. Развесить прерывания MSI-X на разные CPU cpuset-ом
>[оверквотинг удален]
>> Как это можно победить?
>> Что еще предоставить для просмотра?
> Есть 2 варианта:
> 1. Включить отложенную обработку пакетов
> sysctl net.isr.direct=0
> sysctl net.isr.direct_force=0
> sysctl net.isr.maxthreads=число cpu
> sysctl net.isr.numthreads=число cpu
> или более популярный
> 2. Развесить прерывания MSI-X на разные CPU cpuset-омУстановил 7.4 - подобной проблемы не наблюдаю.