Перейти к содержимому
Калькуляторы

micros

Цитирую сам себя (пост № 170 от вчерашнего дня):

Получил сетевушку Intel Pro/1000ET Dual Port. Все завелось, как и хотелось, даже больше. Хотел сделать 2 очереди на интерфейс, а она делает 4. Ну, это ладно, пусть будет 4.
Естественно, MSI-X, только прерывания на моей сетевой можно раскидывать не только на RX/TX (толку от этого очень мало), но и сделать несколько очередей RX/TX, каждая их которых будет на отдельном прерывании, и соответственно, будет нагружать отдельное ядро. Вопрос в том, как эти очереди будут себя вести в плане softirq (HTB, iptables и пр.)

 

Изменено пользователем alexpro

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати... Еще одно заметил ночью с Pro/1000 ET.:

1. Сетевая down

Когда делаешь ifconfig eth0, txqueuelen: 1000, как и у всех сетевых по умолчанию.

2. Сетевая up (100Mbit)

txqueuelen: 100 (???)

3. Cетевая up (кабель не подключен)

txqueuelen: 1000

Если включаешь кабель, опять txqueuelen: 100. Лечится только принудительным указанием этого параметра. Ни с какой другой сетевой и никогда таких чудес у меня не было. Чуть позже попробую на гигабите.

Совершенно непонятно, почему так происходит.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А куда подключена сетевая, когда она подключается на 100мбит? Случайно не в гигабитный порт, зажатый на 100мбит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

voron

Подключал дома, к обычной 100-мегабитной мыльнице (Compex PS2208B).

Intel Pro/1000 PT Dual port, подключенная к этому же свитчу, к тому же порту, txqueuelen: 1000.

 

Когда включился на площадке на гигабит, txqueuelen: 1000. Странно...

 

Насчет масштабируемости на Pro/1000 ET. Уже поставил в работу. По тому, что я вижу сейчас, масштабируемость таки есть: ядра нагружены равномерно и немного. Когда работала Pro/1000 PT, 2 ядра из 4 стояли, на активных ядрах нагрузка была где-то в 2 раза больше. Так что, все сходится, вроде бы. Правда, HTB, как показывает oprofile, дает всего чуть больше 1% нагрузки, и это при том, что на оба порта навешано приблизительно по 2500 фильтров и полос. Основную нагрузку (64%) дает iptables (ipt_do_table). И что мне совершенно непонятно, 10% нагрузки идет от hpet_next_event, че это за зверь, непонятно. Раньше я его в топовых позициях не видел, а тут вдруг вылез. Ну это ладно, разберемся.

 

Так что, в целом я доволен результатом, не зря я затеял замену сетевушки PT на ET. Систему особо не разгрузил, но распределения нагрузки softirq по ядрам добился. Посмотрим, что будет сегодня в пиковое время.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день!

 

Кто что посоветуе по сборке ядра?

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-ю сетевуху задействовать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кто нибудь знает, как tx-очередь выбирается?

А то все прерывания идут на tx-1 (причем на такое на всех сетевых), соответственно одно из ядер в полтора раза больше нагружено.

 

Изменено пользователем Valaskor

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А то все прерывания идут на tx-1 (причем на такое на всех сетевых), соответственно одно из ядер в полтора раза больше нагружено.

Возможно, поможет смена исходящего шедулера на NET_SCH_MULTIQ на всех интерфейсах. Возможно, как-то так

tc qdisc add dev $DEV root handle 1:0 multiq

Как work-around раскидайте tx-1 (и соответствующие rx-1) между ядрами. Если ядер больше чем сетевых, то первые ядра оставьте свободными.

Изменено пользователем voron

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Такая проблема, имею сервер с сетевой двух портовой под управлением CentOS 5.4

 

09:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

09:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

 

 

Драйвер:

#ethtool -i eth0

driver: igb

version: 1.3.16-k2

firmware-version: 1.4-3

bus-info: 0000:09:00.0

 

#ethtool -i eth1

driver: igb

version: 1.3.16-k2

firmware-version: 1.4-3

bus-info: 0000:09:00.1

 

 

#modinfo igb

filename: /lib/modules/2.6.18-164.10.1-ipp2p.el5PAE/kernel/drivers/net/igb/igb.ko

version: 1.3.16-k2

license: GPL

description: Intel® Gigabit Ethernet Network Driver

author: Intel Corporation, <e1000-devel@lists.sourceforge.net>

srcversion: 78555F0A019E05BADBD95AA

alias: pci:v00008086d000010D6sv*sd*bc*sc*i*

alias: pci:v00008086d000010A9sv*sd*bc*sc*i*

alias: pci:v00008086d000010A7sv*sd*bc*sc*i*

alias: pci:v00008086d000010E8sv*sd*bc*sc*i*

alias: pci:v00008086d000010E7sv*sd*bc*sc*i*

alias: pci:v00008086d000010E6sv*sd*bc*sc*i*

alias: pci:v00008086d0000150Asv*sd*bc*sc*i*

alias: pci:v00008086d000010C9sv*sd*bc*sc*i*

depends: 8021q

vermagic: 2.6.18-164.10.1-ipp2p.el5PAE SMP mod_unload PENTIUM4 REGPARM 4KSTACKS gcc-4.1

parm: max_vfs:Maximum number of virtual functions to allocate per physical function (uint)

 

 

 

Выключен tcp segmentation offload:

 

Offload parameters for eth0:

Cannot get device udp large send offload settings: Operation not supported

rx-checksumming: on

tx-checksumming: on

scatter-gather: on

tcp segmentation offload: off

udp fragmentation offload: off

generic segmentation offload: off

generic-receive-offload: on

 

Разброс по CPU.

Процессор Xeon,4 ядра на микроархетектуре Nehalem. Включен HT.

#cat /proc/interrupts | grep eth0
130:      44495      34733    7484927    5615102    3671687    3379664   14978147    7185501       PCI-MSI-X  eth0-tx-0
138:      36189          0    4133279    2961030   20411918   13030021    3988460   14488795       PCI-MSI-X  eth0-rx-0
146:      37544          0    6656333   17368695   17763201    7233573    3099240    6806423       PCI-MSI-X  eth0-rx-1
154:       9775          0   16692027    7787024    1205571     940624   27610102    7620119       PCI-MSI-X  eth0-rx-2
162:      29231          0   13860738    8678881    5239099   12325437    6459965   10984137       PCI-MSI-X  eth0-rx-3
170:          1          0          0          0          0          0          0          0       PCI-MSI-X  eth0

