Владимир320 Posted November 21, 2019 · Report post Вечер добрый. Может тема не новая, уже находил подобную, но не помогли советы. У меня сервер HP proliant gen 8 v2 Стоит сетевая карта 10G двуголовая Также я поменял проц С Intel(R) Xeon(R) CPU E3-1220 v3 @ 3.10GHz НА Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz Обоснованного решения не было по поводу замены проца, просто решил попробовать ""помощнее"" Ну и CentOS Linux release 7.7 Трафик примерно 2 гига на старом проце ел спокойно, на новом же (E3-1240 v3 @ 3.40GHz), когда приближается к 600-700, то проц начинает грузится на полную. Ещё момент, я проц менял уже на установленной системе, то есть centos уже стоял. Это нормальная практика? или есть кривизна в этом? tc я вешаю на два физических интерфейса, ну и режу исходящую скорость соответственно вот мои правила tc: основные правила: $TC qdisc add dev $ETH_INT root handle 1: htb default ffff $TC qdisc add dev $ETH_EXT root handle 1: htb default ffff $TC filter add dev $ETH_INT protocol ip prio 5 parent 1: u32 $TC filter add dev $ETH_EXT protocol ip prio 5 parent 1: u32 $TC class add dev $ETH_INT parent 1: classid 1:2 htb rate 4gbit $TC class add dev $ETH_EXT parent 1: classid 1:2 htb rate 4gbit $TC class add dev $ETH_INT parent 1:2 classid 1:ffff htb rate 200mbit $TC class add dev $ETH_EXT parent 1:2 classid 1:ffff htb rate 200mbit $TC qdisc add dev $ETH_INT parent 1:ffff handle ffff sfq perturb 10 $TC qdisc add dev $ETH_EXT parent 1:ffff handle ffff sfq perturb 10 для клиентов: $TC class add dev $ETH_INT parent 1:2 classid 1:$id htb rate ${speed_in}Mbit ceil ${ceil_in}Mbit $TC qdisc add dev $ETH_INT parent 1:$id handle $id sfq perturb 10 $TC filter add dev $ETH_INT protocol ip prio 5 u32 match ip dst $ip flowid 1:$id $TC class add dev $ETH_EXT parent 1:2 classid 1:$id htb rate ${speed_out}Mbit ceil ${ceil_out}Mbit $TC qdisc add dev $ETH_EXT parent 1:$id handle $id sfq perturb 10 $TC filter add dev $ETH_EXT protocol ip prio 5 u32 match ip src $ip flowid 1:$id $id я подставляю исходя из id абонента, у каждого свой в hex $ip /32 соответственно ${speed_out} ceil ${ceil_out} - скорости Ну и примерно 1300 клиентов на железке. Подскажите куда нужно смотреть? или tc не дружит по нормальнову с E3-1240 v3 @ 3.40GHz а также с centos 7. Или косяк в том, что я менял проц уже на установленной системе? Очень нужна помощь Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vurd Posted November 21, 2019 · Report post 1. ipt_ratelimit 2. выключите hyper threading 3. раскидайте прерывания Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted November 21, 2019 · Report post 4 часа назад, vurd сказал: 1. ipt_ratelimit Буквально сегодня переехал с tc на сабж. в ЧНН нагрузка упала с 60 до 30% на ядро. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vurd Posted November 21, 2019 · Report post 30 минут назад, pppoetest сказал: Буквально сегодня переехал с tc на сабж. в ЧНН нагрузка упала с 60 до 30% на ядро. ну думаю, что завтра вам стоит попробовать ipt_cgnat и уронить загрузку до 10% :-) А вот ТС надо предпринять все эти меры комплексно. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted November 21, 2019 · Report post 24 минуты назад, vurd сказал: ну думаю, что завтра вам стоит попробовать ipt_cgnat и уронить загрузку до 10% :-) Не получится. У меня несколько сетей /24, в разброс, ковыряю сырцы на предмет возможности засунуть > 1 nat pool адресов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Владимир320 Posted November 22, 2019 · Report post 16 часов назад, vurd сказал: 1. ipt_ratelimit 2. выключите hyper threading 3. раскидайте прерывания hyper threading вырубил. по поводу прерываний irqbalance не подходит? он у меня включен и довольно ровно все раскидывает. ipt_ratelimit его вместе с tc использовать или вместо? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vurd Posted November 22, 2019 · Report post 5 минут назад, Владимир320 сказал: hyper threading вырубил. по поводу прерываний irqbalance не подходит? он у меня включен и довольно ровно все раскидывает. ipt_ratelimit его вместе с tc использовать или вместо? отлично лучше руками, там немного подумать куда какие очереди прибить вместо Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Владимир320 Posted November 22, 2019 · Report post откуда он вообще берётся ipt_ratelimit? нигде не могу его найти для centos Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vurd Posted November 22, 2019 · Report post Вы просили помочь, информации выше достаточно, чтобы понять вектор исследования. Module is compatible with recent linux distributions such as Debian 7, 8, Centos 7, and Linux kernel 3.x or above. https://forum.nag.ru/index.php?/topic/108580-ipt-ratelimit/ Конкретно тыкать в ссылки и показывать как собирать под центос это уже вам нужно в другой раздел - сюда https://forum.nag.ru/index.php?/forum/78-vakansii/. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted November 22, 2019 · Report post 20 часов назад, Владимир320 сказал: Подскажите куда нужно смотреть? в perf top Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
taf_321 Posted November 22, 2019 · Report post 22 часа назад, Владимир320 сказал: $TC filter add dev $ETH_EXT protocol ip prio 5 u32 match ip src $ip flowid 1:$id Я так понимаю, у вас для всех 1300 клиентов используется линейный фильтр? Переходите на схему с хэшированием. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted November 22, 2019 · Report post 29 минут назад, taf_321 сказал: Переходите на схему с хэшированием. Я бы советовал ТС сразу переходить на полисер. И проще и жрёт меньше. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Владимир320 Posted November 22, 2019 · Report post 39 минут назад, taf_321 сказал: Я так понимаю, у вас для всех 1300 клиентов используется линейный фильтр? Переходите на схему с хэшированием. у меня несколько схем, есть и с хешированием и без, в целом нагрузка на цпу одинаковая. По этому разницы не понимаю что с хешем что без. Только на поменянном процессоре(E3-1240 v3 @ 3.40GHz) жуткие вещи творятся. Пока не пробовал с отключенным HT, а так нацелен на ipt_ratelimit Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Владимир320 Posted November 22, 2019 · Report post тока пока как установить этот модуль остаётся загадкой Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted November 22, 2019 · Report post В readme к модулю написано, как его установить. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Владимир320 Posted November 22, 2019 · Report post 21 минуту назад, pppoetest сказал: В readme к модулю написано, как его установить. ну туда-то я догадался залезть)). Делаю маке и куча всякого: make -C /lib/modules/3.10.0-1062.4.1.el7.x86_64/build/ M=/tmp/ipt-ratelimit-master modules CONFIG_DEBUG_INFO=y make[1]: Entering directory `/usr/src/kernels/3.10.0-1062.4.1.el7.x86_64' CC [M] /tmp/ipt-ratelimit-master/xt_ratelimit.o In file included from /tmp/ipt-ratelimit-master/xt_ratelimit.c:44:0: /tmp/ipt-ratelimit-master/compat.h:46:24: error: redefinition of ‘xt_family’ static inline u_int8_t xt_family(const struct xt_action_param *par) ^ In file included from /tmp/ipt-ratelimit-master/xt_ratelimit.c:40:0: include/linux/netfilter/x_tables.h:77:24: note: previous definition of ‘xt_family’ was here static inline u_int8_t xt_family(const struct xt_action_param *par) ^ make[2]: *** [/tmp/ipt-ratelimit-master/xt_ratelimit.o] Error 1 make[1]: *** [_module_/tmp/ipt-ratelimit-master] Error 2 make[1]: Leaving directory `/usr/src/kernels/3.10.0-1062.4.1.el7.x86_64' make: *** [xt_ratelimit.ko] Error 2 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted November 22, 2019 · Report post Я не кодераст, но судя по тексту ошибки, у вас xt_family уже определено в include/linux/netfilter/x_tables.h, нужно править compat.h Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kayot Posted November 22, 2019 · Report post 8 часов назад, Владимир320 сказал: у меня несколько схем, есть и с хешированием и без, в целом нагрузка на цпу одинаковая. Это означает лишь то что хеширование сделано неверно и не работает. Читайте статьи, благо их на эту тему сотни. Или поставьте скрипт sc для генерации правил tc на лету. Или собирайте ipt_ratelimit. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
h3ll1 Posted November 24, 2019 (edited) · Report post On 11/21/2019 at 9:01 PM, pppoetest said: Буквально сегодня переехал с tc на сабж Не верю. с TC . Edited November 24, 2019 by h3ll1 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
taf_321 Posted November 24, 2019 · Report post В 22.11.2019 в 20:38, Владимир320 сказал: у меня несколько схем, есть и с хешированием и без, в целом нагрузка на цпу одинаковая. Такого не может быть в принципе. Если нагрузка одинакова, значит вы неправильно работаете с хэшами и у вас все равно все сводится к линейным фильтрам. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted November 24, 2019 · Report post 3 часа назад, h3ll1 сказал: Не верю. с TC . Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Владимир320 Posted November 24, 2019 · Report post 2 часа назад, taf_321 сказал: Такого не может быть в принципе. Если нагрузка одинакова, значит вы неправильно работаете с хэшами и у вас все равно все сводится к линейным фильтрам. Ну хотя если посмотреть на график, там где трафик 2.5г (с хешем) и там где трафиг ~1.3(без хеша) то нагрузка cpu одинакова в пиках 30%. Чёт не придавал значения этому. Согласен, не правильно. Перейду на хеш Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted November 24, 2019 · Report post 1 час назад, Владимир320 сказал: Перейду на хеш Если сеть будет расти, всё равно перейдёте на полисер. Либо на железное железо. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted November 24, 2019 · Report post Если $seed_out и $cell_out одинаковые, то особого смысла в tc как-то и нет. Проще полисер использовать. Выше есть предложения. Если же все же нужен tc для выдачи свободной полосы, то действительно меняйте фильтр. Мне, например, нравится классификация трафика через ipset. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Владимир320 Posted November 25, 2019 · Report post вот я пытаюсь поставить этот полисер на centos 7, в какуюто головную боль превращается данный процесс, то на одно ругается, то на другое. В README есть инструкш на дебиан убунту. У кого получилось на центосину поставить, тот либо умный очень либо я ду..к. ПОка склоняюсь ко второму варианту. из проделанного я обновился до версии uname -a Linux len_new 5.3.12-1.el7.elrepo.x86_64 make make[1]: Entering directory `/usr/src/kernels/5.3.12-1.el7.elrepo.x86_64' make[1]: *** No rule to make target `modules'. Stop. make[1]: Leaving directory `/usr/src/kernels/5.3.12-1.el7.elrepo.x86_64' make: *** [xt_ratelimit.ko] Error каталог "/usr/src/kernels/5.3.12-1.el7.elrepo.x86_6" почему то пуст Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...