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

ipfw + Linux = ksoftirqd 100%

Еще лучше не копировать трафик с помощью ng_tee, а сделать как показано на схеме 7

В теории верно, на практике оказалось наоборот: при переходе от "ipfw netgraph" к "ipfw ngtee"

производительность выросла, загрузка из swi1 и ng_queue ушла в прерывание сетевой карты.

Share this post


Link to post
Share on other sites

 

ipfw add pipe tablearg ip from any to table(1) in

ipfw add pipe tablearg ip from table(2) to any out

 

ipfw pipe 1000 config bw 512Kbit/s mask dst-ip 0xffffffff

ipfw pipe 1001 config bw 512Kbit/s mask src-ip 0xffffffff

 

ipfw table 1 add 175.2.2.1 1000

ipfw table 2 add 175.2.2.1 1001

 

 

А как теперь сюда приделать очереди для приоретизации http, icmp? :)

Share this post


Link to post
Share on other sites

А как теперь сюда приделать очереди для приоретизации http, icmp? :)

У меня NAT делается в pf, поэтому приоритезацию я поместил туда же.

Share this post


Link to post
Share on other sites

iptables с блеском решает такие задачи, зачем пробовать что-то портированое не понимаю...

Когда идёте по ссылке, не ограничивайтесь прочтением заголовка.

Там сравниваются не только nat, но и шейперы.

iptables решает задачу шейпирования? с блеском? :)

iptables+tc естественно

Share this post


Link to post
Share on other sites

Если сделать по схеме: 2 правила с tablearg и на каждого абонента по 2 трубы, это ведь уже не 1000 правил, а от количества труб нагрузка не должна зависеть, по крайней мере не в линейной зависимости, это ведь уже должно дать эффект?

 

Ведь в чем разницы между динамическими и статическими трубами?

Edited by Zohan

Share this post


Link to post
Share on other sites

В случае с tablearg хэш вида IP => "pipe number" создается вручную. Разница в том, что с динамическими пайпами не нужно создавать кучу правил с описанием каждого pipe в отдельности. Но при этом можно сделать только по одному IP на pipe. Для tablearg есть возможность классифицировать трафик от нескольких IP в один pipe.

Edited by photon

Share this post


Link to post
Share on other sites

Столкнулся с проблемой ipfw. Растёт нагрузка

Tasks: 135 total,   1 running, 134 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni, 89.2%id,  0.0%wa,  6.6%hi,  4.2%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.7%hi,  0.3%si,  0.0%st
Cpu2  :  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  :  0.0%us,  1.0%sy,  0.0%ni, 66.1%id,  0.0%wa,  1.7%hi, 31.2%si,  0.0%st
Cpu5  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%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,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3104792k total,   422192k used,  2682600k free,    79952k buffers
Swap:  4031480k total,        0k used,  4031480k free,   257972k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                    
  16 root      20   0     0    0    0 S   24  0.0  11:05.02 ksoftirqd/4

 

Характеристики

intel® Core™ i7 CPU 920 @ 2.67GHz

 

03:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

03:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

в бондинге

 

Тюнинг ipfw

 

echo "8192" > /sys/module/ipfw_mod/parameters/hash_size
echo "8192" > /sys/module/ipfw_mod/parameters/dyn_buckets
echo "8192" > /sys/module/ipfw_mod/parameters/dyn_max
echo "10" > /sys/module/ipfw_mod/parameters/autoinc_step
echo "1" > /sys/module/ipfw_mod/parameters/io_fast

 

Правила задаются так

 

/usr/local/sbin/ipfw pipe 11000 config mask src-ip 0xffffffff bw 10Mbits queue 100 noerror
/usr/local/sbin/ipfw pipe 11001 config mask dst-ip 0xffffffff bw 10Mbits queue 100 noerror
/usr/local/sbin/ipfw pipe 15240 config mask src-ip 0xffffffff bw 20Mbits queue 100 noerror
/usr/local/sbin/ipfw pipe 15241 config mask dst-ip 0xffffffff bw 20Mbits queue 100 noerror
/usr/local/sbin/ipfw pipe 20480 config mask src-ip 0xffffffff bw 30Mbits queue 100 noerror
/usr/local/sbin/ipfw pipe 20481 config mask dst-ip 0xffffffff bw 30Mbits queue 100 noerror
/usr/local/sbin/ipfw pipe 26000 config mask src-ip 0xffffffff bw 50Mbits queue 100 noerror
/usr/local/sbin/ipfw pipe 26001 config mask dst-ip 0xffffffff bw 50Mbits queue 100 noerror
/usr/local/sbin/ipfw add pipe tablearg ip from "table(1)" to any out via bond0
/usr/local/sbin/ipfw add pipe tablearg ip from any to "table(2)" in via bond0
/usr/local/sbin/ipfw add 10002 allow all from any to any via bond0

 