#cat /proc/interrupts | grep eth1
186:      19626          0    5236621    7750632    3235880    3739543    8161446   15372173       PCI-MSI-X  eth1-tx-0
194:      71532          0   12100413   10864768    8090533   12629584    7928018    4867226       PCI-MSI-X  eth1-rx-0
202:      32000          0    9549992    8829928    6468994   14289032    7789334    8690617       PCI-MSI-X  eth1-rx-1
210:      34914          0    7415449    9195490    8313026   13668859   10254350    5788638       PCI-MSI-X  eth1-rx-2
218:      38561          0    8895092    9718694    9016271   11259618    9219576    7563733       PCI-MSI-X  eth1-rx-3
226:          1          0          0          0          0          0          0          0       PCI-MSI-X  eth1

 

 

Сервер занимается нарезкой скорости, испольуется HTB.

Проблема в следующем, из примера видно, что нарезана скорость 5Мбит, но клиенту нарезается намного больше. Внизу видно, что лимит 5Мбит, а выдаётся подчти 15Мбит.

 

class htb 1:f701 parent 1:be01 leaf f701: prio 0 rate 5120Kbit ceil 5120Kbit burst 2240b cburst 2240b

Sent 85217655 bytes 16045 pkt (dropped 0, overlimits 0 requeues 0)

rate 14449Kbit 332pps backlog 0b 6p requeues 0

lended: 16039 borrowed: 0 giants: 18590

tokens: -4620 ctokens: -4620

 

 

Из-за чего такое и как исправить? Или же это связано с множеством веторами котрые система разбрасала по ядрам и HTB неверно считает?

Кто как боролся с этим?

 

На старом железе двухпроцессорны Xeon ещё на ядре P4 всё резалось точно.

Изменено пользователем 2MEX2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2MEX2

Странно. У меня Xeon 3430, такая же сетевушка (82576), и такая же нарезка скорости (HTB). Все точно, никаких вопросов. Под очередь применяется pfifo.

Что смущает в /proc/interrupts: у меня каждое прерывание сидит на своем ядре, а в показанном выше случае, я так понял, прерывания размазаны по всем ядрам. Не знаю, может ли это повлиять на точность шейпера...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сменил дрова на 2.1.1

 

#ethtool -i eth0

driver: igb

version: 2.1.1

firmware-version: 1.4-3

bus-info: 0000:09:00.0

 

#modinfo igb

filename: /lib/modules/2.6.18-164.10.1-ipp2p.el5PAE/kernel/drivers/net/igb/igb.ko

version: 2.1.1

license: GPL

description: Intel® Gigabit Ethernet Network Driver

author: Intel Corporation, <e1000-devel@lists.sourceforge.net>

srcversion: FDF9793697169CEE5D4BF75

alias: pci:v00008086d000010D6sv*sd*bc*sc*i*

alias: pci:v00008086d000010A9sv*sd*bc*sc*i*

alias: pci:v00008086d000010A7sv*sd*bc*sc*i*

alias: pci:v00008086d000010E8sv*sd*bc*sc*i*

alias: pci:v00008086d0000150Dsv*sd*bc*sc*i*

alias: pci:v00008086d000010E7sv*sd*bc*sc*i*

alias: pci:v00008086d000010E6sv*sd*bc*sc*i*

alias: pci:v00008086d00001518sv*sd*bc*sc*i*

alias: pci:v00008086d0000150Asv*sd*bc*sc*i*

alias: pci:v00008086d000010C9sv*sd*bc*sc*i*

alias: pci:v00008086d00001516sv*sd*bc*sc*i*

alias: pci:v00008086d00001511sv*sd*bc*sc*i*

alias: pci:v00008086d00001510sv*sd*bc*sc*i*

alias: pci:v00008086d0000150Fsv*sd*bc*sc*i*

alias: pci:v00008086d0000150Esv*sd*bc*sc*i*

depends: dca,8021q

vermagic: 2.6.18-164.10.1-ipp2p.el5PAE SMP mod_unload PENTIUM4 REGPARM 4KSTACKS gcc-4.1

parm: InterruptThrottleRate:Interrupt Throttling Rate (array of int)

parm: IntMode:Interrupt Mode (array of int)

parm: LLIPort:Low Latency Interrupt TCP Port (array of int)

parm: LLIPush:Low Latency Interrupt on TCP Push flag (array of int)

parm: LLISize:Low Latency Interrupt on Packet Size (array of int)

parm: RSS:RSS - multiqueue receive count (array of int)

parm: VMDQ:VMDQ - VMDq multiqueue receive (array of int)

parm: max_vfs:max_vfs - SR-IOV VF devices (array of int)

parm: QueuePairs:QueuePairs - TX/RX queue pairs for interrupt handling (array of int)

parm: debug:Debug level (0=none, ..., 16=all) (int)

 

Переключил режим:

options igb IntMode=1,1

 

130: 0 0 53078699 0 PCI-MSI eth0

146: 0 0 0 63796743 PCI-MSI eth1

 

Пример нарезки dowbload'a для одного из клиентов:

$TC class add dev $DEV parent 1:${FI}01 classid 1:f701 htb rate 5120Kbit

$TC qdisc add dev $DEV parent 1:f701 handle 0xf701 pfifo limit 60

$TC filter add dev $DEV parent 1:0 protocol ip prio 100 u32 ht 2:01: match ip dst xxx.xxx.xxx.1 classid 1:f701

 

Всё равно когда просматриваю, вижу, что нарезка споконой даёт больше, чем задано:

class htb 1:f701 parent 1:be01 leaf f701: prio 0 rate 5120Kbit ceil 5120Kbit burst 2240b cburst 2240b

Sent 85217655 bytes 16045 pkt (dropped 0, overlimits 0 requeues 0)

rate 8638Kbit 201pps backlog 0b 6p requeues 0

lended: 16039 borrowed: 0 giants: 18590

tokens: -4620 ctokens: -4620

 

 

В чём проблема, понять не могу.

 

При компиляции выбирал

Processor family -> Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon

 

Preemption Model -> No Forced Preemption (Server)

 

Может это ещё поможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Также сделал следующее:

#ethtool -k eth0

Offload parameters for eth0:

rx-checksumming: on

tx-checksumming: on

scatter-gather: on

tcp segmentation offload: off

udp fragmentation offload: off

generic segmentation offload: off

generic-receive-offload: on

 

Не помогло.

 

Ядро скомпилено последнее от CentOS:

2.6.18-164.10.1.el5PAE

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

может, с таймерами что-то не так?

и ядро можно попробовать другое поставить. это какое-то совсем древнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

помогите плиз разобраться с дропами,

 

имеем тупой quagga router:

custom kernel 2.6.33.2 (на базе centos 5.4 x64)

2xXEON E5310 (1.6Ghz/1066BUS/8M)

intel E1G44ET (82576) драйвер IGB 2.1.9 (скомпилирован с DCA и separate TX_HANDLER)

(modprobe.conf: options igb IntMode=2,2,2,2 InterruptThrottleRate=3000,3000,3000,3000 RSS=4,4,4,4 QueuePairs=1,1,1,1 LLIPort=80)

