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

Высокая загрузка CPU Linux PPPoE BRAS

Есть несколько серверов, одинаковые аппаратно, xeon E3-1220. 

Первый древней сборки, лохматое ядро 2.6.31.9, rp-pppoe.

Второй свежий, ядро 4.9.180, accel-ppp 1.10.3

На новом сервере 4ех портовая карты 82580 IGB в бонде 2 по 2. На днях добавили к ним еще и бортовые в поисках узких мест - сейчас 2 бонда по 3 порта.

На старом пара броадкомов бортовых + пара intel PT, те же 2 бонда по 2 порта.

НАТа нет, точнее минимальный на 80ый порт для заглушек. Основной трафик идет мимо conntrack, записей ~10k.

Одинаковый шейпер htb+ifb и фаервол.

 

При этом, при одинаковом числе сессий и трафике загрузка CPU серверов отличается раза в 3-4.

Текущий момент: 1500 сессий, 1G трафик. В час пик пропорционально хуже.

 

Древний 10%.

mpstat -P ALL 1 5
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.66    0.00    0.41    0.05    0.31    8.27    0.00    0.00   90.31
Average:       0    1.19    0.00    0.60    0.40    0.60    9.92    0.00    0.00   87.30
Average:       1    0.81    0.00    0.60    0.00    0.20    7.26    0.00    0.00   91.13
Average:       2    0.00    0.00    0.00    0.00    0.21    8.14    0.00    0.00   91.65
Average:       3    0.62    0.00    0.21    0.00    0.21    7.88    0.00    0.00   91.08

Новый 30%

mpstat -P ALL 1 5
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.73    0.00    0.31    0.10    0.00   27.72    0.00    0.00   71.13
Average:       0    0.87    0.00    0.00    0.00    0.00   32.97    0.00    0.00   66.16
Average:       1    0.42    0.00    0.21    0.21    0.00   26.43    0.00    0.00   72.73
Average:       2    0.81    0.00    0.81    0.00    0.00   23.48    0.00    0.00   74.90
Average:       3    0.82    0.00    0.21    0.00    0.00   28.34    0.00    0.00   70.64

Отключение шейпера и фаервола уменьшает загрузку на древнем до единиц процентов, а на новом незначительно, до 15%.

Т.е. вообще без ничего, без iptables/shaper/NAT при 1г трафика имеем 15% soft IRQ.

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.36    0.00    0.31    0.16    0.00   15.16    0.00    0.00   84.00
Average:       0    0.40    0.00    0.00    0.40    0.00   20.61    0.00    0.00   78.59
Average:       1    0.41    0.00    0.61    0.00    0.00   15.54    0.00    0.00   83.44
Average:       2    0.21    0.00    0.21    0.00    0.00   10.52    0.00    0.00   89.06
Average:       3    0.43    0.00    0.43    0.00    0.00   13.68    0.00    0.00   85.47

Perf top ничего интересного не говорит

С шейпером и фаерволом

   8.74%  [ip_tables]          [k] ipt_do_table
   3.87%  [pppoe]              [k] pppoe_rcv
   3.14%  [kernel]             [k] fib_table_lookup
   2.53%  [kernel]             [k] _raw_spin_lock
   1.91%  [kernel]             [k] __dev_queue_xmit
   1.79%  [cls_u32]            [k] u32_classify
   1.77%  [kernel]             [k] irq_entries_start
   1.74%  [kernel]             [k] apic_timer_interrupt
   1.64%  [kernel]             [k] __netif_receive_skb_core
   1.48%  [kernel]             [k] nf_iterate

Без них

   6.81%  [pppoe]              [k] pppoe_rcv
   4.72%  [kernel]             [k] fib_table_lookup
   3.53%  [kernel]             [k] _raw_spin_lock
   3.42%  [kernel]             [k] irq_entries_start
   2.79%  [kernel]             [k] __dev_queue_xmit
   2.13%  [kernel]             [k] __netif_receive_skb_core
   1.96%  [igb]                [k] igb_clean_tx_irq
   1.76%  [kernel]             [k] __memcpy
   1.56%  [kernel]             [k] __skb_flow_dissect
   1.47%  [kernel]             [k] __local_bh_enable_ip
   1.38%  [kernel]             [k] ip_finish_output2
   1.29%  [kernel]             [k] vlan_do_receive
   1.22%  [kernel]             [k] __skb_get_hash
   1.18%  [igb]                [k] igb_tx_map

