Jump to content

Recommended Posts

Posted (edited)

Делаю маленький эксперимент..

Интересует насущный вопрос - сколько можно использовать правил в разумных пределах ?? чтобы ksoftirqd не жрали весь проц ?

На хеш таблицах сколько правил у кого ? У меня после 1300 правил начинается ужас.. ksoftirqd забирает по 70% на четырех процах.

Сетевые 82576 , процы - 2х2Ггц четырехядерки ксеоны, ядро 3.0, трафика суммарного подавал 1.5 гигабита.

Edited by martini
Posted

#nas3 /etc/shaper #tc -s -d filter show dev ifb0 parent 0:0 | grep filte | wc -l

999

#nas3 /etc/shaper #tc -s -d filter show dev eth0.2 parent 0:0 | grep filte | wc -l

4485

В час пик на обоих интефейсах >5к будет, сейчас часть клиентов не шейпится в принципе. Никаких сбоев или роста загрузки нет.

Posted

в соседнем топике это у меня:

 

не смог создать более 2048 фильтров на устройство, при этом ограничение не в адресации, а именно по количеству

 

тестировал на:

Centos 5.6 x86_64

Gentoo i686 и x86_64

Posted

tc qdisc del dev eth1 root handle 1: htb

tc qdisc add dev eth1 root handle 1: htb

 

tc class add dev eth1 parent 1: classid 1:1 htb rate 1gbit ceil 1gbit

tc class add dev eth1 parent 1:1 classid 1:2 htb rate 1500kbit ceil 1500kbit

 

/sbin/tc filter add dev eth1 parent 1:0 protocol ip u32

/sbin/tc filter add dev eth1 parent 1:0 handle 10: protocol ip u32 divisor 256

/sbin/tc filter add dev eth1 parent 1:0 handle 11: protocol ip u32 divisor 256

/sbin/tc filter add dev eth1 parent 1:0 handle 12: protocol ip u32 divisor 256

/sbin/tc filter add dev eth1 parent 1:0 handle 13: protocol ip u32 divisor 256

 

/sbin/tc filter add dev eth1 parent 1:0 protocol ip u32 ht 800:: match ip dst 0.0.0.0/0 hashkey mask 0xff000000 at 16 link 10:

/sbin/tc filter add dev eth1 parent 1:0 protocol ip u32 ht 10:0a: match ip dst 10.0.0.0/8 hashkey mask 0xff0000 at 16 link 11:

/sbin/tc filter add dev eth1 parent 1:0 protocol ip u32 ht 11:1e: match ip dst 10.30.0.0/16 hashkey mask 0xff00 at 16 link 12:

/sbin/tc filter add dev eth1 parent 1:0 protocol ip u32 ht 12:63: match ip dst 10.30.99.0/24 hashkey mask 0xff at 16 link 13:

/sbin/tc filter add dev eth1 parent 1:0 protocol ip u32 ht 13:63: match ip dst 10.30.99.99/32 flowid 1:2

 

Идея с хешами верна ? вроде нигде не ошибся .. но чем больше фильтров становится - тем больше процессора жрет..

Posted

yannails

Ограничение есть, если правила все проверяются последовательно. 32 битный идентификатор разбивается так 0xaaa:0xbb:0xccc, где (приблизительно, точно не помню) aaa - хендл или номер хештаблицы, bb - индекс в хештаблице, ccc - порядок в последовательности фильтров для данного элемента в хештаблице.

 

martini

такая длинная цепочка не нужна (скорее всего вносит неслабую путаницу и непредсказуемый переход по правилам из-за коллизий идентификаторов). Достаточно "match ip dst 0.0.0.0/0 hashkey mask 0xff at 16" и "match ip dst 10.30.99.99/32" на данной ячейке хештаблицы. При этом этой же ячейкой проверяется и, например, 10.30.98.99, 10.30.100.99, 10.20.99.99 и т.д.

Posted

хмм.. сделал несколько изменений :

 

tc qdisc del dev eth1 root

tc qdisc add dev eth1 root handle 1: htb

 

tc class add dev eth1 parent 1: classid 1:1 htb rate 1gbit ceil 1gbit

tc class add dev eth1 parent 1:1 classid 1:2 htb rate 1500kbit ceil 1500kbit

 

tc filter add dev eth1 parent 1:0 protocol ip u32

tc filter add dev eth1 parent 1:0 handle 10: protocol ip u32 divisor 256

tc filter add dev eth1 parent 1:0 protocol ip u32 ht 800:: match ip dst 10.30.0.0/16 hashkey mask 0x000000ff at 16 link 10:

tc filter add dev eth1 protocol ip parent 1:0 u32 ht 10:63: match ip dst 10.30.99.99/32 flowid 1:2

 

ситуация не изменилась, загрузка процов прыгает сразу вверх после тыщи фильтров

Posted

это оригинальный код шейпера?

ни где не задан r2q или quantum, он тебе не ругаеться в лог quantum of class is big или quantum of class is small?