на каждом физ интерфейсе(eth2, eth3), по 4-5 влан интерфейса

 

smp_affinity прибиты ко всем ядрам следующим образом:

/bin/echo 1 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 4 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 10 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 40 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

 

/bin/echo 2 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 8 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 20 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 80 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

 

т.е. четные ядра (4 очереди) eth2, нечетные - eth3, как рекомендует интел в брошюре Assigning Interrupts to Processor Cores using 82576 controller

 

установил ring buffer 1024:

#ethtool -g eth3

Ring parameters for eth3:

Pre-set maximums:

RX: 4096

RX Mini: 0

RX Jumbo: 0

TX: 4096

Current hardware settings:

RX: 1024

RX Mini: 0

RX Jumbo: 0

TX: 1024

 

 

при трафике ~650-700Mbit, 140-150kpps

следующие дропы на eth3:ethtool -S eth3

NIC statistics:

rx_packets: 3874196305

tx_packets: 3156888651

rx_bytes: 2751512757612

tx_bytes: 1938033996668

rx_broadcast: 644

tx_broadcast: 257

rx_multicast: 339

tx_multicast: 6

multicast: 339

collisions: 0

rx_crc_errors: 0

rx_no_buffer_count: 0

rx_missed_errors: 0

tx_aborted_errors: 0

tx_carrier_errors: 0

tx_window_errors: 0

tx_abort_late_coll: 0

tx_deferred_ok: 0

tx_single_coll_ok: 0

tx_multi_coll_ok: 0

tx_timeout_count: 0

rx_long_length_errors: 0

rx_short_length_errors: 0

rx_align_errors: 0

tx_tcp_seg_good: 0

tx_tcp_seg_failed: 0

rx_flow_control_xon: 0

rx_flow_control_xoff: 0

tx_flow_control_xon: 0

tx_flow_control_xoff: 0

rx_long_byte_count: 2751512757612

tx_dma_out_of_sync: 0

tx_smbus: 0

rx_smbus: 0

dropped_smbus: 0

rx_errors: 0

tx_errors: 0

tx_dropped: 0

rx_length_errors: 0

rx_over_errors: 0

rx_frame_errors: 0

rx_fifo_errors: 148754

tx_fifo_errors: 0

tx_heartbeat_errors: 0

tx_queue_0_packets: 790508745

tx_queue_0_bytes: 483427134634

tx_queue_0_restart: 68

tx_queue_1_packets: 801246370

tx_queue_1_bytes: 492098086447

tx_queue_1_restart: 620

tx_queue_2_packets: 1565133428

tx_queue_2_bytes: 936445005419

tx_queue_2_restart: 369

tx_queue_3_packets: 108

tx_queue_3_bytes: 22108

tx_queue_3_restart: 0

rx_queue_0_packets: 973989832

rx_queue_0_bytes: 683338611702

rx_queue_0_drops: 15287

rx_queue_0_csum_err: 196

rx_queue_0_alloc_failed: 0

rx_queue_1_packets: 985711110

rx_queue_1_bytes: 698549657802

rx_queue_1_drops: 40993

rx_queue_1_csum_err: 196

rx_queue_1_alloc_failed: 0

rx_queue_2_packets: 954212852

rx_queue_2_bytes: 655179869602

rx_queue_2_drops: 65274

rx_queue_2_csum_err: 533

rx_queue_2_alloc_failed: 0

rx_queue_3_packets: 960133825

rx_queue_3_bytes: 683362541492

rx_queue_3_drops: 27200

rx_queue_3_csum_err: 403

rx_queue_3_alloc_failed: 0

 

динамика дропов eth3:

2010-04-26_19:27 rx_queue_0_drops: 7860 rx_queue_1_drops: 26006 rx_queue_2_drops: 11073 rx_queue_3_drops: 19131

2010-04-26_19:28 rx_queue_0_drops: 7860 rx_queue_1_drops: 26150 rx_queue_2_drops: 12088 rx_queue_3_drops: 19131

2010-04-26_19:29 rx_queue_0_drops: 7860 rx_queue_1_drops: 26618 rx_queue_2_drops: 14566 rx_queue_3_drops: 19131

2010-04-26_19:30 rx_queue_0_drops: 7860 rx_queue_1_drops: 26797 rx_queue_2_drops: 16412 rx_queue_3_drops: 19131

2010-04-26_19:31 rx_queue_0_drops: 7860 rx_queue_1_drops: 26797 rx_queue_2_drops: 18895 rx_queue_3_drops: 19131

2010-04-26_19:32 rx_queue_0_drops: 11955 rx_queue_1_drops: 26797 rx_queue_2_drops: 19478 rx_queue_3_drops: 19131

2010-04-26_19:33 rx_queue_0_drops: 11955 rx_queue_1_drops: 27686 rx_queue_2_drops: 22473 rx_queue_3_drops: 19131

2010-04-26_19:34 rx_queue_0_drops: 11955 rx_queue_1_drops: 29714 rx_queue_2_drops: 28648 rx_queue_3_drops: 19131

2010-04-26_19:35 rx_queue_0_drops: 11955 rx_queue_1_drops: 29714 rx_queue_2_drops: 34396 rx_queue_3_drops: 19131

2010-04-26_19:36 rx_queue_0_drops: 12911 rx_queue_1_drops: 29714 rx_queue_2_drops: 46073 rx_queue_3_drops: 19131

2010-04-26_19:37 rx_queue_0_drops: 12911 rx_queue_1_drops: 29714 rx_queue_2_drops: 49030 rx_queue_3_drops: 19131

2010-04-26_19:38 rx_queue_0_drops: 12911 rx_queue_1_drops: 30174 rx_queue_2_drops: 49260 rx_queue_3_drops: 19131

2010-04-26_19:39 rx_queue_0_drops: 12911 rx_queue_1_drops: 30610 rx_queue_2_drops: 49452 rx_queue_3_drops: 19131

2010-04-26_19:40 rx_queue_0_drops: 12911 rx_queue_1_drops: 33277 rx_queue_2_drops: 50309 rx_queue_3_drops: 19131

2010-04-26_19:41 rx_queue_0_drops: 12911 rx_queue_1_drops: 33277 rx_queue_2_drops: 50818 rx_queue_3_drops: 19131

2010-04-26_19:42 rx_queue_0_drops: 12911 rx_queue_1_drops: 37385 rx_queue_2_drops: 53475 rx_queue_3_drops: 19131

2010-04-26_19:43 rx_queue_0_drops: 12911 rx_queue_1_drops: 38776 rx_queue_2_drops: 57768 rx_queue_3_drops: 22549

2010-04-26_19:44 rx_queue_0_drops: 12911 rx_queue_1_drops: 38954 rx_queue_2_drops: 59153 rx_queue_3_drops: 22549

