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

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

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

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

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


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

 

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? :)

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


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

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

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

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


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

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

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

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

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

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

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


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

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

 

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

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

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


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

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

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

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


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

Столкнулся с проблемой 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

 

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

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

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


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

Dimka88

uname -a

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

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

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


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

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

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

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


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

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 и там все нормально?

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


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

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

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

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


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

Join the conversation

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

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

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

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

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

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

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