The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"ksoftirq каждый вечер грузит систему на 100%"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Оптимизация и тюнинг / Linux)
Изначальное сообщение [ Отслеживать ]

"ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от qwek (ok) on 06-Мрт-10, 00:24 
Помогите советом, сил нет выносить это уже. Чем победить, куда рыть?

   22 root      15  -5     0    0    0 R  100  0.0 389:01.94 ksoftirqd/6
   25 root      15  -5     0    0    0 R   91  0.0 387:09.34 ksoftirqd/7

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от PavelR (??) on 06-Мрт-10, 07:19 
> Помогите советом, сил нет выносить это уже. Чем победить, куда рыть?
>
>
>   22 root      15  
>-5     0    0  
>  0 R  100  0.0 389:01.94 ksoftirqd/6
>   25 root      15  
>-5     0    0  
>  0 R   91  0.0 387:09.34 ksoftirqd/7
>

Попробуйте начать выдергивать из системника провода, в очередности:

-из сетевых карт
-шнуры прочих внешних устройств
-шнуры питания

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от qwek (ok) on 06-Мрт-10, 10:06 
Спасибо за ответ.
Опишу всё в более детально. Эта машинка - роутер. На борту три сетевые. Одна - локальная сеть, две других это выход на шейперы которые стоят за ней, рулится направление через iproute2 правил порядка 3000. В задачи роутера входит также блокировка входящих соединений если не разрешен форвад для пакетов источника. Таким образом в итоге имеем около 4000 правил forward accept в iptables.

Как я предполагаю в этом и есть проблема. Каждый пакет проверяется в списке правил forward, затем только отправляется дальше. Чем больше пакетов и выше скорость их поступления тем выше загрузка ядер процессом ksoftirq. При iptables stop нагрузка на ядра падает до 1% . Разделять прерывания от трёх сетевых карт пробовал - результат никакой. Драйверы сетевых менял - результат никакой. Пытался крутить настройками сетевых через ethertol - результат никакой. Пытался исправить положение через настройки sysctl - результат никакой.

Подскажите куда рыть дальше?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от sdog (ok) on 06-Мрт-10, 11:09 
>[оверквотинг удален]
>
>Как я предполагаю в этом и есть проблема. Каждый пакет проверяется в
>списке правил forward, затем только отправляется дальше. Чем больше пакетов и
>выше скорость их поступления тем выше загрузка ядер процессом ksoftirq. При
>iptables stop нагрузка на ядра падает до 1% . Разделять прерывания
>от трёх сетевых карт пробовал - результат никакой. Драйверы сетевых менял
>- результат никакой. Пытался крутить настройками сетевых через ethertol - результат
>никакой. Пытался исправить положение через настройки sysctl - результат никакой.
>
>Подскажите куда рыть дальше?

обновить ядро?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от PavelR (??) on 06-Мрт-10, 11:16 
>[оверквотинг удален]
>>списке правил forward, затем только отправляется дальше. Чем больше пакетов и
>>выше скорость их поступления тем выше загрузка ядер процессом ksoftirq. При
>>iptables stop нагрузка на ядра падает до 1% . Разделять прерывания
>>от трёх сетевых карт пробовал - результат никакой. Драйверы сетевых менял
>>- результат никакой. Пытался крутить настройками сетевых через ethertol - результат
>>никакой. Пытался исправить положение через настройки sysctl - результат никакой.
>>
>>Подскажите куда рыть дальше?
>
>обновить ядро?

Вы телепатически определили что ядро старое ?
Не сильно слежу за новостями развития netfilter, но разве там внесли какие-то сверпроизводительные изменения ?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от sdog (ok) on 06-Мрт-10, 14:13 
вам не нравится моё предложение обновить ядро? так и на пишите - "считаю идею обновления ядра необоснованой"
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

4. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от PavelR (??) on 06-Мрт-10, 11:13 
>Опишу всё в более детально.

наконец-то.

>Эта машинка - роутер.

мы догадывались...

>На борту три сетевые. Одна - локальная сеть, две других это выход на шейперы
>которые стоят за ней, рулится направление через iproute2 правил порядка 3000.

Чем люди думают, когда такие количества правил вбивают ? Чем обосновывается такое решение ? Приведите список этих правил, чтоли... Посмотрим на эти ужасы.

>В задачи роутера входит также блокировка входящих соединений если не разрешен
>форвад для пакетов источника.
>Таким образом в итоге имеем около 4000 правил forward accept в iptables.
>Как я предполагаю в этом и есть проблема.

:-)

>Каждый пакет проверяется в
>списке правил forward, затем только отправляется дальше.
>Чем больше пакетов и выше скорость их поступления тем выше загрузка ядер процессом ksoftirq.

как ни странно - но это так и должно быть )