2010-04-26_19:45 rx_queue_0_drops: 12911 rx_queue_1_drops: 40576 rx_queue_2_drops: 60198 rx_queue_3_drops: 26644

2010-04-26_19:46 rx_queue_0_drops: 13823 rx_queue_1_drops: 40993 rx_queue_2_drops: 63533 rx_queue_3_drops: 26932

2010-04-26_19:47 rx_queue_0_drops: 15287 rx_queue_1_drops: 40993 rx_queue_2_drops: 64558 rx_queue_3_drops: 27200

2010-04-26_19:48 rx_queue_0_drops: 15287 rx_queue_1_drops: 40993 rx_queue_2_drops: 65274 rx_queue_3_drops: 27200

2010-04-26_19:49 rx_queue_0_drops: 15287 rx_queue_1_drops: 45227 rx_queue_2_drops: 69731 rx_queue_3_drops: 27200

 

 

у кого какие идеи, как кроме увеличения ring_buffers, уменьшить кол-во дропов?

 

P.S. load average: 2.76, 2.04, 1.42

(сильно ли поможет замена процов? если менять на XEON X5355 (2,66Ghz/1333/8M) )

 

Cpu0 : 0.0%us, 0.0%sy, 0.0%ni, 3.6%id, 0.0%wa, 0.0%hi, 96.4%si, 0.0%st

Cpu1 : 0.0%us, 0.0%sy, 0.0%ni, 5.1%id, 0.0%wa, 0.7%hi, 94.2%si, 0.0%st

Cpu2 : 0.0%us, 0.7%sy, 0.0%ni, 15.9%id, 0.0%wa, 0.0%hi, 83.3%si, 0.0%st

Cpu3 : 0.0%us, 0.0%sy, 0.0%ni, 17.4%id, 0.0%wa, 0.0%hi, 82.6%si, 0.0%st

Cpu4 : 0.0%us, 0.0%sy, 0.0%ni, 3.6%id, 0.0%wa, 0.0%hi, 96.4%si, 0.0%st

Cpu5 : 0.0%us, 0.0%sy, 0.0%ni, 4.3%id, 0.0%wa, 0.7%hi, 94.9%si, 0.0%st

Cpu6 : 0.0%us, 0.7%sy, 0.0%ni, 21.7%id, 0.0%wa, 0.0%hi, 77.5%si, 0.0%st

Cpu7 : 0.0%us, 0.0%sy, 0.0%ni, 20.3%id, 0.0%wa, 0.0%hi, 79.7%si, 0.0%st

Изменено пользователем dbask

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да ладно, 8 ядер, 82576 и на 150Kpps захлеб? Наверняка у Вас там шейперы и iptables есть.

 

И, кстати, Вы не указали, это суммарный трафик по всем Вланам или только трафик в рамках одного Влана или трафик в рамках одного интерфейса и т.п.

Изменено пользователем Dark_Angel

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

PerfTop: 7230 irqs/sec kernel:99.0% [1000Hz cycles], (all, 8 CPUs)

--------------------------------------------------------------------------------------------------------------------------------------

 

samples pcnt function DSO

_______ _____ ___________________________ ____________________________________________________________________

 

11377.00 10.4% igb_poll /lib/modules/2.6.33.2-zebra/kernel/drivers/net/igb/igb.ko

9662.00 8.8% ip_route_input /lib/modules/2.6.33.2-zebra/build/vmlinux

8300.00 7.6% _raw_spin_lock /lib/modules/2.6.33.2-zebra/build/vmlinux

4747.00 4.3% __alloc_skb /lib/modules/2.6.33.2-zebra/build/vmlinux

4614.00 4.2% skb_release_head_state /lib/modules/2.6.33.2-zebra/build/vmlinux

4537.00 4.1% igb_xmit_frame_ring_adv /lib/modules/2.6.33.2-zebra/kernel/drivers/net/igb/igb.ko

4335.00 3.9% __slab_free /lib/modules/2.6.33.2-zebra/build/vmlinux

4001.00 3.6% ip_forward /lib/modules/2.6.33.2-zebra/build/vmlinux

2782.00 2.5% memset_c /lib/modules/2.6.33.2-zebra/build/vmlinux

2782.00 2.5% acpi_idle_enter_simple /lib/modules/2.6.33.2-zebra/build/vmlinux

2670.00 2.4% read_hpet /lib/modules/2.6.33.2-zebra/build/vmlinux

2604.00 2.4% get_partial_node /lib/modules/2.6.33.2-zebra/build/vmlinux

2434.00 2.2% dev_queue_xmit /lib/modules/2.6.33.2-zebra/build/vmlinux

2297.00 2.1% eth_type_trans /lib/modules/2.6.33.2-zebra/build/vmlinux

2112.00 1.9% nommu_map_page /lib/modules/2.6.33.2-zebra/build/vmlinux

2075.00 1.9% kfree /lib/modules/2.6.33.2-zebra/build/vmlinux

1810.00 1.6% ipt_do_table /lib/modules/2.6.33.2-zebra/kernel/net/ipv4/netfilter/ip_tables.ko

1573.00 1.4% __slab_alloc /lib/modules/2.6.33.2-zebra/build/vmlinux

1527.00 1.4% netif_receive_skb /lib/modules/2.6.33.2-zebra/build/vmlinux

1423.00 1.3% __kmalloc_node_track_caller /lib/modules/2.6.33.2-zebra/build/vmlinux

1410.00 1.3% kmem_cache_alloc_node /lib/modules/2.6.33.2-zebra/build/vmlinux

1382.00 1.3% tg_shares_up /lib/modules/2.6.33.2-zebra/build/vmlinux

1244.00 1.1% nf_iterate /lib/modules/2.6.33.2-zebra/build/vmlinux

1237.00 1.1% nf_nat_out /lib/modules/2.6.33.2-zebra/kernel/net/ipv4/netfilter/iptable_nat.ko

1194.00 1.1% skb_put /lib/modules/2.6.33.2-zebra/build/vmlinux

1013.00 0.9% kmem_cache_free /lib/modules/2.6.33.2-zebra/build/vmlinux

977.00 0.9% _raw_spin_lock_irqsave /lib/modules/2.6.33.2-zebra/build/vmlinux

931.00 0.8% ip_rcv /lib/modules/2.6.33.2-zebra/build/vmlinux

816.00 0.7% ip_finish_output /lib/modules/2.6.33.2-zebra/build/vmlinux

685.00 0.6% skb_gro_reset_offset /lib/modules/2.6.33.2-zebra/build/vmlinux

680.00 0.6% add_partial /lib/modules/2.6.33.2-zebra/build/vmlinux

 

суммарный трафик по всем вланам:

 

eth3.1, eth3.2, eth3.3 <--- 680mbit full dupl ---> eth2.1,eth2.2

 

 