На днях старый один из "старых" серверов ребутнулся - новый в час пик впал в кому при 2500 сессий и трафике до 2Гбит с загрузкой CPU под 70% и тормозами.

 

Куда копать? Ядро, accel-ppp?

 

Да, и там и там из потенциально могущего влиять есть quagga с активным ripd. Маршруты на бордер отдает.

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


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

Ассель из мастера же, верно? Я бы начал с ядра. Тюнинг какой-то есть в sysctl? Сетевушку пробовал другую? Драйвера пробовал разные? Без бондинга пробовал?

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


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

Аццель стабильный 1.10.3, собран из тарбола. Используется только pppoe.

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

Пробовал играться interrupt moderation, rx-usecs сейчас стоит 300 - изменение нагрузки минимально.

 

82580 вполне себе топовые 1G карты, есть ли смысл менять? Драйвер родной ядра стоит.

Уточнил - в старых серверах как раз используются другие карты, 2шт бортовых броадкома и 2шт 82571 PT. Вроде как позорные, но проблем и загрузки нет свой 1G на порт отдают четко.

Пока из явных отличий - только сетевки.

Без бондинга разве что 10G впихнуть, попробую если других вариантов не будет.

 

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


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

Глядя на %irq %soft сразу вызывают сомнение драйвера сетевух. На новом железе дрова и сетевки явно работают в другом режиме (soft irq).

 

В свое время эта борьба железо/софт отняла кучу времени. Итог i7+Intel 10G+пятилетней давности ядро с акселем - тарабанят под 5Г (правда старый аксель "течет", приходится раз в полгода перегружать сервера).

Дерзайте комбинации.

 

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


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

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

Под НАТ стоит сервер такой же конфигурации с 10G - при 3 гигах загрузка 30%. Тут на простой маршрутизации и терминации pppoe явно не должна быть загрузка больше чем на НАТе.

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


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

@kayot , глупый вопрос наверно: а новый сервер по говернору в performance работает (там по умолчанию вроде powersave может быть и заниженые частоты)?

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


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

Последнее ядро, где нагрузка при PPPoE терминации неважно чем, хоть rp-pppoe хоть accel выглядела подозрительно

ничтожной было 3.2.0

Все ядра после него - всегда давали в разы большие цифры. Но они были больше похожи на правильные, т.к. я получал такие же цифры на подобных

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

при использовании машины в качестве PPPoE концентратора, т.е. она сначала росла крайне незначиательно и потом резко улетала в потолок.

На новых растёт линейно вместе с pps.

 

Цитата

mpstat -P ALL 1 5
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.73    0.00    0.31    0.10    0.00   27.72    0.00    0.00   71.13
Average:       0    0.87    0.00    0.00    0.00    0.00   32.97    0.00    0.00   66.16
Average:       1    0.42    0.00    0.21    0.21    0.00   26.43    0.00    0.00   72.73
Average:       2    0.81    0.00    0.81    0.00    0.00   23.48    0.00    0.00   74.90
Average:       3    0.82    0.00    0.21    0.00    0.00   28.34    0.00    0.00   70.64

Вполне нормальные значения для 1 гига на xeon E3-1220.

cat /proc/cpuinfo | grep MHz что? Похоже, что авто стоит и частота минимум.

Для браса это даже хорошо, я жёстко гонял тесты и не выявил никаких проблем с этим, плюс процессор греется и жрёт меньше.

На латентность обработки трафика НИКАК не влияет.

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


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

@Avad0n @disappointed 

Энергосберегайки выключены, governer performance, частота стабильна 3100Мгц. 

Обновление драйвера igb ничего не изменило, порядок цифр тот же.

 

Что меня сильно смущает - сервер такой же конфигурации используется под NAT.

И там загрузка тоже раза в 3 раза ниже. Ну не должно же быть так.

 

PPPoE NAS 1G трафика 25% загрузка, 3100Мгц без энергосбережения

[root@nas10 ~]# ifstat -i bond0 -b
 Kbps in  Kbps out
