kayot Posted March 21, 2020 Posted March 21, 2020 Есть несколько серверов, одинаковые аппаратно, 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. Маршруты на бордер отдает. Вставить ник Quote
TriKS Posted March 21, 2020 Posted March 21, 2020 Ассель из мастера же, верно? Я бы начал с ядра. Тюнинг какой-то есть в sysctl? Сетевушку пробовал другую? Драйвера пробовал разные? Без бондинга пробовал? Вставить ник Quote
kayot Posted March 21, 2020 Author Posted March 21, 2020 Аццель стабильный 1.10.3, собран из тарбола. Используется только pppoe. Тюнинг стандартный, увеличены ring buffers сетевок, размеры памяти ядра да арп-таблица. Пробовал играться interrupt moderation, rx-usecs сейчас стоит 300 - изменение нагрузки минимально. 82580 вполне себе топовые 1G карты, есть ли смысл менять? Драйвер родной ядра стоит. Уточнил - в старых серверах как раз используются другие карты, 2шт бортовых броадкома и 2шт 82571 PT. Вроде как позорные, но проблем и загрузки нет свой 1G на порт отдают четко. Пока из явных отличий - только сетевки. Без бондинга разве что 10G впихнуть, попробую если других вариантов не будет. Вставить ник Quote
sdy_moscow Posted March 21, 2020 Posted March 21, 2020 Глядя на %irq %soft сразу вызывают сомнение драйвера сетевух. На новом железе дрова и сетевки явно работают в другом режиме (soft irq). В свое время эта борьба железо/софт отняла кучу времени. Итог i7+Intel 10G+пятилетней давности ядро с акселем - тарабанят под 5Г (правда старый аксель "течет", приходится раз в полгода перегружать сервера). Дерзайте комбинации. Вставить ник Quote
kayot Posted March 21, 2020 Author Posted March 21, 2020 Значит будем пробовать 10G карту. Всю жизнь считал что под pppoe выгоднее держать кучу карт в бондинге для распределения нагрузки.. Под НАТ стоит сервер такой же конфигурации с 10G - при 3 гигах загрузка 30%. Тут на простой маршрутизации и терминации pppoe явно не должна быть загрузка больше чем на НАТе. Вставить ник Quote
Avad0n Posted March 22, 2020 Posted March 22, 2020 @kayot , глупый вопрос наверно: а новый сервер по говернору в performance работает (там по умолчанию вроде powersave может быть и заниженые частоты)? Вставить ник Quote
disappointed Posted March 22, 2020 Posted March 22, 2020 Последнее ядро, где нагрузка при 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 что? Похоже, что авто стоит и частота минимум. Для браса это даже хорошо, я жёстко гонял тесты и не выявил никаких проблем с этим, плюс процессор греется и жрёт меньше. На латентность обработки трафика НИКАК не влияет. Вставить ник Quote
kayot Posted March 23, 2020 Author Posted March 23, 2020 @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 ж ядерный используется, не должно быть никакой разницы. Бондинг? Вставить ник Quote
TriKS Posted March 23, 2020 Posted March 23, 2020 повторюсь В 21.03.2020 в 12:20, TriKS сказал: Я бы начал с ядра. Тюнинг какой-то есть в sysctl? Сетевушку пробовал другую? Драйвера пробовал разные? Без бондинга пробовал? Вставить ник Quote
kayot Posted March 23, 2020 Author Posted March 23, 2020 Да вроде ж отвечал. Тюнинг стандартный, увеличены ring buffers сетевок, размеры памяти ядра да арп-таблица. Драйвер был штатный ядерный, сегодня загрузил с последним интеловским - никакой разницы. Без бонда попробую с 10G картой, но это уже если других решений не будет найдено. Вставить ник Quote
TriKS Posted March 23, 2020 Posted March 23, 2020 всякие gro\gso\tso и прочие ntuple? Вставить ник Quote
kayot Posted March 23, 2020 Author Posted March 23, 2020 Все как по учебникам, 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 буду пробовать. Вставить ник Quote
TriKS Posted March 23, 2020 Posted March 23, 2020 3 минуты назад, kayot сказал: На этом сервере попробую собрать ядро с нуля "по дефолту" Попробуй реповское стейбл, безо всяких шаманств. Уже как лет 5 использую в дебиане, ибо шаманство с самосбором дает от силы пару процентов прироста, что в нынешнее время неактуально. Вставить ник Quote
kayot Posted March 23, 2020 Author Posted March 23, 2020 @TriKS Там centos, дистрибутивное ядро 2.6.32 совсем уж страшно)) Попробую c elrepo 4.4, вариант. Вставить ник Quote
kayot Posted March 24, 2020 Author Posted March 24, 2020 Проверил с "ванильно-собраным" ядром 4.4 - результат тот же. 1G трафика дает 30% загрузки по всем ядрам. Отключение iptables уменьшает загрузку до 20%, отключение шейперов до 10-12. Значит только железо апгрейдить, а я мечтал на E3 хотя бы гиг 5 получить... Вставить ник Quote
TriKS Posted March 24, 2020 Posted March 24, 2020 Как то совсем не очень.... А если 10-ую карту подкинуть? Вставить ник Quote
kayot Posted March 24, 2020 Author Posted March 24, 2020 Буду пробовать 10Г на днях, больше ничего не остается. На НАТе такое же железо с 10Г картой работает вполне адекватно, 10% загрузки на гиг трафика. Вставить ник Quote
x86 Posted March 26, 2020 Posted March 26, 2020 1. Нужно сравнить perf top на старом сервере и на новом. 2. Используется-ли iptables в процессе работы? Если да, то их серьезно поломали в плане скорости в ядрах 4.4 и 4.9, исправили в 4.14 3. Поскольку используется quagga, следует заметить что в ядрах с 3.6 выпилили ip route cache - возможно, в некоторых конфигурациях, это сказывается на производительности. Вставить ник Quote
kayot Posted March 26, 2020 Author Posted March 26, 2020 После долгого гугления и чтения данного форума картина немного прояснилась. 1. Разница между старыми и новыми серверами в конфиге ядра - старые tickless, а новые нет. Параметр сборки ядра NO_HZ прописан, но с какой-то версии его значение поменялось и для новых ядер влияет только на idle режим. Для полного tickless нужно включить еще NO_HZ_FULL и NO_HZ_FULL_ALL. Судя по форумам включение может снизить загрузку процентов на 30, чего вполне достаточно. 2. Старые ядра в tickless режиме неверно считали загрузку, показывая её околонулевой. Об этом говорил @disappointed, правда немного в другом контексте. В новых ядрах уже есть дефолтный параметр tickless_accounting нормально считающий в этом режиме. Проверю эту версию собрав то же ядро в tickless, на данный момент она наиболее правдоподобна. Вставить ник Quote
h3ll1 Posted March 26, 2020 Posted March 26, 2020 Как право для 2Г FDX достаточно. Вставить ник Quote
disappointed Posted March 27, 2020 Posted March 27, 2020 17 часов назад, kayot сказал: 2. Старые ядра в tickless режиме неверно считали загрузку, показывая её околонулевой. Об этом говорил @disappointed, правда немного в другом контексте. В новых ядрах уже есть дефолтный параметр tickless_accounting нормально считающий в этом режиме. Проверю эту версию собрав то же ядро в tickless, на данный момент она наиболее правдоподобна. Спасибо, что разобрался. У меня не было времени глубоко вникать, мне эту теорию о неверном подсчёте cpu load на PPPoE брасах подтвердл @nuclearcat и я смирился, после долго шаманства с версиями ядер. Вставить ник Quote
kayot Posted March 27, 2020 Author Posted March 27, 2020 Проверил теорию, результаты неоднозначные. При включении 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%. Если дальше загрузка будет расти линейно, то в принципе жить можно. Но в любом случае идеи что еще можно проверить/настроить/затюнить - приветствуются. Вставить ник Quote
kayot Posted March 27, 2020 Author Posted March 27, 2020 Блин, новая напасть. Загрузка CPU 25-30%, а шейпер HTB+ifb перестает давать нужную скорость уже после 1.6Гбит/с. HZ=250 мало? Или tickless так работает? На древних серверах все ок, мегабит в мегабит при том же трафике... Такое как проще старый сервер клонировать и забыть. Но они иногда беспричинно падают, ядро старое и кривое... Вставить ник Quote
disappointed Posted March 28, 2020 Posted March 28, 2020 14 часов назад, kayot сказал: Блин, новая напасть. Загрузка CPU 25-30%, а шейпер HTB+ifb перестает давать нужную скорость уже после 1.6Гбит/с. Может оставить всё как есть и забить на более высокие цифры CPU? А новый брас развороачивать уже на новом железе. Вставить ник 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.