я так понимаю следует вырезать этот атавизм?:

 

iptables-save

# Generated by iptables-save v1.4.7 on Tue Apr 27 00:17:36 2010

*nat

:PREROUTING ACCEPT [0:0]

:POSTROUTING ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

COMMIT

# Completed on Tue Apr 27 00:17:36 2010

# Generated by iptables-save v1.4.7 on Tue Apr 27 00:17:36 2010

*raw

:PREROUTING ACCEPT [11052980730:7068105927511]

:OUTPUT ACCEPT [225437:35856862]

-A PREROUTING -j NOTRACK

-A OUTPUT -j NOTRACK

COMMIT

Изменено пользователем dbask

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, то что у Вас пустой фаер и нет шейперов - видно из перфтопа. А вот откуда такое количество тиков у функций ядра - надо курить.

 

Очевидно, что потери возникают от того, что перегружены процессоры и они не успевают разгребать очередь пакетов входя в softirq.

 

Могу констатировать, что на пустой машине такое поведение просто возмутительно, потому что 120Kpps ( 520Mbit ) прожевывается одним процессором на 82566DM. Там еще есть 2К правил на шейпинг без хеширования, 200 правил фаервола и НАТ. Дропы есть, но их мало. А тут 82576, MSI-X ( он же заводится у Вас? ) и 150 Kpps и приехали. Попробуйте начать диагностику с убирания LLIPort, особенно если на 80ый порт идет много пакетов. Каких-нибудь 20-30К сделают Вам уже не приятно.

 

Затем надо искать функции по перфу и смотреть кто за что отвечает. Вполне реально, что нужно будет откатываться по ядрам назад, т.к. есть более старые ядра, с 82576 и там такого бреда нет даже близко. Жует всё на раз. Драйвер 2.1.9. Еще поставьте 2000 прерываний на очередь, тоже снимет нагрузку немного.

 

Далее отписывайтесь по результатам - будем смотреть. Мне самому интересно найти причину.

Изменено пользователем Dark_Angel

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

P.S. load average: 2.76, 2.04, 1.42

(сильно ли поможет замена процов? если менять на XEON X5355 (2,66Ghz/1333/8M) )

 

Cpu0 : 0.0%us, 0.0%sy, 0.0%ni, 3.6%id, 0.0%wa, 0.0%hi, 96.4%si, 0.0%st

Cpu1 : 0.0%us, 0.0%sy, 0.0%ni, 5.1%id, 0.0%wa, 0.7%hi, 94.2%si, 0.0%st

Cpu2 : 0.0%us, 0.7%sy, 0.0%ni, 15.9%id, 0.0%wa, 0.0%hi, 83.3%si, 0.0%st

Cpu3 : 0.0%us, 0.0%sy, 0.0%ni, 17.4%id, 0.0%wa, 0.0%hi, 82.6%si, 0.0%st

Cpu4 : 0.0%us, 0.0%sy, 0.0%ni, 3.6%id, 0.0%wa, 0.0%hi, 96.4%si, 0.0%st

Cpu5 : 0.0%us, 0.0%sy, 0.0%ni, 4.3%id, 0.0%wa, 0.7%hi, 94.9%si, 0.0%st

Cpu6 : 0.0%us, 0.7%sy, 0.0%ni, 21.7%id, 0.0%wa, 0.0%hi, 77.5%si, 0.0%st

Cpu7 : 0.0%us, 0.0%sy, 0.0%ni, 20.3%id, 0.0%wa, 0.0%hi, 79.7%si, 0.0%st

mpstat -P ALL 2

cat /proc/softirqs

cat /proc/interrupts | grep eth

 

в студию плиз.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

заметил интересную закономерность:

 

при прибивании потоков к ядрам как указано выше (8 потоков от двух интерфейсов к 8-ми ядрам), загрузка на 9 утра: 8 ядер по ~7%, 65kpps

perf top:

 

------------------------------------------------------------------------------------------------------------------------------------------------------------

PerfTop: 7028 irqs/sec kernel:98.4% [1000Hz cycles], (all, 8 CPUs)

------------------------------------------------------------------------------------------------------------------------------------------------------------

 

samples pcnt function DSO

_______ _____ _______________________________ __________________________________________________________________

 

8951.00 9.7% igb_poll /lib/modules/2.6.33.2-zebra/kernel/drivers/net/igb/igb.ko

6349.00 6.9% ip_route_input /lib/modules/2.6.33.2-zebra/build/vmlinux

5533.00 6.0% _raw_spin_lock /lib/modules/2.6.33.2-zebra/build/vmlinux

5002.00 5.4% acpi_idle_enter_simple /lib/modules/2.6.33.2-zebra/build/vmlinux

4765.00 5.1% read_hpet /lib/modules/2.6.33.2-zebra/build/vmlinux

3691.00 4.0% igb_xmit_frame_ring_adv /lib/modules/2.6.33.2-zebra/kernel/drivers/net/igb/igb.ko

3178.00 3.4% __alloc_skb /lib/modules/2.6.33.2-zebra/build/vmlinux

3022.00 3.3% __slab_free /lib/modules/2.6.33.2-zebra/build/vmlinux

2869.00 3.1% skb_release_head_state /lib/modules/2.6.33.2-zebra/build/vmlinux

2636.00 2.8% ip_forward /lib/modules/2.6.33.2-zebra/build/vmlinux

2201.00 2.4% tg_shares_up /lib/modules/2.6.33.2-zebra/build/vmlinux

2012.00 2.2% dev_queue_xmit /lib/modules/2.6.33.2-zebra/build/vmlinux

1963.00 2.1% get_partial_node /lib/modules/2.6.33.2-zebra/build/vmlinux

1875.00 2.0% memset_c /lib/modules/2.6.33.2-zebra/build/vmlinux

1714.00 1.9% ipt_do_table /lib/modules/2.6.33.2-zebra/kernel/net/ipv4/netfilter/ip_tables.ko

1702.00 1.8% kfree /lib/modules/2.6.33.2-zebra/build/vmlinux

1558.00 1.7% eth_type_trans /lib/modules/2.6.33.2-zebra/build/vmlinux

1547.00 1.7% _raw_spin_lock_irqsave /lib/modules/2.6.33.2-zebra/build/vmlinux

1365.00 1.5% nommu_map_page /lib/modules/2.6.33.2-zebra/build/vmlinux

1294.00 1.4% __kmalloc_node_track_caller /lib/modules/2.6.33.2-zebra/build/vmlinux

1251.00 1.4% kmem_cache_alloc_node /lib/modules/2.6.33.2-zebra/build/vmlinux

1241.00 1.3% netif_receive_skb /lib/modules/2.6.33.2-zebra/build/vmlinux

1135.00 1.2% __slab_alloc /lib/modules/2.6.33.2-zebra/build/vmlinux

 

 

 

