Jump to content
Калькуляторы

tc + centos 7 грузят процессор под 100%

Вечер добрый. Может тема не новая, уже находил подобную, но не помогли советы.

У меня сервер 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. Или косяк в том, что я менял проц уже на установленной системе? Очень нужна помощь

 

 

 

 

Share this post


Link to post
Share on other sites

4 часа назад, vurd сказал:

1. ipt_ratelimit

Буквально сегодня переехал с tc на сабж. в ЧНН нагрузка упала с 60 до 30% на ядро.

Share this post


Link to post
Share on other sites

30 минут назад, pppoetest сказал:

Буквально сегодня переехал с tc на сабж. в ЧНН нагрузка упала с 60 до 30% на ядро.

ну думаю, что завтра вам стоит попробовать ipt_cgnat и уронить загрузку до 10% :-)

 

А вот ТС надо предпринять все эти меры комплексно.

Share this post


Link to post
Share on other sites

24 минуты назад, vurd сказал:

ну думаю, что завтра вам стоит попробовать ipt_cgnat и уронить загрузку до 10% :-)

Не получится. У меня несколько сетей /24, в разброс, ковыряю сырцы на предмет возможности засунуть > 1 nat pool адресов.

Share this post


Link to post
Share on other sites

16 часов назад, vurd сказал:

1. ipt_ratelimit

2. выключите hyper threading

3. раскидайте прерывания

hyper threading вырубил.

по поводу прерываний irqbalance не подходит? он у меня включен и довольно ровно все раскидывает.

ipt_ratelimit его вместе с tc использовать или вместо?

Share this post


Link to post
Share on other sites

5 минут назад, Владимир320 сказал:

hyper threading вырубил.

по поводу прерываний irqbalance не подходит? он у меня включен и довольно ровно все раскидывает.

ipt_ratelimit его вместе с tc использовать или вместо?

отлично

лучше руками, там немного подумать куда какие очереди прибить

вместо

Share this post


Link to post
Share on other sites

Вы просили помочь, информации выше достаточно, чтобы понять вектор исследования.

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/.

 

 

 

Share this post


Link to post
Share on other sites

22 часа назад, Владимир320 сказал:

$TC filter add dev $ETH_EXT protocol ip prio 5 u32 match ip src $ip flowid 1:$id

Я так понимаю, у вас для всех 1300 клиентов используется линейный фильтр? Переходите на схему с хэшированием.

Share this post


Link to post
Share on other sites

29 минут назад, taf_321 сказал:

Переходите на схему с хэшированием.

Я бы советовал ТС сразу переходить на полисер. И проще и жрёт меньше.

Share this post


Link to post
Share on other sites

39 минут назад, taf_321 сказал:

Я так понимаю, у вас для всех 1300 клиентов используется линейный фильтр? Переходите на схему с хэшированием.

у меня несколько схем, есть и с хешированием и без, в целом нагрузка на цпу одинаковая. По этому разницы не понимаю что с хешем что без. Только на поменянном процессоре(E3-1240 v3 @ 3.40GHz) жуткие вещи творятся. Пока не пробовал с отключенным HT, а так нацелен на ipt_ratelimit

Share this post


Link to post
Share on other sites

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

 

 

Share this post


Link to post
Share on other sites

Я не кодераст, но судя по тексту ошибки, у вас xt_family уже определено в include/linux/netfilter/x_tables.h, нужно править compat.h

 

Share this post


Link to post
Share on other sites

8 часов назад, Владимир320 сказал:

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

Это означает лишь то что хеширование сделано неверно и не работает. Читайте статьи, благо их на эту тему сотни.

Или поставьте скрипт sc для генерации правил tc на лету.

Или собирайте ipt_ratelimit.

Share this post


Link to post
Share on other sites

On 11/21/2019 at 9:01 PM, pppoetest said:

Буквально сегодня переехал с tc на сабж

Не верю. с TC .

Edited by h3ll1

Share this post


Link to post
Share on other sites

В 22.11.2019 в 20:38, Владимир320 сказал:

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

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

Share this post


Link to post
Share on other sites

2 часа назад, taf_321 сказал:

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

Ну хотя если посмотреть на график, там где трафик 2.5г (с хешем) и там где трафиг ~1.3(без хеша) то нагрузка cpu одинакова в пиках 30%. Чёт не придавал значения этому. Согласен, не правильно. Перейду на хеш

Share this post


Link to post
Share on other sites

1 час назад, Владимир320 сказал:

Перейду на хеш

Если сеть будет расти, всё равно перейдёте на полисер. Либо на железное железо.

Share this post


Link to post
Share on other sites

Если $seed_out и $cell_out одинаковые, то особого смысла в tc как-то и нет. Проще полисер использовать. Выше есть предложения. Если же все же нужен tc для выдачи свободной полосы, то действительно меняйте фильтр. Мне, например, нравится классификация трафика через ipset.

Share this post


Link to post
Share on other sites

вот я пытаюсь поставить этот полисер на 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" почему то пуст

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.