adminkg Posted February 17, 2012 Posted February 17, 2012 OS: Debian Squeeze Core: 2.6.32-5-686 В системе поднято 4 виртуальных устройства ifb ifb0 -> входящий трафик принимает для определенной сети 1 ifb1 -> исходящий трафик принимает для определенной сети 1 ifb2 -> входящий трафик принимает для определенной сети 2 ifb3 -> исходящий трафик принимает для определенной сети 2 На ifb интерфейсах использую HTB. Заметил особенность, что скорость в часы пики не превышает 250 мегабит в одну сторону. (Линк гигабитный) Пробовал полностью грохать htb и перенаправлять трафик на ifb, скорость всеравно не растет, а держится в районе 250 мегабит. Особенность ifb? В гугле находил доку, в которой сказано, что скорость падает на 20-30 процентов при завороте на ifb. На моем ядре надо накладывать патчи для IMQ? Вставить ник Quote
adminkg Posted February 17, 2012 Author Posted February 17, 2012 Карты какие? Шина PCI? Карта интеловская e1000 Шина PCIe Тут еще одну вещь странную обнаружили. На коммутаторе стоит кЕтайский SFP модуль. На вскидку прикинули, что это началось после того, как его установили. Завтра попробуем заменить. Вставить ник Quote
zurz Posted February 17, 2012 Posted February 17, 2012 чем ещё нагружена машина? NAT? на ifb имеет смысл заворачивать только входящий исходящий можно (и нужно, с точки зрения производительности) шейпить на нативных интерфейсах, без костылей в виде ifb Вставить ник Quote
kayot Posted February 17, 2012 Posted February 17, 2012 У нас ни IMQ, ни IFB никак не влияют на трафик или загрузку железа, упирается в интерфейсы. Ищите кривую настройку шейпера или действительно, кривое железо. Вставить ник Quote
Alex/AT Posted February 18, 2012 Posted February 18, 2012 (edited) Какие конкретно карточки? 82574L или прочие однопоточки? Что с MSI-X? Скорее всего вам нужно RPS, без него уткнетесь в процы, на которые приходят прерывания. cat /proc/interrupts и вывод top с разверткой по ядрам покажите, естественно, в ЧНН По-хорошему, ifb - это всего лишь дополнительный этап на пути следования skb, серьезной нагрузки не привносит. Edited February 18, 2012 by Alex/AT Вставить ник Quote
adminkg Posted February 18, 2012 Author Posted February 18, 2012 Какие конкретно карточки? 82574L или прочие однопоточки? Что с MSI-X? Скорее всего вам нужно RPS, без него уткнетесь в процы, на которые приходят прерывания. cat /proc/interrupts и вывод top с разверткой по ядрам покажите, естественно, в ЧНН По-хорошему, ifb - это всего лишь дополнительный этап на пути следования skb, серьезной нагрузки не привносит. Карточка I350 T4 Прерывания раскидал по процессорам (4-х ядерник). Нагрузка не превышает 50% в тот момент когда канал упирается в 250 мегабит. Что такое ЧНН? # cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 770 0 0 0 IO-APIC-edge timer 1: 67 0 0 8395 IO-APIC-edge i8042 8: 1 0 0 0 IO-APIC-edge rtc0 9: 48 0 0 0 IO-APIC-fasteoi acpi 18: 0 0 0 0 IO-APIC-fasteoi ahci 19: 0 0 0 0 IO-APIC-fasteoi pata_jmicron 21: 2187 0 110066 0 IO-APIC-fasteoi ata_piix, ata_piix 24: 421953814 0 0 0 HPET_MSI-edge hpet2 25: 0 738065128 0 0 HPET_MSI-edge hpet3 26: 0 0 430040756 0 HPET_MSI-edge hpet4 27: 0 0 0 406105626 HPET_MSI-edge hpet5 35: 1 0 0 0 PCI-MSI-edge eth0 36: 18710991 0 0 2226015942 PCI-MSI-edge eth0-TxRx-0 37: 1 0 0 0 PCI-MSI-edge eth1 38: 19591884 1571989033 0 0 PCI-MSI-edge eth1-TxRx-0 39: 1 0 0 0 PCI-MSI-edge eth2 40: 1026 91855 53290592 0 PCI-MSI-edge eth2-TxRx-0 41: 1 0 0 0 PCI-MSI-edge eth3 42: 8246458 0 647726395 0 PCI-MSI-edge eth3-TxRx-0 NMI: 0 0 0 0 Non-maskable interrupts LOC: 85 70 44 18 Local timer interrupts SPU: 0 0 0 0 Spurious interrupts PMI: 0 0 0 0 Performance monitoring interrupts PND: 0 0 0 0 Performance pending work RES: 59286 114765 10831 14566 Rescheduling interrupts CAL: 2768 3277 2299 2217 Function call interrupts TLB: 15134 26719 18878 23131 TLB shootdowns TRM: 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 Threshold APIC interrupts MCE: 0 0 0 0 Machine check exceptions MCP: 725 725 725 725 Machine check polls ERR: 0 MIS: 0 top - 13:59:30 up 2 days, 12:21, 1 user, load average: 0.67, 0.39, 0.22Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie Cpu0 : 1.0%us, 2.0%sy, 0.0%ni, 97.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu1 : 2.9%us, 1.9%sy, 0.0%ni, 10.7%id, 0.0%wa, 1.9%hi, 82.5%si, 0.0%st Cpu2 : 0.0%us, 0.0%sy, 0.0%ni, 93.1%id, 0.0%wa, 0.0%hi, 6.9%si, 0.0%st Cpu3 : 0.0%us, 0.0%sy, 0.0%ni, 65.4%id, 0.0%wa, 0.0%hi, 34.6%si, 0.0%st Mem: 1031012k total, 405992k used, 625020k free, 87712k buffers Swap: 1000440k total, 0k used, 1000440k free, 139140k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1957 root 5 -15 99132 30m 14m S 59 3.0 605:53.52 ipcad 7 root 20 0 0 0 0 S 14 0.0 413:04.99 ksoftirqd/1 16 root 20 0 0 0 0 S 1 0.0 24:09.95 events/1 1 root 20 0 2032 744 652 S 0 0.1 0:02.02 init 2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0 0.0 0:00.10 migration/0 4 root 20 0 0 0 0 S 0 0.0 0:53.36 ksoftirqd/0 5 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/0 6 root RT 0 0 0 0 S 0 0.0 0:00.68 migration/1 8 root RT 0 0 0 0 S 0 0.0 0:01.40 watchdog/1 9 root RT 0 0 0 0 S 0 0.0 0:00.20 migration/2 10 root 20 0 0 0 0 S 0 0.0 2:31.10 ksoftirqd/2 11 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/2 12 root RT 0 0 0 0 S 0 0.0 0:00.17 migration/3 13 root 20 0 0 0 0 S 0 0.0 1:39.05 ksoftirqd/3 14 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/3 15 root 20 0 0 0 0 S 0 0.0 0:09.76 events/0 17 root 20 0 0 0 0 S 0 0.0 0:01.02 events/2 18 root 20 0 0 0 0 S 0 0.0 0:23.83 events/3 19 root 20 0 0 0 0 S 0 0.0 0:00.00 cpuset 20 root 20 0 0 0 0 S 0 0.0 0:00.00 khelper 21 root 20 0 0 0 0 S 0 0.0 0:00.00 netns 22 root 20 0 0 0 0 S 0 0.0 0:00.00 async/mgr Хм... странно, сейчас вроде бы нагрузки нету, а на втором процессоре idle низкий... Вставить ник Quote
adminkg Posted February 18, 2012 Author Posted February 18, 2012 (edited) чем ещё нагружена машина? NAT? на ifb имеет смысл заворачивать только входящий исходящий можно (и нужно, с точки зрения производительности) шейпить на нативных интерфейсах, без костылей в виде ifb Да, нат присутствует, а также БГП4 и нетфлоу экспорт. По поводу шейпа на нативных интерфейсах согласен, но в данном случае не получится, т.к. на исход у меня есть несколько разных линков. Edited February 18, 2012 by adminkg Вставить ник Quote
Alex/AT Posted February 18, 2012 Posted February 18, 2012 (edited) Cpu1 : 2.9%us, 1.9%sy, 0.0%ni, 10.7%id, 0.0%wa, 1.9%hi, 82.5%si, 0.0%st Да, карточки однопоточки. Причём у вас явно трафик бегает в основном только между eth0 и eth1 (судя по привязке IRQ). MSI-X не замечено, матерь явно не серверная, так что многопоточки вам ставить некуда. CPU1 перегружен, обновляйте ядро и включайте RPS. Если интересуют стабильные ядра - в RH 6.2 ядре RPS есть, но там все еще надо накатывать патчик чтобы он нормально заводился. К слову, у Вас очень много ресурсов забирает аккаунтинг трафика. Попробуйте его временно выключить, посмотрите - изменится ли что-либо. Edited February 18, 2012 by Alex/AT Вставить ник Quote
kayot Posted February 18, 2012 Posted February 18, 2012 Судя по "Cpu1 : 2.9%us, 1.9%sy, 0.0%ni, 10.7%id, 0.0%wa, 1.9%hi, 82.5%si, 0.0%st" - NAT/shape у вас делается на 1 ядре, все упирается в CPU. Добавьте сетевке привязанной к cpu1 4 очереди и раскидайте их по ядрам, поможет. Вставить ник Quote
kayot Posted February 18, 2012 Posted February 18, 2012 Да, карточки однопоточки. Причём у вас явно трафик бегает в основном только между eth0 и eth1 (судя по привязке IRQ). MSI-X не замечено, матерь явно не серверная, так что многопоточки вам ставить некуда. Вообще-то i350 это тот же ET, очереди у него есть. Да и от матери для работы очередей требуется только поддержка MSI, а это обеспечивают даже древние десктопные чипсеты. Вставить ник Quote
Alex/AT Posted February 18, 2012 Posted February 18, 2012 (edited) Автор же писал, что e1000e, а не igb? Либо автор пишет не то, либо карточка "не та". Хотелось бы вывод: ethtool -i eth0 ; ethtool -i eth1 ; ethtool -i eth2 ; ethtool -i eth3 Насчет I350 - да, действительно, это многопоточки, и обслуживаются они igb, а не e1000e. Правда потоков там всего до 8 на порт, а у 82576 - до 16, но в нашем случае это не суть. Тут еще фокус в том, что интеловские драйвера (e1000e/igb) поддерживают многопоточки только с MSI-X, в случае MSI карты "обрезаются" до однопоточек. Поэтому в данном случае вряд ли удастся "добавить очереди" так вот просто. Edited February 18, 2012 by Alex/AT Вставить ник Quote
adminkg Posted February 18, 2012 Author Posted February 18, 2012 Автор же писал, что e1000e, а не igb? Либо автор пишет не то, либо карточка "не та". Хотелось бы вывод: ethtool -i eth0 ; ethtool -i eth1 ; ethtool -i eth2 ; ethtool -i eth3 Насчет I350 - да, действительно, это многопоточки, и обслуживаются они igb, а не e1000e. Правда потоков там всего до 8 на порт, а у 82576 - до 16, но в нашем случае это не суть. Тут еще фокус в том, что интеловские драйвера (e1000e/igb) поддерживают многопоточки только с MSI-X, в случае MSI карты "обрезаются" до однопоточек. Поэтому в данном случае вряд ли удастся "добавить очереди" так вот просто. Да, я затупил. Действительно igb драйвер юзается. Вставить ник Quote
adminkg Posted February 18, 2012 Author Posted February 18, 2012 Судя по "Cpu1 : 2.9%us, 1.9%sy, 0.0%ni, 10.7%id, 0.0%wa, 1.9%hi, 82.5%si, 0.0%st" - NAT/shape у вас делается на 1 ядре, все упирается в CPU. Добавьте сетевке привязанной к cpu1 4 очереди и раскидайте их по ядрам, поможет. А можно ли "размазать" нагрузку от ната и шейпа по ядрам? Вставить ник Quote
kayot Posted February 18, 2012 Posted February 18, 2012 (edited) Тут еще фокус в том, что интеловские драйвера (e1000e/igb) поддерживают многопоточки только с MSI-X, в случае MSI карты "обрезаются" до однопоточек. Поэтому в данном случае вряд ли удастся "добавить очереди" так вот просто. В хозяйстве куча тазиков(NAS-сервера) собраных на десктопных матерях с igb-сетевками, очереди работают, карта говорит что работает в режиме MSI. А можно ли "размазать" нагрузку от ната и шейпа по ядрам? Можно, и нужно! Сейчас у вас сетевки настроены на использование одной очереди - сделайте 4 очереди на порт и будет счастье. Edited February 18, 2012 by kayot Вставить ник Quote
adminkg Posted February 18, 2012 Author Posted February 18, 2012 Тут еще фокус в том, что интеловские драйвера (e1000e/igb) поддерживают многопоточки только с MSI-X, в случае MSI карты "обрезаются" до однопоточек. Поэтому в данном случае вряд ли удастся "добавить очереди" так вот просто. В хозяйстве куча тазиков(NAS-сервера) собраных на десктопных матерях с igb-сетевками, очереди работают, карта говорит что работает в режиме MSI. А можно ли "размазать" нагрузку от ната и шейпа по ядрам? Можно, и нужно! Сейчас у вас сетевки настроены на использование одной очереди - сделайте 4 очереди на порт и будет счастье. Я извиняюсь, а как это сделать? В какую сторону копать? Я про 4 очереди. Я так понимаю Вы предлагаете сделать 4 очереди на порт, по 2 на прием и по 2 на передачу? Вставить ник Quote
kayot Posted February 18, 2012 Posted February 18, 2012 (edited) Нет, 4 совмещенных очереди как у вас сейчас. Как изменить число очередей - зависит от дистрибутива, в общем случае достаточно создать файлик etc/modprobe.d/igb.conf со строчкой options igb RSS=4,4,4,4 Ну и в дальнейшем привязать появившиеся прерывания к ядрам через smp_affinity. Edited February 18, 2012 by kayot Вставить ник Quote
adminkg Posted February 18, 2012 Author Posted February 18, 2012 Нет, 4 совмещенных очереди как у вас сейчас. Как изменить число очередей - зависит от дистрибутива, в общем случае достаточно создать файлик etc/modprobe.d/igb.conf со строчкой options igb RSS=4,4,4,4 Ну и в дальнейшем привязать появившиеся прерывания к ядрам через smp_affinity. :) т.е. банально прогрузить драйвер с опциями. Ок, понял, спасибо за подсказку, попробую сегодня обязательно. А как распределить нагрузку от НАТа и шейпа? Вставить ник Quote
kayot Posted February 18, 2012 Posted February 18, 2012 Дык она сама и распределится, если очереди нормально по ядрам размажете. Вставить ник Quote
adminkg Posted February 18, 2012 Author Posted February 18, 2012 Дык она сама и распределится, если очереди нормально по ядрам размажете. Спасибо! Действительно помогло, и скорость взлетела в разы. Вставить ник Quote
Alex/AT Posted February 19, 2012 Posted February 19, 2012 Т.е. на I350 RSS работает с MSI и конкретными опциями драйвера, верно? Подтвердите, пожалуйста, нужно для запоминания :) Вставить ник Quote
kayot Posted February 19, 2012 Posted February 19, 2012 (edited) Не совсем :) Для работы карт с очередями не нужны серверные матери с MSI-X, очереди работают из коробки на любой системе. У человека IGB автоматом включил по 1 очереди, т.к. портов 4 и ядер в системе 4, опциями мы лишь отключили эту автоматику. [kayot@nas2 ~]$ cat /proc/interrupts 28: 2 0 0 0 PCI-MSI-edge eth0 29: 3660285519 24611 26276 26227 PCI-MSI-edge eth0-TxRx-0 30: 15815 4139493016 14145 14131 PCI-MSI-edge eth0-TxRx-1 31: 1 0 1 0 PCI-MSI-edge eth1 32: 1100 1127 1118 2640568395 PCI-MSI-edge eth1-TxRx-0 Двухголовые 82576, машина с десктопной матерью и Intel® Core2 Quad CPU Q9450 @ 2.66GHz [kayot@nas3 ~]$ cat /proc/interrupts 31: 1 0 0 0 PCI-MSI-edge eth0 32: 804248508 0 0 0 PCI-MSI-edge eth0-TxRx-0 33: 15 4172009216 0 0 PCI-MSI-edge eth0-TxRx-1 34: 8 0 0 0 PCI-MSI-edge eth1 35: 17 0 0 3586533400 PCI-MSI-edge eth1-TxRx-0 Соседний сервер, десктопная мать но уже под санди: Intel® Core i5-2500 CPU @ 3.30GHz Везде выделено 2 очереди для eth0 и 1 очередь для eth1(pppoe-BRASы). Edited February 19, 2012 by kayot Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.