если же прибить все потоки только к двум ядрам:

/bin/echo 20 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 20 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 20 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 20 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

 

/bin/echo 80 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 80 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 80 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 80 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

 

суммарная загрузка цпу не изменяется: два ядра - по 30%

но, кол-во прерываний уменьшается вдвое!

 

------------------------------------------------------------------------------------------------------------------------------------------------------------

PerfTop: 3535 irqs/sec kernel:94.9% [1000Hz cycles], (all, 8 CPUs)

------------------------------------------------------------------------------------------------------------------------------------------------------------

 

samples pcnt function DSO

_______ _____ _______________________________ __________________________________________________________________

 

3230.00 7.2% igb_poll /lib/modules/2.6.33.2-zebra/kernel/drivers/net/igb/igb.ko

3022.00 6.7% tg_shares_up /lib/modules/2.6.33.2-zebra/build/vmlinux

2743.00 6.1% read_hpet /lib/modules/2.6.33.2-zebra/build/vmlinux

2505.00 5.5% ip_route_input /lib/modules/2.6.33.2-zebra/build/vmlinux

2126.00 4.7% _raw_spin_lock /lib/modules/2.6.33.2-zebra/build/vmlinux

1872.00 4.1% _raw_spin_lock_irqsave /lib/modules/2.6.33.2-zebra/build/vmlinux

1862.00 4.1% acpi_idle_enter_simple /lib/modules/2.6.33.2-zebra/build/vmlinux

1058.00 2.3% igb_xmit_frame_ring_adv /lib/modules/2.6.33.2-zebra/kernel/drivers/net/igb/igb.ko

1036.00 2.3% __slab_free /lib/modules/2.6.33.2-zebra/build/vmlinux

1028.00 2.3% skb_release_head_state /lib/modules/2.6.33.2-zebra/build/vmlinux

957.00 2.1% fget_light /lib/modules/2.6.33.2-zebra/build/vmlinux

939.00 2.1% get_partial_node /lib/modules/2.6.33.2-zebra/build/vmlinux

934.00 2.1% fput /lib/modules/2.6.33.2-zebra/build/vmlinux

920.00 2.0% perf_session__mmap_read_counter /root/bin/perf

908.00 2.0% perf_poll /lib/modules/2.6.33.2-zebra/build/vmlinux

853.00 1.9% __alloc_skb /lib/modules/2.6.33.2-zebra/build/vmlinux

841.00 1.9% ip_forward /lib/modules/2.6.33.2-zebra/build/vmlinux

752.00 1.7% kfree /lib/modules/2.6.33.2-zebra/build/vmlinux

591.00 1.3% list_del /lib/modules/2.6.33.2-zebra/build/vmlinux

583.00 1.3% schedule /lib/modules/2.6.33.2-zebra/build/vmlinux

579.00 1.3% ipt_do_table /lib/modules/2.6.33.2-zebra/kernel/net/ipv4/netfilter/ip_tables.ko

565.00 1.3% __slab_alloc /lib/modules/2.6.33.2-zebra/build/vmlinux

556.00 1.2% dev_queue_xmit /lib/modules/2.6.33.2-zebra/build/vmlinux

 

 

идем дальше, заполняем 1 камень всеми очередями:

/bin/echo 2 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 2 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 8 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 8 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

 

/bin/echo 20 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 20 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 80 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 80 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

 

количество прерываний незначительно увеличилась:, но т.к. ядер стало 4, запас по производительности увеличился вдвое

------------------------------------------------------------------------------------------------------------------------------------------------------------

PerfTop: 3953 irqs/sec kernel:98.9% [1000Hz cycles], (all, 8 CPUs)

------------------------------------------------------------------------------------------------------------------------------------------------------------

 

samples pcnt function DSO

_______ _____ ___________________________ __________________________________________________________________

 

5461.00 8.8% ip_route_input /lib/modules/2.6.33.2-zebra/build/vmlinux

5455.00 8.8% igb_poll /lib/modules/2.6.33.2-zebra/kernel/drivers/net/igb/igb.ko

4288.00 6.9% _raw_spin_lock /lib/modules/2.6.33.2-zebra/build/vmlinux

2989.00 4.8% read_hpet /lib/modules/2.6.33.2-zebra/build/vmlinux

2464.00 4.0% acpi_idle_enter_simple /lib/modules/2.6.33.2-zebra/build/vmlinux

2088.00 3.4% igb_xmit_frame_ring_adv /lib/modules/2.6.33.2-zebra/kernel/drivers/net/igb/igb.ko

2053.00 3.3% __slab_free /lib/modules/2.6.33.2-zebra/build/vmlinux

1993.00 3.2% ip_forward /lib/modules/2.6.33.2-zebra/build/vmlinux

1763.00 2.8% __alloc_skb /lib/modules/2.6.33.2-zebra/build/vmlinux

1615.00 2.6% tg_shares_up /lib/modules/2.6.33.2-zebra/build/vmlinux

1526.00 2.5% get_partial_node /lib/modules/2.6.33.2-zebra/build/vmlinux

1506.00 2.4% skb_release_head_state /lib/modules/2.6.33.2-zebra/build/vmlinux

1506.00 2.4% kfree /lib/modules/2.6.33.2-zebra/build/vmlinux

1363.00 2.2% dev_queue_xmit /lib/modules/2.6.33.2-zebra/build/vmlinux

1250.00 2.0% _raw_spin_lock_irqsave /lib/modules/2.6.33.2-zebra/build/vmlinux

1200.00 1.9% ipt_do_table /lib/modules/2.6.33.2-zebra/kernel/net/ipv4/netfilter/ip_tables.ko

1154.00 1.9% eth_type_trans /lib/modules/2.6.33.2-zebra/build/vmlinux

1061.00 1.7% memset_c /lib/modules/2.6.33.2-zebra/build/vmlinux

915.00 1.5% __slab_alloc /lib/modules/2.6.33.2-zebra/build/vmlinux

903.00 1.5% __kmalloc_node_track_caller /lib/modules/2.6.33.2-zebra/build/vmlinux

847.00 1.4% nommu_map_page /lib/modules/2.6.33.2-zebra/build/vmlinux

816.00 1.3% kmem_cache_alloc_node /lib/modules/2.6.33.2-zebra/build/vmlinux

774.00 1.2% netif_receive_skb /lib/modules/2.6.33.2-zebra/build/vmlinux

764.00 1.2% kmem_cache_free /lib/modules/2.6.33.2-zebra/build/vmlinux

 

как только задеваем ядра с соседнего сокета: (начинаем обсчитывать двумя камнями)

 

/bin/echo 2 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 2 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 8 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 8 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

 

/bin/echo 10 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 10 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 40 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

/bin/echo 40 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity

 