1.08e+06  113237.0

[root@nas10 ~]# mpstat -P ALL 3 3
Linux 4.9.180 (nas10)   03/23/2020      _x86_64_        (4 CPU)
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.47    0.00    0.47    0.06    0.00   24.33    0.00    0.00   74.67
Average:       0    0.67    0.00    0.56    0.00    0.00   19.80    0.00    0.00   78.97
Average:       1    0.33    0.00    0.67    0.11    0.00   24.05    0.00    0.00   74.83
Average:       2    0.33    0.00    0.22    0.00    0.00   26.05    0.00    0.00   73.39
Average:       3    0.55    0.00    0.44    0.00    0.00   27.43    0.00    0.00   71.57

NAT 2G трафика 20% загрузка, 1800-2800Мгц с активными сберегайками(забыл когда-то в биосе отключить, так и работает).

[root@NAT1 ~]# ifstat -i eth0 -b
 Kbps in  Kbps out
2.08e+06  2.08e+06

[root@NAT1 ~]# mpstat -P ALL 3 3
Linux 4.9.50 (NAT1)     03/23/2020      _x86_64_        (4 CPU)
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.00    0.00    0.03    0.03    0.00   21.22    0.00    0.00   78.73
Average:       0    0.00    0.00    0.11    0.00    0.00   22.57    0.00    0.00   77.32
Average:       1    0.00    0.00    0.00    0.11    0.00   24.83    0.00    0.00   75.06
Average:       2    0.00    0.00    0.00    0.00    0.00   18.49    0.00    0.00   81.51
Average:       3    0.00    0.00    0.00    0.00    0.00   18.97    0.00    0.00   81.03

Одинаковое железо, одна ветка ядра 4.9

 

Что еще может влиять?

Ядро собрано вручную, может какую-то опцию важную пропустил?

Сборка accel-ppp? Драйвер pppoe ж ядерный используется, не должно быть никакой разницы.

Бондинг?

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


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

повторюсь

В 21.03.2020 в 12:20, TriKS сказал:

Я бы начал с ядра. Тюнинг какой-то есть в sysctl? Сетевушку пробовал другую? Драйвера пробовал разные? Без бондинга пробовал?

 

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


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

Да вроде ж отвечал. 

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

 

Драйвер был штатный ядерный, сегодня загрузил с последним интеловским - никакой разницы.

Без бонда попробую с 10G картой, но это уже если других решений не будет найдено.

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


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

Все как по учебникам, gso/gro/tso/lro off

Ntuples не используется, да и у 1G igb его наверное и нет

[root@nas10 linux-4.9.180]# ethtool -k eth3 | grep ntup
ntuple-filters: off [fixed]

Так же есть пачка IPoE серверов, и там так же всегда аномально высокая загрузка. Но там хоть можно грешить на accel и его драйвера, dhcp и прочие шаманства.

Высокой загрузка была как с бортовыми броадкомами, замена на такие же i82580 ничего не дала.

 

Объединяет все машины вылизанный конфиг самосборного ядра, возможно сам себе где-то в ногу выстрелил?

 

На этом сервере попробую собрать ядро с нуля "по дефолту", если не поможет - 10G буду пробовать.

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


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

3 минуты назад, kayot сказал:

На этом сервере попробую собрать ядро с нуля "по дефолту"

Попробуй реповское стейбл, безо всяких шаманств. Уже как лет 5 использую в дебиане, ибо шаманство с самосбором дает от силы пару процентов прироста, что в нынешнее время неактуально.

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


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

@TriKS 

Там centos, дистрибутивное ядро 2.6.32 совсем уж страшно)) Попробую c elrepo 4.4, вариант.

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


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

Проверил с "ванильно-собраным" ядром 4.4 - результат тот же.

1G трафика дает 30% загрузки по всем ядрам. Отключение iptables уменьшает загрузку до 20%, отключение шейперов до 10-12.

Значит только железо апгрейдить, а я мечтал на E3 хотя бы гиг 5 получить...

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


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

Как то совсем не очень.... А если 10-ую карту подкинуть?

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


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

Буду пробовать 10Г на днях, больше ничего не остается. 

На НАТе такое же железо с 10Г картой работает вполне адекватно, 10% загрузки на гиг трафика.

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


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