В таблицу вношу так

/usr/local/sbin/ipfw table 1 add $IPADDR $PIPE_OUT
/usr/local/sbin/ipfw table 2 add $IPADDR $PIPE_IN

 

Наблюдаю kernel panic

фото

Ядро собрано с параметром hz=1000

 

Подскажите, как исправить.

Edited by Dimka88

Share this post


Link to post
Share on other sites

Dimka88

uname -a

и обновите ipfw/dummynet до последней версии. Также драйвера сетевых карт.

И после чего появились паники?

Share this post


Link to post
Share on other sites

Zohan,

root@pppd:~# uname -a
Linux pppd 2.6.32.5-pppd #1 SMP Wed Feb 29 12:57:15 EET 2012 i686 GNU/Linux

 

dummynet взял у марты link. Версия ipfw3-20110810. На ipfw3-20120119 при параметре io_fast 1 шейпер не срабатывал, вернее с таблиц не пападало в пайпы.

Затык может быть в драйверах? С htb паники не было на тех же драйверах. И еще есть пару серверов с той же конфигурацией и с той же версией igb кушают 2Gbps

драйвера

root@pppd:~# modinfo ig
filename:       /lib/modules/2.6.32.5-pppd/kernel/drivers/net/igb/igb.ko
version:        2.1.9

Подгружаю модуль и задаю сетевые параметры так

rmmod igb
modprobe igb RSS=8,8,8,8
modprobe bonding miimon=100
ifconfig eth1 up
ifconfig eth1 txqueuelen 10000
ifconfig eth2 up
ifconfig eth2 txqueuelen 10000
ifconfig bond0 up
ifenslave bond0 eth1 eth2
ifconfig bond0 10.0.1.1 netmask 255.255.255.0
route add default gw 10.0.1.254
/sbin/ethtool -K eth1 tx off rx off sg off gro off gso off
/sbin/ethtool -K eth2 tx off rx off sg off gro off gso off

В скором времени после надписи в dmessege

CA: hpet increasing min_delta_ns to 15000 nsec

Потом паника, фото паники постом выше

 

Прерывания на карте задаю так

/bin/echo 1 > /proc/irq/54/smp_affinity
/bin/echo 2 > /proc/irq/55/smp_affinity
/bin/echo 4 > /proc/irq/56/smp_affinity
/bin/echo 8 > /proc/irq/57/smp_affinity
/bin/echo 10 > /proc/irq/58/smp_affinity
/bin/echo 20 > /proc/irq/59/smp_affinity
/bin/echo 40 > /proc/irq/60/smp_affinity
/bin/echo 80 > /proc/irq/61/smp_affinity

/bin/echo 1 > /proc/irq/65/smp_affinity
/bin/echo 2 > /proc/irq/66/smp_affinity
/bin/echo 4 > /proc/irq/67/smp_affinity
/bin/echo 8 > /proc/irq/68/smp_affinity
/bin/echo 10 > /proc/irq/69/smp_affinity
/bin/echo 20 > /proc/irq/70/smp_affinity
/bin/echo 40 > /proc/irq/71/smp_affinity
/bin/echo 80 > /proc/irq/72/smp_affinity

Заметил что на 4ом ядре при увеличении нагрузки в /proc/interrupts динамически рос показатель Local timer interrupts

 

Смутило и ethtool -g eth1\2 "TX\RX:256", хотя на других серверах также

Ring parameters for eth1\2:
Pre-set maximums:
RX:		4096
RX Mini:	0
RX Jumbo:	0
TX:		4096
Current hardware settings:
RX:		256
RX Mini:	0
RX Jumbo:	0
TX:		256

Edited by Dimka88

Share this post


Link to post
Share on other sites

Zohan,

root@pppd:~# uname -a
Linux pppd 2.6.32.5-pppd #1 SMP Wed Feb 29 12:57:15 EET 2012 i686 GNU/Linux

И еще есть пару серверов с той же конфигурацией и с той же версией igb кушают 2Gbps

Тоже с ipfw/dummynet и там все нормально?

Share this post


Link to post
Share on other sites

Zohan, там используется tc.

Каким образом можно синтетически вызвать нагрузку на dummynet, что бы постоянно не дергать туда клиентов?

 

По поводу Local timer interrupts после рестарта ipfw/dummynet выбрал 7-е ядро

 

CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7

 

LOC: 34618 1562926 19061 1049892 98077 11192 120428 3625346 Local timer interrupts

Edited by Dimka88

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this