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

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

 

 

 

 

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


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

1. ipt_ratelimit

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

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

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


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

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

1. ipt_ratelimit

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

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


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

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

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

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

 

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

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


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

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

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

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

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


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

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

1. ipt_ratelimit

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

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

hyper threading вырубил.

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

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

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


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

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

hyper threading вырубил.

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

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

отлично

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

вместо

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


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

откуда он вообще берётся ipt_ratelimit? нигде не могу его найти для centos

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


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

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

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

 

 

 

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


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

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

Подскажите куда нужно смотреть?

в perf top

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


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

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

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

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

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


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

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

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

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

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


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

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

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

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

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


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

тока пока как установить этот модуль остаётся загадкой

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


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

В readme к модулю написано, как его установить.

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


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

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

 

 

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


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

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

 

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


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

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

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

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

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

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

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


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

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

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

Не верю. с TC .

Изменено пользователем h3ll1

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


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

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

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

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

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


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

3 часа назад, h3ll1 сказал:

Не верю. с TC .

 

000.thumb.png.f65582c07a0abc44c7f1e9ff96420358.png

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


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

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

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

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

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


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

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

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

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

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


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

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

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


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

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

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


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

Join the conversation

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

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

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

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

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

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

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