1. Нужно сравнить perf top на старом сервере и на новом.

2. Используется-ли iptables в процессе работы? Если да, то их серьезно поломали в плане скорости в ядрах 4.4 и 4.9, исправили в 4.14

3. Поскольку используется quagga, следует заметить что в ядрах с 3.6 выпилили ip route cache - возможно, в некоторых конфигурациях, это сказывается на производительности.

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


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

После долгого гугления и чтения данного форума картина немного прояснилась.

 

1. Разница между старыми и новыми серверами в конфиге ядра - старые tickless, а новые нет.

Параметр сборки ядра NO_HZ прописан, но с какой-то версии его значение поменялось и для новых ядер влияет только на idle режим. Для полного tickless нужно включить еще NO_HZ_FULL и NO_HZ_FULL_ALL.

Судя по форумам включение может снизить загрузку процентов на 30, чего вполне достаточно.

 

2. Старые ядра в tickless режиме неверно считали загрузку, показывая её околонулевой. Об этом говорил @disappointed, правда немного в другом контексте.

В новых ядрах уже есть дефолтный параметр tickless_accounting нормально считающий в этом режиме.

 

Проверю эту версию собрав то же ядро в tickless, на данный момент она наиболее правдоподобна.

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


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

Как право для 2Г FDX достаточно.

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


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

17 часов назад, kayot сказал:

2. Старые ядра в tickless режиме неверно считали загрузку, показывая её околонулевой. Об этом говорил @disappointed, правда немного в другом контексте.

В новых ядрах уже есть дефолтный параметр tickless_accounting нормально считающий в этом режиме.

 

Проверю эту версию собрав то же ядро в tickless, на данный момент она наиболее правдоподобна.

Спасибо, что разобрался.

У меня не было времени глубоко вникать, мне эту теорию о неверном подсчёте cpu load на PPPoE брасах подтвердл @nuclearcat и я смирился, после

долго шаманства с версиями ядер.

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


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

Проверил теорию,  результаты неоднозначные.

При включении full tickless с остальными дефолтными параметрами система показывает нулевую загрузку по soft IRQ. tickless_accounting нифига не считает.

На одном boot-ядре она нормальная т.к. tickless там не работает, на остальных ровно 0 независимо от загрузки трафиком.

Включение CONFIG_IRQ_TIME_ACCOUNTING возвращает стандартное отображение загрузки.

Итого загрузка CPU с tickless практически не изменилась, может на 5% упала.

 

1G трафика, 1500 PPPoE сессий

[root@nas10 log]# mpstat -P ALL 3 3
Linux 4.9.217 (nas10)   03/27/2020      _x86_64_        (4 CPU)

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.25    0.00    1.01    0.17    1.43   25.10    0.00    0.00   72.04
Average:       0    0.45    0.00    0.45    0.00    1.46   25.62    0.00    0.00   72.02
Average:       1    0.22    0.00    0.90    0.34    1.35   23.01    0.00    0.00   74.19
Average:       2    0.11    0.00    1.56    0.22    1.45   25.70    0.00    0.00   70.95
Average:       3    0.22    0.00    1.23    0.00    1.46   26.04    0.00    0.00   71.04

Отключение шейпера дает -5%, отключение iptables еще -5%.

Если дальше загрузка будет расти линейно, то в принципе жить можно.

 

Но в любом случае идеи что еще можно проверить/настроить/затюнить - приветствуются.

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


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

Блин, новая напасть.

Загрузка CPU 25-30%, а шейпер HTB+ifb перестает давать нужную скорость уже после 1.6Гбит/с.

HZ=250 мало? Или tickless так работает?

На древних серверах все ок, мегабит в мегабит при том же трафике...

 

Такое как проще старый сервер клонировать и забыть. Но они иногда беспричинно падают, ядро старое и кривое...

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


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

14 часов назад, kayot сказал:

Блин, новая напасть.

Загрузка CPU 25-30%, а шейпер HTB+ifb перестает давать нужную скорость уже после 1.6Гбит/с.

Может оставить всё как есть и забить на более высокие цифры CPU?

А новый брас развороачивать уже на новом железе.

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


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

Join the conversation

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

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

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

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

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

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

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