>При iptables stop нагрузка на ядра падает до 1% . Разделять прерывания
>от трёх сетевых карт пробовал - результат никакой. Драйверы сетевых менял
>- результат никакой. Пытался крутить настройками сетевых через ethertol - результат
>никакой. Пытался исправить положение через настройки sysctl - результат никакой.
>
>Подскажите куда рыть дальше?

Ну, причинно-следственные связи вы устанавливать умеете.

А простая логика разве не подсказывает вариантов решения:

-Оптимизировать число правил (уменьшить количество проверок)
- порядок проверок оптимизируйте,
- выстроить древовидную структуру проверок
- уменьшить число правил

-Увеличивать количество маршрутизаторов.
-Сменить маршрутизатор на нечто более производительное?


Показывайте список правил "ip ru sh" и список правил "iptables -nvL FORWARD --line" - очень интересно.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от PavelR (??) on 06-Мрт-10, 11:16 
>[оверквотинг удален]
>
>Как я предполагаю в этом и есть проблема. Каждый пакет проверяется в
>списке правил forward, затем только отправляется дальше. Чем больше пакетов и
>выше скорость их поступления тем выше загрузка ядер процессом ksoftirq. При
>iptables stop нагрузка на ядра падает до 1% . Разделять прерывания
>от трёх сетевых карт пробовал - результат никакой. Драйверы сетевых менял
>- результат никакой. Пытался крутить настройками сетевых через ethertol - результат
>никакой. Пытался исправить положение через настройки sysctl - результат никакой.
>
>Подскажите куда рыть дальше?

кстати, надо еще выгрузить неиспользуемые модули netfilter. Но это даст не такой большой эффект.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

8. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от qwek (ok) on 06-Мрт-10, 16:46 
ip route show покажет только основные маршруты. Их 22 всего. С помощью iproute2 созданы собственные таблицы, список адресов в которые добавляется динамически:

ip rule add from 192.168.1.* table inet1
ip rule add from 192.168.1.* table inet2

и соответственно

ip route add default via $ip1 dev eth1 table inetl
ip route add default via $ip2 dev eth2 table inet2

Можно было конечно сначало через mangle метить пакеты и потом согласно метке отправлять на свой дефолтный шлюз с помощью iproute2, но решили делать иначе. Почему - не суть. Не здесь собака порыта, я так думаю.

А вот интереснее процесс:
Вот где ужас настоящий. Правила типа:

Chain FORWARD (policy DROP)
ACCEPT     all  --  192.168.1.10           0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            192.168.1.10

и таких строк ровно по числу активных абонентов пользующих интернет. Число правил на текущий момент:

[root@~]# iptables -vnxL | wc -l
4155

Вот именно из-за такого числа у меня возникают трудности, в момент пика загрузки падает пропускная способность роутера, два ядра загружены ksoftirq по 100%.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от qwek (ok) on 06-Мрт-10, 16:53 
По поводу ядра:
Linux 2.6.23.17 PAE
iptables v1.3.8
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от PavelR (??) on 06-Мрт-10, 18:51 
>[оверквотинг удален]
>         192.168.1.10
>
>и таких строк ровно по числу активных абонентов пользующих интернет. Число правил
>на текущий момент:
>
>[root@~]# iptables -vnxL | wc -l
>4155
>
>Вот именно из-за такого числа у меня возникают трудности, в момент пика
>загрузки падает пропускная способность роутера, два ядра загружены ksoftirq по 100%.

4 тысячи абонентов - это как минимум 16 /24 сеток

Ну так вот. У вас наверняка есть скрипт, который добавляет правила в FORWARD. Так вот. Его надо модифицировать. Чтобы на основании айпишника, которому разрещается интернет, он попадал в различные цепочки. По следующему принципу:

FORWARD:

iptables -I FORWARD -i INTERNAL_IF -j FORWARD_OUT
iptables -I FORWARD -i EXTERNAL_IF1 -j FORWARD_IN
iptables -I FORWARD -i EXTERNAL_IF2 -j FORWARD_IN


iptables -I FORWARD_OUT -s 192.168.0.0/25 -о FORWARD_OUT_0_0
iptables -I FORWARD_OUT -s 192.168.0.128/25 -о FORWARD_OUT_0_1
iptables -I FORWARD_OUT -s 192.168.1.0/25 -о FORWARD_OUT_1_0
iptables -I FORWARD_OUT -s 192.168.1.128/25 -о FORWARD_OUT_1_1
iptables -I FORWARD_OUT -s 192.168.2.0/25 -о FORWARD_OUT_2_0
iptables -I FORWARD_OUT -s 192.168.2.128/25 -о FORWARD_OUT_2_1
...
далее аналогично

а сами айпишники в скрипте проверяете, и запихиваете правила в соответствующую цепочки FORWARD_(IN|OUT)_X_Y