прерывания взлетают на 1000irq/sec:

 

PerfTop: 4906 irqs/sec kernel:96.9% [1000Hz cycles], (all, 8 CPUs)

 

 

оставляю разбивку очередей только к 4-м ядрам одного процессора, и наблюдаем за дропами.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

P.S. load average: 2.76, 2.04, 1.42

(сильно ли поможет замена процов? если менять на XEON X5355 (2,66Ghz/1333/8M) )

 

Cpu0 : 0.0%us, 0.0%sy, 0.0%ni, 3.6%id, 0.0%wa, 0.0%hi, 96.4%si, 0.0%st

Cpu1 : 0.0%us, 0.0%sy, 0.0%ni, 5.1%id, 0.0%wa, 0.7%hi, 94.2%si, 0.0%st

Cpu2 : 0.0%us, 0.7%sy, 0.0%ni, 15.9%id, 0.0%wa, 0.0%hi, 83.3%si, 0.0%st

Cpu3 : 0.0%us, 0.0%sy, 0.0%ni, 17.4%id, 0.0%wa, 0.0%hi, 82.6%si, 0.0%st

Cpu4 : 0.0%us, 0.0%sy, 0.0%ni, 3.6%id, 0.0%wa, 0.0%hi, 96.4%si, 0.0%st

Cpu5 : 0.0%us, 0.0%sy, 0.0%ni, 4.3%id, 0.0%wa, 0.7%hi, 94.9%si, 0.0%st

Cpu6 : 0.0%us, 0.7%sy, 0.0%ni, 21.7%id, 0.0%wa, 0.0%hi, 77.5%si, 0.0%st

Cpu7 : 0.0%us, 0.0%sy, 0.0%ni, 20.3%id, 0.0%wa, 0.0%hi, 79.7%si, 0.0%st

mpstat -P ALL 2

cat /proc/softirqs

cat /proc/interrupts | grep eth

 

в студию плиз.

mpstat -P ALL 2

Linux 2.6.33.2-zebra (zebra) 04/27/2010

 

09:42:41 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s

09:42:43 AM all 0.00 0.00 0.00 0.00 0.31 6.55 0.00 93.14 25297.54

09:42:43 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 0.00

09:42:43 AM 1 0.00 0.00 0.00 0.00 0.49 11.33 0.00 88.18 0.49

09:42:43 AM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 2115747435.47

09:42:43 AM 3 0.00 0.00 0.00 0.00 0.49 12.32 0.00 87.19 2115747433.50

09:42:43 AM 4 0.00 0.00 0.49 0.00 0.00 0.00 0.00 99.51 1.97

09:42:43 AM 5 0.00 0.00 0.00 0.00 0.99 13.79 0.00 85.22 3.45

09:42:43 AM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 2115747432.51

09:42:43 AM 7 0.00 0.00 0.00 0.00 0.49 15.27 0.00 84.24 3.45

09:42:43 AM 8 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

09:42:43 AM 9 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

 

09:42:43 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s

09:42:45 AM all 0.00 0.00 0.12 0.00 0.43 7.79 0.00 91.65 25383.66

09:42:45 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 2.97

09:42:45 AM 1 0.00 0.00 0.00 0.00 0.50 10.89 0.00 88.61 2.97

09:42:45 AM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 2.97

09:42:45 AM 3 0.00 0.00 0.00 0.00 1.49 16.34 0.00 82.18 2126221431.68

09:42:45 AM 4 0.00 0.00 0.50 0.00 0.00 0.00 0.00 99.50 2126221428.71

09:42:45 AM 5 0.00 0.00 0.00 0.00 0.50 18.81 0.00 80.69 2126221430.69

09:42:45 AM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 0.99

09:42:45 AM 7 0.00 0.00 0.00 0.00 0.99 16.34 0.00 82.67 0.50

09:42:45 AM 8 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

09:42:45 AM 9 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

 

 

 

cat /proc/softirqs(в последней настройке - четные цпу по rx логично - не изменяются)

CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7

HI: 0 0 0 0 0 0 0 0

TIMER: 9083666 9107417 9143736 9142805 8845898 8897461 9144369 9144512

NET_TX: 182593 194229 24420 11399 74461 59359 113633 143382

NET_RX: 241824804 249546983 247740025 254654066 240001612 250238677 250813118 260700927

BLOCK: 23486 5424 9620 18863 3362 922 1095 2152

BLOCK_IOPOLL: 0 0 0 0 0 0 0 0

TASKLET: 8485 7873 7309 7443 9695 9360 8304 8395

SCHED: 7344698 6400563 7023082 7081939 5847954 6498865 7074780 6858564

HRTIMER: 0 0 0 0 0 0 0 0

RCU: 8423696 8201371 8543193 8946589 8331399 8161134 8672382 8463999

 

 

cat /proc/interrupts | grep eth (оставил только динамически изменяющиеся прерывания)

59: 0 0 1 0 0 0 0 0 PCI-MSI-edge eth2

60: 0 4714920 4 3 0 0 1 1 PCI-MSI-edge eth2-TxRx-0

61: 4 4750567 0 1 2 0 1 14 PCI-MSI-edge eth2-TxRx-1

62: 0 2 1 4705266 0 0 0 4 PCI-MSI-edge eth2-TxRx-2

63: 2 4 1 4673417 3 0 0 0 PCI-MSI-edge eth2-TxRx-3

66: 0 0 0 0 0 0 0 1 PCI-MSI-edge eth3

67: 2 0 2 0 0 3780613 0 0 PCI-MSI-edge eth3-TxRx-0

68: 8 0 0 0 0 3780403 3 0 PCI-MSI-edge eth3-TxRx-1

69: 0 1 0 3 2 0 0 5742831 PCI-MSI-edge eth3-TxRx-2

70: 1 2 3 2 0 0 0 5459227 PCI-MSI-edge eth3-TxRx-3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Простите, я чего-то не понял или у Вас по mpstat получается 2126221430.69 прерываний за 2 секунды на 3, 4, 5 процах? И почему тогда суммарно их 25383.66 ?

Изменено пользователем Dark_Angel

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

mpstat -P ALL 2

Linux 2.6.33.2-zebra (zebra) 04/27/2010

09:42:41 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s

09:42:43 AM all 0.00 0.00 0.00 0.00 0.31 6.55 0.00 93.14 25297.54

09:42:43 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 0.00

09:42:43 AM 1 0.00 0.00 0.00 0.00 0.49 11.33 0.00 88.18 0.49

09:42:43 AM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 2115747435.47

09:42:43 AM 3 0.00 0.00 0.00 0.00 0.49 12.32 0.00 87.19 2115747433.50

09:42:43 AM 4 0.00 0.00 0.49 0.00 0.00 0.00 0.00 99.51 1.97

