adminkg Опубликовано 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? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vurd Опубликовано 17 февраля, 2012 · Жалоба Карты какие? Шина PCI? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adminkg Опубликовано 17 февраля, 2012 · Жалоба Карты какие? Шина PCI? Карта интеловская e1000 Шина PCIe Тут еще одну вещь странную обнаружили. На коммутаторе стоит кЕтайский SFP модуль. На вскидку прикинули, что это началось после того, как его установили. Завтра попробуем заменить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zurz Опубликовано 17 февраля, 2012 · Жалоба чем ещё нагружена машина? NAT? на ifb имеет смысл заворачивать только входящий исходящий можно (и нужно, с точки зрения производительности) шейпить на нативных интерфейсах, без костылей в виде ifb Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 17 февраля, 2012 · Жалоба У нас ни IMQ, ни IFB никак не влияют на трафик или загрузку железа, упирается в интерфейсы. Ищите кривую настройку шейпера или действительно, кривое железо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Alex/AT Опубликовано 18 февраля, 2012 (изменено) · Жалоба Какие конкретно карточки? 82574L или прочие однопоточки? Что с MSI-X? Скорее всего вам нужно RPS, без него уткнетесь в процы, на которые приходят прерывания. cat /proc/interrupts и вывод top с разверткой по ядрам покажите, естественно, в ЧНН По-хорошему, ifb - это всего лишь дополнительный этап на пути следования skb, серьезной нагрузки не привносит. Изменено 18 февраля, 2012 пользователем Alex/AT Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adminkg Опубликовано 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 низкий... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adminkg Опубликовано 18 февраля, 2012 (изменено) · Жалоба чем ещё нагружена машина? NAT? на ifb имеет смысл заворачивать только входящий исходящий можно (и нужно, с точки зрения производительности) шейпить на нативных интерфейсах, без костылей в виде ifb Да, нат присутствует, а также БГП4 и нетфлоу экспорт. По поводу шейпа на нативных интерфейсах согласен, но в данном случае не получится, т.к. на исход у меня есть несколько разных линков. Изменено 18 февраля, 2012 пользователем adminkg Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Alex/AT Опубликовано 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 Да, карточки однопоточки. Причём у вас явно трафик бегает в основном только между eth0 и eth1 (судя по привязке IRQ). MSI-X не замечено, матерь явно не серверная, так что многопоточки вам ставить некуда. CPU1 перегружен, обновляйте ядро и включайте RPS. Если интересуют стабильные ядра - в RH 6.2 ядре RPS есть, но там все еще надо накатывать патчик чтобы он нормально заводился. К слову, у Вас очень много ресурсов забирает аккаунтинг трафика. Попробуйте его временно выключить, посмотрите - изменится ли что-либо. Изменено 18 февраля, 2012 пользователем Alex/AT Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 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 очереди и раскидайте их по ядрам, поможет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 18 февраля, 2012 · Жалоба Да, карточки однопоточки. Причём у вас явно трафик бегает в основном только между eth0 и eth1 (судя по привязке IRQ). MSI-X не замечено, матерь явно не серверная, так что многопоточки вам ставить некуда. Вообще-то i350 это тот же ET, очереди у него есть. Да и от матери для работы очередей требуется только поддержка MSI, а это обеспечивают даже древние десктопные чипсеты. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Alex/AT Опубликовано 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 карты "обрезаются" до однопоточек. Поэтому в данном случае вряд ли удастся "добавить очереди" так вот просто. Изменено 18 февраля, 2012 пользователем Alex/AT Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adminkg Опубликовано 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 драйвер юзается. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adminkg Опубликовано 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 очереди и раскидайте их по ядрам, поможет. А можно ли "размазать" нагрузку от ната и шейпа по ядрам? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 18 февраля, 2012 (изменено) · Жалоба Тут еще фокус в том, что интеловские драйвера (e1000e/igb) поддерживают многопоточки только с MSI-X, в случае MSI карты "обрезаются" до однопоточек. Поэтому в данном случае вряд ли удастся "добавить очереди" так вот просто. В хозяйстве куча тазиков(NAS-сервера) собраных на десктопных матерях с igb-сетевками, очереди работают, карта говорит что работает в режиме MSI. А можно ли "размазать" нагрузку от ната и шейпа по ядрам? Можно, и нужно! Сейчас у вас сетевки настроены на использование одной очереди - сделайте 4 очереди на порт и будет счастье. Изменено 18 февраля, 2012 пользователем kayot Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adminkg Опубликовано 18 февраля, 2012 · Жалоба Тут еще фокус в том, что интеловские драйвера (e1000e/igb) поддерживают многопоточки только с MSI-X, в случае MSI карты "обрезаются" до однопоточек. Поэтому в данном случае вряд ли удастся "добавить очереди" так вот просто. В хозяйстве куча тазиков(NAS-сервера) собраных на десктопных матерях с igb-сетевками, очереди работают, карта говорит что работает в режиме MSI. А можно ли "размазать" нагрузку от ната и шейпа по ядрам? Можно, и нужно! Сейчас у вас сетевки настроены на использование одной очереди - сделайте 4 очереди на порт и будет счастье. Я извиняюсь, а как это сделать? В какую сторону копать? Я про 4 очереди. Я так понимаю Вы предлагаете сделать 4 очереди на порт, по 2 на прием и по 2 на передачу? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 18 февраля, 2012 (изменено) · Жалоба Нет, 4 совмещенных очереди как у вас сейчас. Как изменить число очередей - зависит от дистрибутива, в общем случае достаточно создать файлик etc/modprobe.d/igb.conf со строчкой options igb RSS=4,4,4,4 Ну и в дальнейшем привязать появившиеся прерывания к ядрам через smp_affinity. Изменено 18 февраля, 2012 пользователем kayot Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adminkg Опубликовано 18 февраля, 2012 · Жалоба Нет, 4 совмещенных очереди как у вас сейчас. Как изменить число очередей - зависит от дистрибутива, в общем случае достаточно создать файлик etc/modprobe.d/igb.conf со строчкой options igb RSS=4,4,4,4 Ну и в дальнейшем привязать появившиеся прерывания к ядрам через smp_affinity. :) т.е. банально прогрузить драйвер с опциями. Ок, понял, спасибо за подсказку, попробую сегодня обязательно. А как распределить нагрузку от НАТа и шейпа? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 18 февраля, 2012 · Жалоба Дык она сама и распределится, если очереди нормально по ядрам размажете. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adminkg Опубликовано 18 февраля, 2012 · Жалоба Дык она сама и распределится, если очереди нормально по ядрам размажете. Спасибо! Действительно помогло, и скорость взлетела в разы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Alex/AT Опубликовано 19 февраля, 2012 · Жалоба Т.е. на I350 RSS работает с MSI и конкретными опциями драйвера, верно? Подтвердите, пожалуйста, нужно для запоминания :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 19 февраля, 2012 (изменено) · Жалоба Не совсем :) Для работы карт с очередями не нужны серверные матери с 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ы). Изменено 19 февраля, 2012 пользователем kayot Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...