и я не знаю точно, на сколько это критично но у тебя у корневой дисциплины не создан default class

Posted

иногда ругается на quantum of class is big и quantum of class is small , какие значения лучше поставить для гигабита ??

дефалт клас создан, я забыл его скопировать. (без него тоже работало)

 

По поводу проблемы количества правил ))) дурдом просто )) - без прио в фильтрах не хочет создавать больше 2048 правил и не работает хеш как надо, как только ставишь прио, все работает идеально.

Posted

tc filter обрабатываются линейно , посему лучше их не юзать в таком количестве. вроде давно уже режется скорость на основе классов

Posted

tc filter обрабатываются линейно , посему лучше их не юзать в таком количестве. вроде давно уже режется скорость на основе классов

А классы работают с помощью волшебства, а не фильтров?

Posted

Ещё с HTB на HFSC уйдите, если у вас ядро, конечно, достаточно свежее (в младших ядрах, не помню до какой версии, HFSC может падать вместе с ядром). Это, конечно, проблемы цепочек фильтров из 100500 итемов не решит, но в целом производительность поправит.

Posted

недавно нумерацию классов на hex числа перевел, т.к. может быть только 4 цифры (0xffff)

 

а по теме, как видно:

tc -s -d filter show dev eth0.38 parent 1:|grep filter|wc -l
10029

ядро 2.6.38.8

нагрузка на сервер 4хIntel® Core™ i5 CPU 760 @ 2.80GHz

top - 23:00:10 up 1 day, 11:10,  1 user,  load average: 0.12, 0.08, 0.06
Tasks:  72 total,   2 running,  70 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni, 52.3%id,  0.0%wa,  0.0%hi, 47.7%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni, 50.6%id,  0.0%wa,  0.0%hi, 49.4%si,  0.0%st
Cpu2  :  1.1%us,  0.0%sy,  0.0%ni, 53.4%id,  0.0%wa,  0.0%hi, 45.5%si,  0.0%st
Cpu3  :  1.1%us,  0.0%sy,  0.0%ni, 54.0%id,  0.0%wa,  0.0%hi, 44.8%si,  0.0%st

трафика 700М/с

 

у вас tc qdisc созданы на классы?

какие quantum, burst, cburst ставите в классах?

Posted

shaper172:~/shaper# tc -s -d filter show dev eth1 | grep filter -c

8850

на втором интерфейсе столько же фильтров, трафика бегает 2 гига в сумме, загрузка 1%

top - 22:58:51 up 24 days, 12:12,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  86 total,   2 running,  83 sleeping,   0 stopped,   1 zombie
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Cpu4  :  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  :  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Cpu6  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

 

кстати, а чем HFSC лучше чем HTB ?

 

И еще вопрос, кто чем шейпит на 10Г интерфейсах ??

Posted (edited)

Если взглянуть в код - у HFSC меньше сложность операций в цепочках queue / dequeue.

Кроме того, на практике HFSC оказался куда как более предсказуем в плане параметров.

Edited by Alex/AT
Posted

Core-3.AS51997.net:~# tc filter show dev ifb0 | wc -l
14784
Core-3.AS51997.net:~# tc filter show dev ifb1 | wc -l
14784
Core-3.AS51997.net:~# w
04:18:51 up 46 days, 20:04,  1 user,  load average: 0.01, 0.03, 0.00

 

На хэш-фильтрах.

Posted

так все таки )) как там с 10Г ??? кто то пробовал ? у кого то работает ?

не пробовали, идем по схеме размножения шейперов, и деления нагрузки на каждый

 

а у вас судя по нагрузке должен гиг 5-6 прожевать (на 10Г интерфейсе)

Posted

2 dmitry_ - исходя из загрузки процов я такую же цифру прикидывал. Завтра добавлю еще 2 гига трафика.

Просто интересна работа tc на интерфейсах 10Г, ато в инете гуляют какие то топики про неточность на 10Г (правда ядра там старые еще)

И еще вопрос - на бондинге tc нормально работает ? или в таком случае лучше на ifb заворачивать и шейпить на нем ?

Posted

shaper172:~/shaper# tc -s -d filter show dev eth1 | grep filter -c

8850

на втором интерфейсе столько же фильтров, трафика бегает 2 гига в сумме, загрузка 1%

top - 22:58:51 up 24 days, 12:12,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  86 total,   2 running,  83 sleeping,   0 stopped,   1 zombie
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Cpu4  :  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  :  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Cpu6  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

 

кстати, а чем HFSC лучше чем HTB ?

 

И еще вопрос, кто чем шейпит на 10Г интерфейсах ??

 

nat, netflow в системе задействованы или netfilter вообще отключен в ядре?

Posted
И еще вопрос - на бондинге tc нормально работает?

Абсолютно. Правда, я про HFSC, опять же, от HTB отказались как раз в силу непредсказуемости.

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.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.