09:42:43 AM 5 0.00 0.00 0.00 0.00 0.99 13.79 0.00 85.22 3.45

09:42:43 AM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 2115747432.51

09:42:43 AM 7 0.00 0.00 0.00 0.00 0.49 15.27 0.00 84.24 3.45

09:42:43 AM 8 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

09:42:43 AM 9 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

Нууу эти показания похожи на бред Центоса - там sysstat древнючий и он с новыми ядрами фигню показывает.

Проапгрейдьтесь до sysstat-9.1.1.

Ну и для пущей полноты еще и cat /proc/cpuinfo | grep -E "processor|physical id|apicid|core id" покажите.

 

p.s. А вообще, то складывается такое впечатление, что у Вас с самосборным ядром чего то наверчено.

 

 

Простите, я чего-то не понял или у Вас по mpstat получается 2126221430.69 прерываний за 2 секунды на 3, 4, 5 процах? И почему тогда суммарно их 25383.66 ?
Эт фигня :) - там еще два лишних ядра... :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

sysstat-9.1.1:

 

mpstat -P ALL 2

 

Linux 2.6.33.2-zebra (zebra) 04/27/2010 _x86_64_ (8 CPU)

 

01:02:13 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle

01:02:15 PM all 0.00 0.00 0.06 0.00 0.19 10.91 0.00 0.00 88.84

01:02:15 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

01:02:15 PM 1 0.00 0.00 0.00 0.00 0.00 21.29 0.00 0.00 78.71

01:02:15 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

01:02:15 PM 3 0.00 0.00 0.00 0.00 0.00 24.26 0.00 0.00 75.74

01:02:15 PM 4 0.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 99.50

01:02:15 PM 5 0.00 0.00 0.00 0.00 0.99 18.32 0.00 0.00 80.69

01:02:15 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

01:02:15 PM 7 0.00 0.00 0.00 0.00 0.50 23.27 0.00 0.00 76.24

 

01:02:15 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle

01:02:17 PM all 4.51 0.00 0.06 0.00 0.31 13.58 0.00 0.00 81.54

01:02:17 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

01:02:17 PM 1 0.00 0.00 0.00 0.00 0.00 29.06 0.00 0.00 70.94

01:02:17 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

01:02:17 PM 3 0.00 0.00 0.00 0.00 0.99 22.66 0.00 0.00 76.35

01:02:17 PM 4 0.00 0.00 0.99 0.00 0.00 0.00 0.00 0.00 99.01

01:02:17 PM 5 35.96 0.00 0.00 0.00 0.00 27.59 0.00 0.00 36.45

01:02:17 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

01:02:17 PM 7 0.00 0.00 0.00 0.00 1.48 30.05 0.00 0.00 68.47

 

mpstat -I SUM -P ALL 2

01:09:33 PM CPU intr/s

01:09:35 PM all 25443.41

01:09:35 PM 0 26.83

01:09:35 PM 1 6174.63

01:09:35 PM 2 27.32

01:09:35 PM 3 6187.32

01:09:35 PM 4 26.83

01:09:35 PM 5 6140.49

01:09:35 PM 6 27.32

01:09:35 PM 7 6123.41

 

01:09:35 PM CPU intr/s

01:09:37 PM all 25533.83

01:09:37 PM 0 28.36

01:09:37 PM 1 6199.00

01:09:37 PM 2 28.36

01:09:37 PM 3 6218.91

01:09:37 PM 4 28.86

01:09:37 PM 5 6152.74

01:09:37 PM 6 28.36

01:09:37 PM 7 6139.30

 

 

 

 

cat /proc/cpuinfo | grep -E "processor|physical id|apicid|core id"

processor : 0

physical id : 0

core id : 0

apicid : 0

initial apicid : 0

processor : 1

physical id : 0

core id : 2

apicid : 2

initial apicid : 2

processor : 2

physical id : 1

core id : 0

apicid : 4

initial apicid : 4

processor : 3

physical id : 1

core id : 2

apicid : 6

initial apicid : 6

processor : 4

physical id : 0

core id : 1

apicid : 1

initial apicid : 1

processor : 5

physical id : 0

core id : 3

apicid : 3

initial apicid : 3

processor : 6

physical id : 1

core id : 1

apicid : 5

initial apicid : 5

processor : 7

physical id : 1

core id : 3

apicid : 7

initial apicid : 7

 

 

Изменено пользователем dbask

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

sysstat-9.1.1:

mpstat -P ALL 2

Linux 2.6.33.2-zebra (zebra) 04/27/2010 _x86_64_ (8 CPU)

01:02:13 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle

01:02:15 PM all 0.00 0.00 0.06 0.00 0.19 10.91 0.00 0.00 88.84

01:02:15 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

01:02:15 PM 1 0.00 0.00 0.00 0.00 0.00 21.29 0.00 0.00 78.71

01:02:15 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

01:02:15 PM 3 0.00 0.00 0.00 0.00 0.00 24.26 0.00 0.00 75.74

01:02:15 PM 4 0.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 99.50

01:02:15 PM 5 0.00 0.00 0.00 0.00 0.99 18.32 0.00 0.00 80.69

01:02:15 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

01:02:15 PM 7 0.00 0.00 0.00 0.00 0.50 23.27 0.00 0.00 76.24

 

mpstat -I SUM -P ALL 2

01:09:33 PM CPU intr/s

01:09:35 PM all 25443.41

01:09:35 PM 0 26.83

01:09:35 PM 1 6174.63

01:09:35 PM 2 27.32

01:09:35 PM 3 6187.32

01:09:35 PM 4 26.83

01:09:35 PM 5 6140.49

01:09:35 PM 6 27.32

01:09:35 PM 7 6123.41

Насколько я понимаю, то достаточно пристойные показатели.

Сколько в этот момент было трафика и пакетов в секунду?

 

cat /proc/cpuinfo | grep -E "processor|physical id|apicid|core id"

processor : 0	physical id : 0		core id : 0	apicid : 0
processor : 1	physical id : 0		core id : 2	apicid : 2
processor : 2	physical id : 1		core id : 0	apicid : 4
processor : 3	physical id : 1		core id : 2	apicid : 6
processor : 4	physical id : 0		core id : 1	apicid : 1
processor : 5	physical id : 0		core id : 3	apicid : 3
processor : 6	physical id : 1		core id : 1	apicid : 5
processor : 7	physical id : 1		core id : 3	apicid : 7

В вашем случае получается что работают 3 и 4 ядра обеих процессоров.

 

p.s.

cat /usr/src/linux-2.6.33.2 /.config | grep CONFIG_HZ

cat /usr/src/linux-2.6.33.2 /.config | grep CONFIG_PREEMPT

?

 

Ну и дальше наверное только oprofile...

Изменено пользователем Jugernault

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну и дальше наверное только oprofile...
а разве много нового после perf top покажет?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.