Таким образом резко уменьшите число проверок.

Заодно можно посмотреть в сторону connection tracking, или его отключения через table raw -j NOTRACK. Но это уже по ситуации.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

11. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от PavelR (??) on 06-Мрт-10, 18:58 

Эмм, что-то я совсем фигню пишу :-)


Вам надо:

man ipset

и парочку правил в FORWARD, вида

iptables -A FORWARD -i INT_IF -m set --match-set clients src
iptables -A FORWARD -i EXT_IF -m set --match-set clients dst


Но для этого возможно придется ядро пересобирать.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от qwek (ok) on 06-Мрт-10, 22:11 
>[оверквотинг удален]
>
>man ipset
>
>и парочку правил в FORWARD, вида
>
>iptables -A FORWARD -i INT_IF -m set --match-set clients src
>iptables -A FORWARD -i EXT_IF -m set --match-set clients dst
>
>
>Но для этого возможно придется ядро пересобирать.

Спасибо. Это то что надо! Ipset ясное дело у меня нет. Теперь осталось только потрудиться над тем чтобы он был. Обязательно отпишусь о результате!

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от qwek (ok) on 06-Мрт-10, 23:42 
Нашел вот какой аргумент:
=======
При тестировании, загрузка 70000 обычных правил заняла около часа, в то время как nfqueue (http://nfqueue.sf.net) почти мгновенно подгружает большие cписки блокировки, оформленные в p2p, dat, csv форматах или преобразованные в специальный сжатый бинарный вид.
=======
http://www.frnd.org/thread-15280-post-34035.html#pid34035
Ссылаются на http://www.opennet.dev

Это действительно так?

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от PavelR (??) on 07-Мрт-10, 08:12 
>[оверквотинг удален]
>=======
>При тестировании, загрузка 70000 обычных правил заняла около часа, в то время
>как nfqueue (http://nfqueue.sf.net) почти мгновенно подгружает большие cписки блокировки, оформленные в
>p2p, dat, csv форматах или преобразованные в специальный сжатый бинарный вид.
>
>=======
>http://www.frnd.org/thread-15280-post-34035.html#pid34035
>Ссылаются на http://www.opennet.dev
>
>Это действительно так?

"Обычных правил".... (сравним обычный порошок и наш супертайд) - 70000 наверное всё-таки правил iptables ;-)

И что это вы цитаты обрезанно как-то рассматриваете. Как насчет:

В статье "Filtering traffic based on thousands of IPs efficiently (http://www.debian-administration.org/articles/540)" рассказывается о программе nfqueue (http://nfqueue.sf.net), _которая работает на пользовательском уровне_ и использует NetFilter библиотеку netlink-queue.


Оно вам надо ? Не, попробуйте конечно...

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от qwek (ok) on 07-Мрт-10, 21:05 
Да потому и спрашиваю, что сомневаюсь сильно надо ли мне это. Попытка прикрутить IPSET пока не увенчалась успехом. К своему ядру не получается прикрутить. Завтра возьму тестовую машинку, поставлю CentOS и буду пробовать на нём.

Нет ли полезных советов по этому поводу (установка ipset), чтобы не наступать на грабли?

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от qwek (ok) on 10-Мрт-10, 23:32 
Извините, что долго не отписывался. Проблема полностью решена установкой IPSET. Большое спасибо всем, кто помогал в решение вопроса. Opennet - лучший ресурс для системных администраторов. Еще раз спасибо!

Если у кого-то будут какие либо вопросы - с лёгкостью дам ответы на них.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от 3y6 email(??) on 01-Июн-10, 23:52 
>Извините, что долго не отписывался. Проблема полностью решена установкой IPSET. Большое спасибо
>всем, кто помогал в решение вопроса. Opennet - лучший ресурс для
>системных администраторов. Еще раз спасибо!
>
>Если у кого-то будут какие либо вопросы - с лёгкостью дам ответы
>на них.

ну и?...;-)
где мануал по установке?!...три месяца прошло уже!

шучу конечно )

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

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

18. "ksoftirq каждый вечер грузит систему на 100%"  +/
Сообщение от qwek (ok) on 10-Дек-10, 21:23 
> у меня проблема аналогичная, и судя по всему - решается эффективно только
> айписетом...
> были подводные камни? остались ли ссылки на мануалы, которые помогли установить-настроить?...
> плз...

Я пошел по пути наименьшего сопротивления - выбрал систему в которой установка ipset не требовала накладывать патч на ядро и сводилась практически к одной команде. Таковой оказалась CentOS. Остальное не сложно найти в инернете, к примеру здесь:

http://mysyslog.ru/posts/244

И все таки если будут конкретные вопросы - отвечу обязательно.


Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру