alexpro Опубликовано 25 декабря, 2009 (изменено) · Жалоба micros Цитирую сам себя (пост № 170 от вчерашнего дня): Получил сетевушку Intel Pro/1000ET Dual Port. Все завелось, как и хотелось, даже больше. Хотел сделать 2 очереди на интерфейс, а она делает 4. Ну, это ладно, пусть будет 4.Естественно, MSI-X, только прерывания на моей сетевой можно раскидывать не только на RX/TX (толку от этого очень мало), но и сделать несколько очередей RX/TX, каждая их которых будет на отдельном прерывании, и соответственно, будет нагружать отдельное ядро. Вопрос в том, как эти очереди будут себя вести в плане softirq (HTB, iptables и пр.) Изменено 25 декабря, 2009 пользователем alexpro Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alexpro Опубликовано 25 декабря, 2009 · Жалоба Кстати... Еще одно заметил ночью с Pro/1000 ET.: 1. Сетевая down Когда делаешь ifconfig eth0, txqueuelen: 1000, как и у всех сетевых по умолчанию. 2. Сетевая up (100Mbit) txqueuelen: 100 (???) 3. Cетевая up (кабель не подключен) txqueuelen: 1000 Если включаешь кабель, опять txqueuelen: 100. Лечится только принудительным указанием этого параметра. Ни с какой другой сетевой и никогда таких чудес у меня не было. Чуть позже попробую на гигабите. Совершенно непонятно, почему так происходит. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
voron Опубликовано 26 декабря, 2009 · Жалоба А куда подключена сетевая, когда она подключается на 100мбит? Случайно не в гигабитный порт, зажатый на 100мбит? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alexpro Опубликовано 26 декабря, 2009 · Жалоба 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 по ядрам добился. Посмотрим, что будет сегодня в пиковое время. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NNV Опубликовано 27 декабря, 2009 · Жалоба Добрый день! Кто что посоветуе по сборке ядра? 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-ю сетевуху задействовать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Valaskor Опубликовано 3 января, 2010 (изменено) · Жалоба Кто нибудь знает, как tx-очередь выбирается? А то все прерывания идут на tx-1 (причем на такое на всех сетевых), соответственно одно из ядер в полтора раза больше нагружено. Изменено 4 января, 2010 пользователем Valaskor Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
voron Опубликовано 3 января, 2010 (изменено) · Жалоба А то все прерывания идут на tx-1 (причем на такое на всех сетевых), соответственно одно из ядер в полтора раза больше нагружено. Возможно, поможет смена исходящего шедулера на NET_SCH_MULTIQ на всех интерфейсах. Возможно, как-то так tc qdisc add dev $DEV root handle 1:0 multiq Как work-around раскидайте tx-1 (и соответствующие rx-1) между ядрами. Если ядер больше чем сетевых, то первые ядра оставьте свободными. Изменено 3 января, 2010 пользователем voron Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
2MEX2 Опубликовано 19 января, 2010 (изменено) · Жалоба Такая проблема, имею сервер с сетевой двух портовой под управлением 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 всё резалось точно. Изменено 19 января, 2010 пользователем 2MEX2 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alexpro Опубликовано 19 января, 2010 · Жалоба 2MEX2 Странно. У меня Xeon 3430, такая же сетевушка (82576), и такая же нарезка скорости (HTB). Все точно, никаких вопросов. Под очередь применяется pfifo. Что смущает в /proc/interrupts: у меня каждое прерывание сидит на своем ядре, а в показанном выше случае, я так понял, прерывания размазаны по всем ядрам. Не знаю, может ли это повлиять на точность шейпера... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
2MEX2 Опубликовано 19 января, 2010 · Жалоба Сменил дрова на 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) Может это ещё поможет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
2MEX2 Опубликовано 20 января, 2010 · Жалоба Также сделал следующее: #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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Nic Опубликовано 20 января, 2010 · Жалоба может, с таймерами что-то не так? и ядро можно попробовать другое поставить. это какое-то совсем древнее. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dbask Опубликовано 26 апреля, 2010 (изменено) · Жалоба помогите плиз разобраться с дропами, имеем тупой 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 Изменено 26 апреля, 2010 пользователем dbask Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
voron Опубликовано 26 апреля, 2010 · Жалоба А что говорит perf top ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 26 апреля, 2010 (изменено) · Жалоба Да ладно, 8 ядер, 82576 и на 150Kpps захлеб? Наверняка у Вас там шейперы и iptables есть. И, кстати, Вы не указали, это суммарный трафик по всем Вланам или только трафик в рамках одного Влана или трафик в рамках одного интерфейса и т.п. Изменено 26 апреля, 2010 пользователем Dark_Angel Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dbask Опубликовано 26 апреля, 2010 (изменено) · Жалоба 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 Изменено 26 апреля, 2010 пользователем dbask Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 26 апреля, 2010 (изменено) · Жалоба Да, то что у Вас пустой фаер и нет шейперов - видно из перфтопа. А вот откуда такое количество тиков у функций ядра - надо курить. Очевидно, что потери возникают от того, что перегружены процессоры и они не успевают разгребать очередь пакетов входя в softirq. Могу констатировать, что на пустой машине такое поведение просто возмутительно, потому что 120Kpps ( 520Mbit ) прожевывается одним процессором на 82566DM. Там еще есть 2К правил на шейпинг без хеширования, 200 правил фаервола и НАТ. Дропы есть, но их мало. А тут 82576, MSI-X ( он же заводится у Вас? ) и 150 Kpps и приехали. Попробуйте начать диагностику с убирания LLIPort, особенно если на 80ый порт идет много пакетов. Каких-нибудь 20-30К сделают Вам уже не приятно. Затем надо искать функции по перфу и смотреть кто за что отвечает. Вполне реально, что нужно будет откатываться по ядрам назад, т.к. есть более старые ядра, с 82576 и там такого бреда нет даже близко. Жует всё на раз. Драйвер 2.1.9. Еще поставьте 2000 прерываний на очередь, тоже снимет нагрузку немного. Далее отписывайтесь по результатам - будем смотреть. Мне самому интересно найти причину. Изменено 26 апреля, 2010 пользователем Dark_Angel Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Jugernault Опубликовано 27 апреля, 2010 · Жалоба 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 в студию плиз. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dbask Опубликовано 27 апреля, 2010 · Жалоба заметил интересную закономерность: при прибивании потоков к ядрам как указано выше (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-м ядрам одного процессора, и наблюдаем за дропами. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dbask Опубликовано 27 апреля, 2010 · Жалоба 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 27 апреля, 2010 (изменено) · Жалоба Простите, я чего-то не понял или у Вас по mpstat получается 2126221430.69 прерываний за 2 секунды на 3, 4, 5 процах? И почему тогда суммарно их 25383.66 ? Изменено 27 апреля, 2010 пользователем Dark_Angel Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Jugernault Опубликовано 27 апреля, 2010 · Жалоба mpstat -P ALL 2Linux 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 ?Эт фигня :) - там еще два лишних ядра... :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dbask Опубликовано 27 апреля, 2010 (изменено) · Жалоба 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 Изменено 27 апреля, 2010 пользователем dbask Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Jugernault Опубликовано 27 апреля, 2010 (изменено) · Жалоба 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... Изменено 27 апреля, 2010 пользователем Jugernault Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
voron Опубликовано 27 апреля, 2010 · Жалоба Ну и дальше наверное только oprofile...а разве много нового после perf top покажет? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...