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