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

IFB падение скорости.

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?

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


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

Карты какие? Шина PCI?

Карта интеловская e1000

Шина PCIe

 

Тут еще одну вещь странную обнаружили. На коммутаторе стоит кЕтайский SFP модуль. На вскидку прикинули, что это началось после того, как его установили. Завтра попробуем заменить.

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


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

чем ещё нагружена машина?

NAT?

 

на ifb имеет смысл заворачивать только входящий

исходящий можно (и нужно, с точки зрения производительности) шейпить на нативных интерфейсах, без костылей в виде ifb

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


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

У нас ни IMQ, ни IFB никак не влияют на трафик или загрузку железа, упирается в интерфейсы. Ищите кривую настройку шейпера или действительно, кривое железо.

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


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

Какие конкретно карточки? 82574L или прочие однопоточки? Что с MSI-X?

Скорее всего вам нужно RPS, без него уткнетесь в процы, на которые приходят прерывания.

 

cat /proc/interrupts и вывод top с разверткой по ядрам покажите, естественно, в ЧНН

 

По-хорошему, ifb - это всего лишь дополнительный этап на пути следования skb, серьезной нагрузки не привносит.

Изменено пользователем Alex/AT

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


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

Какие конкретно карточки? 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.22

Tasks: 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 низкий...

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


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

чем ещё нагружена машина?

NAT?

 

на ifb имеет смысл заворачивать только входящий

исходящий можно (и нужно, с точки зрения производительности) шейпить на нативных интерфейсах, без костылей в виде ifb

Да, нат присутствует, а также БГП4 и нетфлоу экспорт.

По поводу шейпа на нативных интерфейсах согласен, но в данном случае не получится, т.к. на исход у меня есть несколько разных линков.

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

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


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

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 есть, но там все еще надо накатывать патчик чтобы он нормально заводился.

К слову, у Вас очень много ресурсов забирает аккаунтинг трафика. Попробуйте его временно выключить, посмотрите - изменится ли что-либо.

Изменено пользователем Alex/AT

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


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

Судя по "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 очереди и раскидайте их по ядрам, поможет.

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


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

Да, карточки однопоточки. Причём у вас явно трафик бегает в основном только между eth0 и eth1 (судя по привязке IRQ). MSI-X не замечено, матерь явно не серверная, так что многопоточки вам ставить некуда.

Вообще-то i350 это тот же ET, очереди у него есть. Да и от матери для работы очередей требуется только поддержка MSI, а это обеспечивают даже древние десктопные чипсеты.

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


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

Автор же писал, что 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 карты "обрезаются" до однопоточек. Поэтому в данном случае вряд ли удастся "добавить очереди" так вот просто.

Изменено пользователем Alex/AT

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


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

Автор же писал, что 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 драйвер юзается.

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


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

Судя по "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 очереди и раскидайте их по ядрам, поможет.

А можно ли "размазать" нагрузку от ната и шейпа по ядрам?

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


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

Тут еще фокус в том, что интеловские драйвера (e1000e/igb) поддерживают многопоточки только с MSI-X, в случае MSI карты "обрезаются" до однопоточек. Поэтому в данном случае вряд ли удастся "добавить очереди" так вот просто.

В хозяйстве куча тазиков(NAS-сервера) собраных на десктопных матерях с igb-сетевками, очереди работают, карта говорит что работает в режиме MSI.

 

 

А можно ли "размазать" нагрузку от ната и шейпа по ядрам?

Можно, и нужно!

Сейчас у вас сетевки настроены на использование одной очереди - сделайте 4 очереди на порт и будет счастье.

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

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


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

Тут еще фокус в том, что интеловские драйвера (e1000e/igb) поддерживают многопоточки только с MSI-X, в случае MSI карты "обрезаются" до однопоточек. Поэтому в данном случае вряд ли удастся "добавить очереди" так вот просто.

В хозяйстве куча тазиков(NAS-сервера) собраных на десктопных матерях с igb-сетевками, очереди работают, карта говорит что работает в режиме MSI.

 

 

А можно ли "размазать" нагрузку от ната и шейпа по ядрам?

Можно, и нужно!

Сейчас у вас сетевки настроены на использование одной очереди - сделайте 4 очереди на порт и будет счастье.

Я извиняюсь, а как это сделать? В какую сторону копать? Я про 4 очереди. Я так понимаю Вы предлагаете сделать 4 очереди на порт, по 2 на прием и по 2 на передачу?

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


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

Нет, 4 совмещенных очереди как у вас сейчас. Как изменить число очередей - зависит от дистрибутива, в общем случае достаточно создать файлик etc/modprobe.d/igb.conf со строчкой options igb RSS=4,4,4,4

Ну и в дальнейшем привязать появившиеся прерывания к ядрам через smp_affinity.

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

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


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

Нет, 4 совмещенных очереди как у вас сейчас. Как изменить число очередей - зависит от дистрибутива, в общем случае достаточно создать файлик etc/modprobe.d/igb.conf со строчкой options igb RSS=4,4,4,4

Ну и в дальнейшем привязать появившиеся прерывания к ядрам через smp_affinity.

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

А как распределить нагрузку от НАТа и шейпа?

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


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

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

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


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

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

Спасибо! Действительно помогло, и скорость взлетела в разы.

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


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

Т.е. на I350 RSS работает с MSI и конкретными опциями драйвера, верно? Подтвердите, пожалуйста, нужно для запоминания :)

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


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

Не совсем :)

Для работы карт с очередями не нужны серверные матери с 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® Core™2 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ы).

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

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


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

Join the conversation

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

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

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

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

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

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

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