CCR72 + queues tree CPU over 100%

Базовая функциональность RouterOS
timonsterrr
Сообщения: 70
Зарегистрирован: 05 мар 2017, 17:33

CCR72 + queues tree CPU over 100%

Сообщение timonsterrr »

Всем привет. Такая ситуация - используем для шейпинга трафика микрот сср72 ядерный. Прошивка 6.38.3 Шейпится примерно 6000 абонентов.

mangle+que tree pcq В час пик микрот уходит в аут нагрузка более 100% Пробовал использовать симпл очереди. Не дает результата.
Последний раз редактировалось timonsterrr 06 мар 2017, 13:08, всего редактировалось 1 раз.
Аватара пользователя
Chupaka
Сообщения: 4090
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: ССК72 + queues tree CPU over 100%

Сообщение Chupaka »

Хм... По отзывам - именно переход на Simple Queues по одной на абонента чудодейственно влиял на работоспособность. Или Simple тоже были PCQ?
timonsterrr
Сообщения: 70
Зарегистрирован: 05 мар 2017, 17:33

Re: ССК72 + queues tree CPU over 100%

Сообщение timonsterrr »

Chupaka писал(а): 05 мар 2017, 22:55 Хм... По отзывам - именно переход на Simple Queues по одной на абонента чудодейственно влиял на работоспособность. Или Simple тоже были PCQ?
Я это попробовал. Сделал для каждого абонента Simple Queues pfifo (тоже читал ту статью, где человеку это чудодейственно помогло). Получилось 12 000 очередей (по 2 на каждого абонента, да, торренты подрезаем чуток) и микрот ушел просто в аут....

В итоге я решил свою проблему так:
у меня есть самый популярный тариф и на нем больше всего нагрузки...к моменту когда на микроте становится 100% проца занято на тарифе как раз 700-750 мбит трафика. Я разделил абонентов этого тарифа на 2 группы, создал еще один адресслист и для него отдельную очередь и метку пакетов в мангле. В итоге на каждой из групп нагрузка стала 450-550 мбит. И это помогло! Процессор опустился до 40-55% в час пик. Абоны счастливы, пинги низкие ну и все вытекающие.

Сегодня решил поделить абонов еще по 500 чел в 1 группе тарифа. Итого - нагрузка на процессор от queues почти исчезла 4-7% Но на файрволе (мангл) выросла процентов на 5 т.к. появились новые правила маркировки пакетов для новых групп.

Итого вывод - как только генерируемый трафик в queues правиле подбирается к 700 мбитам - микроту плохеет. Интересно знают ли об этой проблеме разработчики. В марте еду на MUM попробую там выяснить с чем это связано)
Аватара пользователя
Chupaka
Сообщения: 4090
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: CCR72 + queues tree CPU over 100%

Сообщение Chupaka »

Хм... Ну тогда мелкотиковцам привет на MUM'е. Я с такой проблемой столкнулся ещё на версии в районе 6.5. Перенёс конфиг с х86 на CCR - а он много трафика не тянет. Нашёл, что если через PCC разделить потоки на две PCQ-очереди, то пациенту становится легче. Надеялся, что с тех пор уже много наоптимизировали...

Проблема, видимо, в большом количестве ядер: архитектура TILE раскидывает пакеты по процессорам согласно соединениям. А потом их со всех процов надо собрать, чтобы поместить в одну очередь - вот и получается пробка... Правда, непонятно, почему Simple Queues не взлетели
timonsterrr
Сообщения: 70
Зарегистрирован: 05 мар 2017, 17:33

Re: CCR72 + queues tree CPU over 100%

Сообщение timonsterrr »

Chupaka писал(а): 06 мар 2017, 15:02 Хм... Ну тогда мелкотиковцам привет на MUM'е. Я с такой проблемой столкнулся ещё на версии в районе 6.5. Перенёс конфиг с х86 на CCR - а он много трафика не тянет. Нашёл, что если через PCC разделить потоки на две PCQ-очереди, то пациенту становится легче. Надеялся, что с тех пор уже много наоптимизировали...

Проблема, видимо, в большом количестве ядер: архитектура TILE раскидывает пакеты по процессорам согласно соединениям. А потом их со всех процов надо собрать, чтобы поместить в одну очередь - вот и получается пробка... Правда, непонятно, почему Simple Queues не взлетели
Может быть потому что их 12 000 получилось...я тоже не понимаю что помешало) Оздавал очереди по выгружаемым в микрот из биллинга спискам IP адресов. Вот скрипт

Код: Выделить всё

/ip firewall address-list
:foreach ip in=[find where list~"000k"] do {
:local ipaddress [get $ip address]
:local listname [get $ip list]
:local megabits [:pick $listname 0 [:find $listname "000k"]]
:local limit ($megabits."M/".$megabits."M")
:local limitother ""
:if ($megabits < 15) do {:set limitother "2M/2M"} #тут режем торрент мелким тарифам
:if ($megabits >= 15 && $megabits <= 60) do { :set limitother "3M/3M" } #тут режем торрент крупным тарифам
:if ($megabits > 60) do { :set limitother $limit }
/queue simple add name=($ipaddress."_http") target=$ipaddress max-limit=$limit packet-marks=("http-packet-".$megabits."m") queue=default/default #создаем правило для серфинга
/queue simple add name=($ipaddress."_other") target=$ipaddress max-limit=$limitother packet-marks=("other-packet-".$megabits."m") queue=default/default #создаем правило для орграничения торрента
}
queue=default/default тут kind Pfifo

Уже на 8-9 тысячах созданных правил микрот очень серьезно ложился. вплоть до потери управляемости.
Аватара пользователя
Chupaka
Сообщения: 4090
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: CCR72 + queues tree CPU over 100%

Сообщение Chupaka »

Т.е. даже без трафика, просто при наличии правил?