Добрый день!
Кто что посоветуе по сборке ядра?
HZ=1000?
tickless или нет?
какой clocksource выбрать? tsc?
Какие еще опции надо добавить/убрать?
Так же интересует мнение по распределению TX/RX очередей по процам.
Сейчас 4 RX + 4 TX, каждая очередь на свой проц.
Как лутьше по процам распределить? rx,tx,rx,tx,rx,tx,rx,tx или rx,rx,rx,rx,tx,tx,tx,tx c точки зрения процессорного кеша?
Есть ли смысл делать 8 RX/TX очередей?
Что есть в наличие:
Shaper + NAT + snmpd + sshd
Задействована пока токо 1 сетевуха приходу/уход по vlan-ам.
В пиках 700Мбит/c 130кpps in + 130kpps out
iptables на FORWAD пустой, на INPUT 2 правила
TC:
filter parent 1: protocol ip pref 2 flow
filter parent 1: protocol ip pref 2 flow handle 0x1 map keys dst and 0x003ffffc rshift 2 baseclass 1:1
filter parent 1: protocol ip pref 2 flow
filter parent 1: protocol ip pref 2 flow handle 0x1 map keys nfct-src and 0x003ffffc rshift 2 baseclass 1:1
Около 7к class/qdisc
uname -a
Linux darkstar 2.6.32 #2 SMP Fri Dec 11 06:02:03 MSK 2009 x86_64 Intel(R) Xeon(R) CPU E5520 @ 2.27GHz GenuineIntel GNU/Linux
ethtool -i eth1
driver: igb
version: 2.1.1
firmware-version: 1.2-3
bus-info: 0000:01:00.1
ethtool -g eth1
Ring parameters for eth1:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 2048
RX Mini: 0
RX Jumbo: 0
TX: 2048
ethtool -c eth1
##
## InterruptThrottleRate=20000
##
Coalesce parameters for eth1:
Adaptive RX: off TX: off
stats-block-usecs: 0
sample-interval: 0
pkt-rate-low: 0
pkt-rate-high: 0
rx-usecs: 48
rx-frames: 0
rx-usecs-irq: 0
rx-frames-irq: 0
tx-usecs: 48
tx-frames: 0
tx-usecs-irq: 0
tx-frames-irq: 0
rx-usecs-low: 0
rx-frame-low: 0
tx-usecs-low: 0
tx-frame-low: 0
rx-usecs-high: 0
rx-frame-high: 0
tx-usecs-high: 0
tx-frame-high: 0
cat /proc/ interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
0: 124 0 0 313546690 0 0 0 0 IO-APIC-edge timer
1: 0 0 0 2 0 0 0 0 IO-APIC-edge i8042
8: 0 0 0 4 0 0 0 0 IO-APIC-edge rtc0
9: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi
12: 0 0 0 4 0 0 0 0 IO-APIC-edge i8042
16: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb3
18: 0 0 0 0 0 0 0 24 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb8
19: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb5, uhci_hcd:usb7
21: 33943 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb4
23: 0 0 0 0 0 0 0 3196 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb6
27: 0 0 0 0 0 0 436048 0 PCI-MSI-edge ahci
28: 0 0 0 0 0 0 0 0 PCI-MSI-edge eth0
29: 0 0 0 466705 0 0 0 0 PCI-MSI-edge eth0-rx-0
30: 0 0 0 234159 0 0 0 0 PCI-MSI-edge eth0-rx-1
31: 0 0 0 0 129879 0 0 0 PCI-MSI-edge eth0-rx-2
32: 0 0 0 0 186575 0 0 0 PCI-MSI-edge eth0-rx-3
33: 0 0 0 0 0 130164 0 0 PCI-MSI-edge eth0-tx-0
34: 0 0 0 0 0 170501 0 0 PCI-MSI-edge eth0-tx-1
35: 0 0 0 0 0 0 227838 0 PCI-MSI-edge eth0-tx-2
36: 0 0 0 0 139228 0 0 0 PCI-MSI-edge eth0-tx-3
37: 0 0 0 0 0 2 0 0 PCI-MSI-edge eth1
38: 1991696636 0 0 0 0 2 0 0 PCI-MSI-edge eth1-rx-0
39: 0 1992216206 0 0 0 0 2 0 PCI-MSI-edge eth1-rx-1
40: 0 0 2006830556 0 0 0 2 0 PCI-MSI-edge eth1-rx-2
41: 0 0 0 2010020287 0 0 0 2 PCI-MSI-edge eth1-rx-3
42: 0 0 0 0 2192739614 0 0 2 PCI-MSI-edge eth1-tx-0
43: 2 0 0 0 0 2191854153 0 0 PCI-MSI-edge eth1-tx-1
44: 0 2 0 0 0 0 2451150897 0 PCI-MSI-edge eth1-tx-2
45: 0 2 0 0 0 0 0 2226860811 PCI-MSI-edge eth1-tx-3
NMI: 0 0 0 0 0 0 0 0 Non-maskable interrupts
LOC: 463610509 457491640 458713319 444378741 1526528751 1523301685 612322504 140383577 Local timer interrupts
SPU: 0 0 0 0 0 0 0 0 Spurious interrupts
PMI: 0 0 0 0 0 0 0 0 Performance monitoring interrupts
PND: 0 0 0 0 0 0 0 0 Performance pending work
RES: 450508 57503 48826 88610 307383 276301 153284 132668 Rescheduling interrupts
CAL: 39 64 68 66 62 67 54 63 Function call interrupts
TLB: 1470 1328 1025 1212 23708 23714 21621 21112 TLB shootdowns
TRM: 0 0 0 0 0 0 0 0 Thermal event interrupts
THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 0 0 0 0 Machine check exceptions
MCP: 2864 2864 2864 2864 2864 2864 2864 2864 Machine check polls
root@darkstar:~/stat# mpstat -P ALL 1
Linux 2.6.32 (darkstar) 12/27/2009
11:48:58 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
11:48:59 AM all 0.00 0.00 0.13 0.00 0.75 15.41 0.00 83.71 157811.00
11:48:59 AM 0 0.00 0.00 0.00 0.00 2.00 28.00 0.00 70.00 13753.00
11:48:59 AM 1 0.00 0.00 1.00 0.00 1.00 31.00 0.00 68.00 13825.00
11:48:59 AM 2 0.00 0.00 0.00 0.00 1.00 28.00 0.00 71.00 13968.00
11:48:59 AM 3 0.00 0.00 0.00 0.00 1.00 26.00 0.00 72.00 15016.00
11:48:59 AM 4 0.00 0.00 0.00 0.00 0.00 5.00 0.00 100.00 14626.00
11:48:59 AM 5 0.00 0.00 0.00 0.00 2.00 5.00 0.00 94.00 15001.00
11:48:59 AM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 16389.00
11:48:59 AM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 93.00 15048.00
sar -n DEV 10
Linux 2.6.32 (darkstar) 12/27/2009
12:14:47 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
12:14:57 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:14:57 PM eth0 3.90 1.60 360.36 116.92 0.00 0.00 0.00
12:14:57 PM eth1 93361.36 91317.32 56513828.53 54880451.15 0.00 0.00 0.50
12:14:57 PM eth1.x 45833.53 49095.90 28561510.61 26838485.09 0.00 0.00 0.20
Собчно что во всем этом смушает, это то что процы что на TX грузятся а те что на RX нет.
И еще странность есть, на VLAN-е (eth1.x) понемногу (0.5-1 drop/s) прибывают TX drop, на самом eth1 нет ошибок, и потерь видимых тоже нет.
PS. Знаю что NAT надо выносить на отдельную машину, и что надо 2-ю сетевуху задействовать.