S_ergey Опубликовано 18 декабря, 2011 · Жалоба cache size : 2048 KB меняй проц с кешем на 8-12 метров и все побежит. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_random Опубликовано 18 декабря, 2011 · Жалоба cache size : 2048 KB меняй проц с кешем на 8-12 метров и все побежит. отключил заворот в ifb0 и ifb1 нагрузка сразу упала, пинги выровнялись. Если поменяю на "кешем на 8-12 метров" проблем даже с ifb не будет? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
S_ergey Опубликовано 18 декабря, 2011 · Жалоба processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 44 model name : Intel® Xeon® CPU E5620 @ 2.40GHz stepping : 2 cpu MHz : 2399.707 cache size : 12288 KB physical id : 0 Машина с 4-мя ядрами ifb+nat+tc+iptables перемалывает 800 M Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 18 декабря, 2011 · Жалоба Нагрузка упала не из-за самого редиректа на ifb, а потому что без редиректа шейпер больше не работает и не грузит систему)) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_random Опубликовано 18 декабря, 2011 · Жалоба Нагрузка упала не из-за самого редиректа на ifb, а потому что без редиректа шейпер больше не работает и не грузит систему)) =) спасибо за замечание. кто-то предлагал QOS без использования ifb.... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 18 декабря, 2011 · Жалоба =) спасибо за замечание. кто-то предлагал QOS без использования ifb.... Шейпер на исход вешается на интерфейс/влан внешнего мира, вход - на каждый пользовательский влан. Но вообще редирект на ifb малозатратная операция, не должно тут быть каких-либо проблем. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_random Опубликовано 18 декабря, 2011 (изменено) · Жалоба =) спасибо за замечание. кто-то предлагал QOS без использования ifb.... Шейпер на исход вешается на интерфейс/влан внешнего мира, вход - на каждый пользовательский влан. Но вообще редирект на ifb малозатратная операция, не должно тут быть каких-либо проблем. такой вариант мне не подходит, так как надо киосить межвлановский (между клиентами) трафик + внешний. До некоторых пор мне хватало схемы на ifb. Но сейчас явно я уперся в возможности железа. Народ рекомендует брать проц с кешам 8-12мБайт. Этот параметр критичен? Изменено 18 декабря, 2011 пользователем _random Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 19 декабря, 2011 · Жалоба Что-то вы странные вещи говорите. кусок из работающего скрипта: #!/bin/sh /sbin/tc qdisc del dev eth0 root /sbin/tc qdisc del dev eth1 root /sbin/tc qdisc add dev eth0 root handle 1: htb r2q 45000 default ffff /sbin/tc qdisc add dev eth1 root handle 1: htb r2q 45000 default ffff /sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 540Mbit ceil 1000Mbit burst 24000 cburst 125000 /sbin/tc class add dev eth1 parent 1: classid 1:1 htb rate 540Mbit ceil 1000Mbit burst 24000 cburst 125000 /sbin/tc class add dev eth0 parent 1: classid 1:ffff htb rate 1Mbit ceil 100Mbit prio 7 quantum 1514 /sbin/tc class add dev eth1 parent 1: classid 1:ffff htb rate 1Mbit ceil 100Mbit prio 7 quantum 1514 /sbin/tc qdisc add dev eth0 parent 1:ffff handle ffff: pfifo limit 1000 /sbin/tc qdisc add dev eth1 parent 1:ffff handle ffff: pfifo limit 1000 /sbin/tc filter add dev eth0 parent 1: protocol ip prio 1000 u32 match u32 0 0 classid 1:ffff /sbin/tc filter add dev eth1 parent 1: protocol ip prio 1000 u32 match u32 0 0 classid 1:ffff /sbin/tc class add dev eth0 parent 1: classid 1:fffe htb rate 400Mbit prio 7 quantum 1514 /sbin/tc class add dev eth1 parent 1: classid 1:fffe htb rate 400Mbit prio 7 quantum 1514 /sbin/tc qdisc add dev eth0 parent 1:fffe handle fffe: pfifo limit 2000 /sbin/tc qdisc add dev eth1 parent 1:fffe handle fffe: pfifo limit 2000 /sbin/tc filter add dev eth0 parent 1: protocol ip prio 2 u32 match ip dst 10.0.0.0/8 classid 1:fffe /sbin/tc filter add dev eth0 parent 1: protocol ip prio 2 u32 match ip dst LOCAL_PEER/22 classid 1:fffe /sbin/tc filter add dev eth0 parent 1: protocol ip prio 2 u32 match ip dst 172.16.0.0/12 classid 1:fffe /sbin/tc filter add dev eth0 parent 1: protocol ip prio 2 u32 match ip dst 192.168.0.0/16 classid 1:fffe /sbin/tc filter add dev eth0 parent 1: protocol ip prio 2 u32 match ip dst LOCAL_NET/23 classid 1:fffe /sbin/tc filter add dev eth1 parent 1: protocol ip prio 2 u32 match ip src 10.0.0.0/8 classid 1:fffe /sbin/tc filter add dev eth1 parent 1: protocol ip prio 2 u32 match ip src LOCAL_PEER/22 classid 1:fffe /sbin/tc filter add dev eth1 parent 1: protocol ip prio 2 u32 match ip src 172.16.0.0/12 classid 1:fffe /sbin/tc filter add dev eth1 parent 1: protocol ip prio 2 u32 match ip src 192.168.0.0/16 classid 1:fffe /sbin/tc filter add dev eth1 parent 1: protocol ip prio 2 u32 match ip src LOCAL_NET/23 classid 1:fffe /sbin/tc filter add dev eth0 parent 1:0 handle 10: protocol ip u32 divisor 16 /sbin/tc filter add dev eth1 parent 1:0 handle 10: protocol ip u32 divisor 16 /sbin/tc filter add dev eth0 parent 1:0 handle 64: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 64: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 65: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 65: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 66: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 66: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 67: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 67: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 68: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 68: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 69: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 69: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 6a: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 6a: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 6b: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 6b: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 6c: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 6c: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 6d: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 6d: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 6e: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 6e: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 6f: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 6f: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 70: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 70: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 71: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 71: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 72: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 72: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 handle 73: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth1 parent 1:0 handle 73: protocol ip prio 10 u32 divisor 256 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src LOCAL_SUBNET1/24 hashkey mask 0x000000ff at 12 link 64: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst LOCAL_SUBNET1/24 hashkey mask 0x000000ff at 16 link 64: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src LOCAL_SUBNET2/24 hashkey mask 0x000000ff at 12 link 65: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst LOCAL_SUBNET2/24 hashkey mask 0x000000ff at 16 link 65: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.0.0/24 hashkey mask 0x000000ff at 12 link 66: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.0.0/24 hashkey mask 0x000000ff at 16 link 66: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.1.0/24 hashkey mask 0x000000ff at 12 link 67: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.1.0/24 hashkey mask 0x000000ff at 16 link 67: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.2.0/24 hashkey mask 0x000000ff at 12 link 68: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.2.0/24 hashkey mask 0x000000ff at 16 link 68: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.3.0/24 hashkey mask 0x000000ff at 12 link 69: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.3.0/24 hashkey mask 0x000000ff at 16 link 69: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.4.0/24 hashkey mask 0x000000ff at 12 link 6a: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.4.0/24 hashkey mask 0x000000ff at 16 link 6a: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.5.0/24 hashkey mask 0x000000ff at 12 link 6b: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.5.0/24 hashkey mask 0x000000ff at 16 link 6b: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.6.0/24 hashkey mask 0x000000ff at 12 link 6c: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.6.0/24 hashkey mask 0x000000ff at 16 link 6c: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.7.0/24 hashkey mask 0x000000ff at 12 link 6d: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.7.0/24 hashkey mask 0x000000ff at 16 link 6d: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.8.0/24 hashkey mask 0x000000ff at 12 link 6e: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.8.0/24 hashkey mask 0x000000ff at 16 link 6e: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.9.0/24 hashkey mask 0x000000ff at 12 link 6f: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.9.0/24 hashkey mask 0x000000ff at 16 link 6f: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.10.0/24 hashkey mask 0x000000ff at 12 link 70: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.10.0/24 hashkey mask 0x000000ff at 16 link 70: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.11.0/24 hashkey mask 0x000000ff at 12 link 71: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.11.0/24 hashkey mask 0x000000ff at 16 link 71: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.12.0/24 hashkey mask 0x000000ff at 12 link 72: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.12.0/24 hashkey mask 0x000000ff at 16 link 72: /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip src 172.16.13.0/24 hashkey mask 0x000000ff at 12 link 73: /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip dst 172.16.13.0/24 hashkey mask 0x000000ff at 16 link 73: # 9 /sbin/tc class add dev eth1 parent 1: classid 1:9 htb rate 128kbit prio 1 quantum 1514 /sbin/tc qdisc add dev eth1 parent 1:9 handle 9: sfq perturb 10 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 ht 65:1f: match ip dst LOCAL_SUBNET2.31/255.255.255.255 flowid 1:9 /sbin/tc class add dev eth0 parent 1: classid 1:9 htb rate 128kbit prio 1 quantum 1514 /sbin/tc qdisc add dev eth0 parent 1:9 handle 9: sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 ht 65:1f: match ip src LOCAL_SUBNET2.31/255.255.255.255 flowid 1:9 # 11 /sbin/tc class add dev eth1 parent 1: classid 1:b htb rate 1024kbit prio 1 quantum 1514 /sbin/tc qdisc add dev eth1 parent 1:b handle b: sfq perturb 10 /sbin/tc class add dev eth0 parent 1: classid 1:b htb rate 1024kbit prio 1 quantum 1514 /sbin/tc qdisc add dev eth0 parent 1:b handle b: sfq perturb 10 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 ht 68:1b: match ip dst 172.16.2.27/255.255.255.255 flowid 1:b /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 ht 68:1b: match ip src 172.16.2.27/255.255.255.255 flowid 1:b /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 ht 65:15: match ip dst LOCAL_SUBNET2.21/255.255.255.255 flowid 1:b /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 ht 65:15: match ip src LOCAL_SUBNET2.21/255.255.255.255 flowid 1:b ... и там дальше расписаны остальные 100500 клиентов итого все шейпится, средняя картина при загрузке на интерфейсах по 400-500М: CPU0 : 0.0%us, 0.0%sy, 0.0%ni, 86.7%id, 0.0%wa, 0.0%hi, 13.3%si, 0.0%st CPU1 : 0.0%us, 0.0%sy, 0.0%ni, 92.0%id, 0.0%wa, 0.0%hi, 8.0%si, 0.0%st Кстати, раньше, когда NAT был поднят на этой же машине, и без ifb обойтись было нельзя, тоже наблюдались затупы на скоростях 150-250М (сильный джиттер, лаги в онлайн играх, заикания в VoIP и осыпание картинки во всяких так онлайн трансляциях). А с массовой миграцией торрент-клиентов на udp вообще стало очень грустно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_random Опубликовано 19 декабря, 2011 · Жалоба Кстати, раньше, когда NAT был поднят на этой же машине, и без ifb обойтись было нельзя, тоже наблюдались затупы на скоростях 150-250М (сильный джиттер, лаги в онлайн играх, заикания в VoIP и осыпание картинки во всяких так онлайн трансляциях). А с массовой миграцией торрент-клиентов на udp вообще стало очень грустно. спасибо за пример, но описанный мной роутер решает не задачу шейпера для интернета, а занимается маршрутизацией трафика между сегмент сети. Поясню, на ЕТН1 навешаны клиентские вланы ВЛ2, ВЛ3, ВЛ.., ВЛ 100; физическое подключение клиентов разное (оптика, медь, радио), задача шейпера на этой машине правильно прижать трафик между вланами. Ваш шейпер, я так понимаю, заточет чисто для для нета, а все клиенты либо обмениваются трафиком по полной, либо и вовсе изолированы друг от друга. Пока я не нашел нормальной реализации вх/вых трафика без вирт. интерфейсов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 19 декабря, 2011 (изменено) · Жалоба Для виртуальных то же самое прописывается как и для физических. с точки зрения шейпера они идентичные. Поправьте, если ошибаюсь в рассуждениях. Итак, у вас задача зароутить пачку vlan'ов, смотрящих в кучу разнородных по пропускной способности сетей. Т.е. на влан, смотрящий в сторону WiFi, к примеру нельзя отдавать более 10М, на оптику можно на ограничения положить, на HDSL 2M и далее по вкусу. /sbin/tc qdisc add dev WiFi_vlan0 root handle 1: htb default ffff /sbin/tc class add dev WiFi_vlan0 parent 1: classid 1:1 htb rate 10Mbit /sbin/tc class add dev WiFi_vlan0 parent 1: classid 1:ffff htb rate 10Mbit ceil 10Mbit prio 7 quantum 1514 /sbin/tc filter add dev WiFi_vlan0 parent 1: protocol ip prio 1000 u32 match u32 0 0 classid 1:ffff /sbin/tc qdisc add dev DSL_vlan0 root handle 1: htb default ffff /sbin/tc class add dev DSL_vlan0 parent 1: classid 1:1 htb rate 2Mbit /sbin/tc class add dev DSL_vlan0 parent 1: classid 1:ffff htb rate 2Mbit ceil 2Mbit prio 7 quantum 1514 /sbin/tc filter add dev DSL_vlan0 parent 1: protocol ip prio 1000 u32 match u32 0 0 classid 1:ffff /sbin/tc qdisc add dev Optica_vlan0 root handle 1: htb default ffff /sbin/tc class add dev Optica_vlan0 parent 1: classid 1:1 htb rate 1000Mbit /sbin/tc class add dev Optica_vlan0 parent 1: classid 1:ffff htb rate 1000Mbit ceil 1000Mbit prio 7 quantum 1514 /sbin/tc filter add dev Optica_vlan0 parent 1: protocol ip prio 1000 u32 match u32 0 0 classid 1:ffff в результате при прокачивании из влан с оптикой на вайфай скорость будет резаться на 10М, в сторону DSL - 2М. В сторону оптики мы планку поставили на 1 гигабит. Изменено 19 декабря, 2011 пользователем taf_321 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
muchacho Опубликовано 19 декабря, 2011 · Жалоба Помогите, пожалуйста, с проблемой. Есть роутер с 2 Intel® Xeon® CPU E5420 @ 2.50GHz и 2 Intel Corporation 82576 Gigabit Network Connection. igb RSS=2,2,2,2 QueuePairs=0,0,0,0 Прерывания прибиты к ядрам. root@router:/etc# ethtool -i eth0 driver: igb version: 3.2.10 firmware-version: 1.5-1 bus-info: 0000:03:00.0 root@router:/etc# ethtool -i eth2 driver: igb version: 3.2.10 firmware-version: 1.2-1 bus-info: 0000:0a:00.0 root@router:/etc# ethtool -c eth0 Coalesce parameters for eth0: Adaptive RX: off TX: off stats-block-usecs: 0 sample-interval: 0 pkt-rate-low: 0 pkt-rate-high: 0 rx-usecs: 325 rx-frames: 0 rx-usecs-irq: 0 rx-frames-irq: 0 tx-usecs: 325 tx-frames: 0 tx-usecs-irq: 0 tx-frames-irq: 128 rx-usecs-low: 0 rx-frame-low: 0 tx-usecs-low: 0 tx-frame-low: 0 rx-usecs-high: 0 rx-frame-high: 0 tx-usecs-high: 0 tx-frame-high: 0 root@router:/etc# ethtool -c eth2 Coalesce parameters for eth2: Adaptive RX: off TX: off stats-block-usecs: 0 sample-interval: 0 pkt-rate-low: 0 pkt-rate-high: 0 rx-usecs: 325 rx-frames: 0 rx-usecs-irq: 0 rx-frames-irq: 0 tx-usecs: 325 tx-frames: 0 tx-usecs-irq: 0 tx-frames-irq: 128 rx-usecs-low: 0 rx-frame-low: 0 tx-usecs-low: 0 tx-frame-low: 0 rx-usecs-high: 0 rx-frame-high: 0 tx-usecs-high: 0 tx-frame-high: 0 root@router:/etc# ethtool -k eth0 Offload parameters for eth0: rx-checksumming: on tx-checksumming: on scatter-gather: on tcp-segmentation-offload: off udp-fragmentation-offload: off generic-segmentation-offload: off generic-receive-offload: off large-receive-offload: off ntuple-filters: off receive-hashing: off root@router:/etc# ethtool -k eth2 Offload parameters for eth2: rx-checksumming: on tx-checksumming: on scatter-gather: on tcp-segmentation-offload: off udp-fragmentation-offload: off generic-segmentation-offload: off generic-receive-offload: off large-receive-offload: off ntuple-filters: off receive-hashing: off root@router:/etc# ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 2048 RX Mini: 0 RX Jumbo: 0 TX: 2048 root@router:/etc# ethtool -g eth2 Ring parameters for eth2: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 2048 RX Mini: 0 RX Jumbo: 0 TX: 2048 На маршрутизаторе iptables (около 50 правил в всех таблицах), NAT (до 200к записей в пике в conntrack), ipset, шейпинг htb с хешем. Каждый интерфейс в своём bond (планируется добавить ещё по одному интерфейсу в каждый bond, чтоб пропустить 2Г), на одном из bond навешены ifb чтоб отделить трафик который нужно шейпить, от того который не нужно. Собственно проблема в очень большой нагрузке. В данный момент IN/OUT PPS - 63k/47k, IN/OUT MbitPS - 600/200, NAT - 100k. При этом: mpstat -P ALL 5 12:05:55 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 12:06:00 PM all 1.52 0.00 4.12 0.00 0.02 21.68 0.00 0.00 72.65 12:06:00 PM 0 1.79 0.00 2.79 0.00 0.00 48.41 0.00 0.00 47.01 12:06:00 PM 1 1.80 0.00 4.20 0.00 0.00 45.60 0.00 0.00 48.40 12:06:00 PM 2 1.66 0.00 5.19 0.00 0.00 5.39 0.00 0.00 87.76 12:06:00 PM 3 1.00 0.00 5.41 0.00 0.00 9.62 0.00 0.00 83.97 12:06:00 PM 4 1.80 0.00 4.41 0.00 0.00 30.66 0.00 0.00 63.13 12:06:00 PM 5 1.79 0.00 4.38 0.00 0.00 24.90 0.00 0.00 68.92 12:06:00 PM 6 1.77 0.00 3.35 0.00 0.00 4.13 0.00 0.00 90.75 12:06:00 PM 7 0.78 0.00 3.52 0.00 0.00 4.50 0.00 0.00 91.19 12:06:00 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 12:06:05 PM all 1.40 0.00 3.74 0.00 0.00 23.16 0.00 0.00 71.70 12:06:05 PM 0 1.40 0.00 4.00 0.00 0.00 49.60 0.00 0.00 45.00 12:06:05 PM 1 2.20 0.00 3.81 0.00 0.00 48.30 0.00 0.00 45.69 12:06:05 PM 2 0.83 0.00 3.73 0.00 0.00 6.00 0.00 0.00 89.44 12:06:05 PM 3 1.02 0.00 3.07 0.00 0.00 8.61 0.00 0.00 87.30 12:06:05 PM 4 0.60 0.00 3.19 0.00 0.00 32.93 0.00 0.00 63.27 12:06:05 PM 5 2.59 0.00 4.58 0.00 0.00 29.08 0.00 0.00 63.75 12:06:05 PM 6 1.57 0.00 4.91 0.00 0.00 4.91 0.00 0.00 88.61 12:06:05 PM 7 0.60 0.00 2.59 0.00 0.00 5.39 0.00 0.00 91.42 12:06:05 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 12:06:10 PM all 1.40 0.00 3.51 0.00 0.00 22.43 0.00 0.00 72.66 12:06:10 PM 0 1.40 0.00 3.59 0.00 0.00 51.70 0.00 0.00 43.31 12:06:10 PM 1 2.40 0.00 4.39 0.00 0.00 46.31 0.00 0.00 46.91 12:06:10 PM 2 1.03 0.00 3.90 0.00 0.00 6.78 0.00 0.00 88.30 12:06:10 PM 3 1.21 0.00 3.43 0.00 0.00 9.68 0.00 0.00 85.69 12:06:10 PM 4 1.80 0.00 4.00 0.00 0.00 29.60 0.00 0.00 64.60 12:06:10 PM 5 1.20 0.00 3.19 0.00 0.00 27.35 0.00 0.00 68.26 12:06:10 PM 6 1.20 0.00 2.59 0.00 0.00 3.39 0.00 0.00 92.81 12:06:10 PM 7 0.99 0.00 2.98 0.00 0.00 4.37 0.00 0.00 91.67 perf top ------------------------------------------------------------------------------ PerfTop: 19730 irqs/sec kernel:98.3% [100000 cpu-clock-msecs], (all, 8 CPUs) ------------------------------------------------------------------------------ samples pcnt kernel function _______ _____ _______________ 34536.00 - 11.8% : _spin_lock 18217.00 - 6.2% : skb_copy_bits 13841.00 - 4.7% : u32_classify [cls_u32] 13771.00 - 4.7% : _spin_unlock_irqrestore 13008.00 - 4.4% : kmem_cache_alloc 12824.00 - 4.4% : igb_poll [igb] 10780.00 - 3.7% : kmem_cache_free 8755.00 - 3.0% : ip_route_input 7649.00 - 2.6% : igb_xmit_frame_ring [igb] 6698.00 - 2.3% : dev_queue_xmit 6277.00 - 2.1% : kfree 6050.00 - 2.1% : __copy_skb_header 5731.00 - 2.0% : pskb_expand_head 5531.00 - 1.9% : __do_softirq 5017.00 - 1.7% : __alloc_skb procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 6151584 206436 1618820 0 0 0 3 13 7 0 20 80 0 1 0 0 6150872 206436 1618820 0 0 0 0 116847 34643 2 25 73 0 1 0 0 6151704 206436 1618820 0 0 0 0 118598 32630 2 24 74 0 1 0 0 6150968 206436 1618820 0 0 0 0 117567 34482 2 25 73 0 1 0 0 6151288 206436 1618820 0 0 0 0 117889 31754 1 25 74 0 1 0 0 6151316 206436 1618820 0 0 0 0 116462 35088 1 23 75 0 2 0 0 6151316 206436 1618820 0 0 0 0 117081 35311 2 25 74 0 1 0 0 6151508 206436 1618820 0 0 0 0 118049 34498 2 26 73 0 Подскажите, пожалуйста, куда копнуть и что можно крутнуть чтоб выжать побольше, ато вечерами, при трафике 800-950Мбит и, примерно, 120ппс, нагрузка на ядрах доходит до 80-90%. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 19 декабря, 2011 · Жалоба Кстати, раньше, когда NAT был поднят на этой же машине, и без ifb обойтись было нельзя В очередной раз проскакивает ifb и NAT. Какая связь и как оно у вас работало вообще? Как бы вещи не совместимые изначально. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 19 декабря, 2011 · Жалоба Кстати, раньше, когда NAT был поднят на этой же машине, и без ifb обойтись было нельзя В очередной раз проскакивает ifb и NAT. Какая связь и как оно у вас работало вообще? Как бы вещи не совместимые изначально. Раньше NAT и шейп были подняты на одном железе. ifb применялся для того, чтобы можно было управлять исходящим трафиком от клиентов, сидящих за NAT. Работало оно замечательно до определенной нагрузки (об этом выше я упоминал). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 19 декабря, 2011 (изменено) · Жалоба Помогите, пожалуйста, с проблемой. На мой взгляд, лучше применить irqbalance, вместо жесткой привязки у карт. У вас, такое ощущение, половина ядер перегружены, а вторая половина простаивает. А дальше только после демонстрации версии ядра, правила шейпера, iptables и NAT. Ну, и при таких нагрузках будет лучше разнести NAT и шейпер. Изменено 19 декабря, 2011 пользователем taf_321 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
muchacho Опубликовано 19 декабря, 2011 · Жалоба На мой взгляд, лучше применить irqbalance, вместо жесткой привязки у карт. У вас, такое ощущение, половина ядер перегружены, а вторая половина простаивает. Так и есть, сейчас нагружены 4 ядра из 8-ми, планируется добавить ещё 2 интерфейса и нагрузить остальные 4. Попробую irqbalance или добавлю ещё очередей. А дальше только после демонстрации версии ядра, правила шейпера, iptables и NAT. Ну, и при таких нагрузках будет лучше разнести NAT и шейпер. Debian GNU/Linux 6.0.3, ядро родное 2.6.32-5-686-bigmem. Шейпер сделан на htb с u32 хешем. Правила iptables: Chain FORWARD (policy ACCEPT 25G packets, 23T bytes) pkts bytes target prot opt in out source destination 174K 12M RETURN all -- bond1 * 0.0.0.0/0 0.0.0.0/0 match-set localnets dst 2162K 238M DROP all -- bond1 * 0.0.0.0/0 192.168.0.0/16 267K 61M mailusers tcp -- bond1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 Chain OUTPUT (policy ACCEPT 491K packets, 83M bytes) pkts bytes target prot opt in out source destination Chain mailusers (1 references) pkts bytes target prot opt in out source destination 32883 48M RETURN all -- * * 0.0.0.0/0 193.93.48.0/22 0 0 RETURN all -- * * 0.0.0.0/0 194.33.181.0/24 0 0 RETURN all -- * * 192.168.110.230 0.0.0.0/0 111 89205 RETURN all -- * * 192.168.134.52 0.0.0.0/0 0 0 RETURN all -- * * 192.168.101.90 0.0.0.0/0 0 0 RETURN all -- * * 192.168.111.110 0.0.0.0/0 0 0 RETURN all -- * * 192.168.59.16 0.0.0.0/0 0 0 RETURN all -- * * 192.168.101.227 0.0.0.0/0 0 0 RETURN all -- * * 192.168.100.50 0.0.0.0/0 0 0 RETURN all -- * * 192.168.100.100 0.0.0.0/0 0 0 RETURN all -- * * 192.168.100.150 0.0.0.0/0 0 0 RETURN all -- * * 192.168.110.118 0.0.0.0/0 0 0 RETURN all -- * * 192.168.111.110 0.0.0.0/0 0 0 RETURN all -- * * 192.168.111.128 0.0.0.0/0 0 0 RETURN all -- * * 192.168.111.229 0.0.0.0/0 0 0 RETURN all -- * * 10.35.0.56 0.0.0.0/0 60 58043 RETURN all -- * * 10.24.0.55 0.0.0.0/0 0 0 RETURN all -- * * 192.168.140.55 0.0.0.0/0 0 0 RETURN all -- * * 0.0.0.0/0 192.168.140.55 1791 1887K RETURN all -- * * 10.16.0.132 0.0.0.0/0 0 0 RETURN all -- * * 10.48.0.85 0.0.0.0/0 0 0 RETURN all -- * * 0.0.0.0/0 10.48.0.85 233K 11M DROP all -- * * 0.0.0.0/0 0.0.0.0/0 NAT: Chain PREROUTING (policy ACCEPT 579M packets, 41G bytes) num pkts bytes target prot opt in out source destination 1 11M 1079M dnat all -- * * 0.0.0.0/0 0.0.0.0/0 match-set dnat dst Chain POSTROUTING (policy ACCEPT 11M packets, 1080M bytes) num pkts bytes target prot opt in out source destination 1 807 45106 ACCEPT all -- * * 0.0.0.0/0 192.168.1.0/24 2 15M 1224M snat all -- * bond0 0.0.0.0/0 0.0.0.0/0 match-set snat src 3 11 760 SNAT all -- * bond0 192.168.5.0/24 0.0.0.0/0 to:XX.XXX.XX.1 ..... .....тут ещё 58 аналогичных правил ..... 61 630K 45M SNAT all -- * bond0 10.56.0.0/22 0.0.0.0/0 to:XX.XXX.XX.90 Chain OUTPUT (policy ACCEPT 782 packets, 40858 bytes) num pkts bytes target prot opt in out source destination Chain dnat (1 references) num pkts bytes target prot opt in out source destination 1 125K 14M DNAT all -- * * 0.0.0.0/0 ХХ.ХХХ.ХХ.1 to:192.168.130.126 ..... ..... тут 37 аналогичных правил ..... 38 27020 2116K DNAT all -- * * 0.0.0.0/0 ХХ.ХХХ.ХХ.30 to:10.52.0.94 Chain snat (1 references) num pkts bytes target prot opt in out source destination 1 274K 25M SNAT all -- * * 192.168.130.126 0.0.0.0/0 to:ХХ.ХХХ.ХХ.1 ..... ..... тут 51 аналогичное правило ..... 52 41617 2937K SNAT all -- * * 10.52.0.94 0.0.0.0/0 to:ХХ.ХХХ.ХХ.30 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 19 декабря, 2011 · Жалоба 2taf_321: Не советуйте то что не пробовали. Прибивать карты к ядрам - ОБЯЗАТЕЛЬНО. irqbalance для балансировки карт ОБЯЗАТЕЛЬНО отключать. Об этом даже написано в мануалах к драйверам Интел. Обсуждалось даже по-моему в рамках этой темы с примерами. 2muchacho: А какая версия ядра у вас? Ну и 100K записей при 63Kpps - это много, сразу скажу. Как и 100К прерываний при таком трафике. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
muchacho Опубликовано 19 декабря, 2011 · Жалоба Не могу понять что такое 79924.00 - 16.9% : _spin_lock и почему он такой большой. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 19 декабря, 2011 · Жалоба Это когда другие процессы ожидают когда освободится какой-то лок. На сколько я понимаю, у вас в системе где-то есть узкое место и у него собственно всё и упирается. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
muchacho Опубликовано 19 декабря, 2011 · Жалоба 2muchacho: А какая версия ядра у вас? Debian GNU/Linux 6.0.3 (squeeze), 2.6.32-5-686-bigmem Ну и 100K записей при 63Kpps - это много, сразу скажу. Как и 100К прерываний при таком трафике. Пороюсь в коннтраке, может найду что-нибудь лишнее. С прерываниями вобще не понятно. mpstat говорит: 04:09:13 PM CPU intr/s 04:09:14 PM all 122334.00 04:09:14 PM 0 2687.00 04:09:14 PM 1 2768.00 04:09:14 PM 2 1.00 04:09:14 PM 3 3069.00 04:09:14 PM 4 3038.00 04:09:14 PM 5 3073.00 04:09:14 PM 6 3.00 04:09:14 PM 7 2911.00 Т.е. На каждом ядре около 3000, а сумма - 120к. Это как понять можно? Это когда другие процессы ожидают когда освободится какой-то лок. На сколько я понимаю, у вас в системе где-то есть узкое место и у него собственно всё и упирается. Вот я и пытаюсь понять где оно может быть. По идее роутера должно хватать прожевать без проблем 1Г, тут на форуме показывают значительно лучше результаты, даже НАТ на 10Г был, а тут несчаснтых 800Мбит и захлёбывается. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 19 декабря, 2011 · Жалоба 2.6.32-35 Не очень удачные ядра. Либо ползите выше, либо ниже. Там авось и показания прийдут в норму и меньше напильника надо будет. Гиг должен завестись без танцев с бубном на свежих или старых ядрах. Ну разве что НАТ надо всеравно подкручивать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
muchacho Опубликовано 19 декабря, 2011 · Жалоба 2.6.32-35 Не очень удачные ядра. Либо ползите выше, либо ниже. Там авось и показания прийдут в норму и меньше напильника надо будет. Гиг должен завестись без танцев с бубном на свежих или старых ядрах. Ну разве что НАТ надо всеравно подкручивать. А какое ядро вы порекомендуете? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 19 декабря, 2011 · Жалоба Если у вас никаких извратов типа ifb нет, то я бы взял последнее 2.6.27. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
muchacho Опубликовано 19 декабря, 2011 · Жалоба Если у вас никаких извратов типа ifb нет, то я бы взял последнее 2.6.27. Есть ifb, bond, ipt_NETFLOW(но пока не используется). Сейчас в настройках коннтрака: net.ipv4.netfilter.ip_conntrack_generic_timeout = 300 net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120 net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent2 = 120 net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 14400 net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120 net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60 net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30 net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120 net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10 net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans = 300 net.ipv4.netfilter.ip_conntrack_tcp_loose = 1 net.ipv4.netfilter.ip_conntrack_tcp_be_liberal = 0 net.ipv4.netfilter.ip_conntrack_tcp_max_retrans = 3 net.ipv4.netfilter.ip_conntrack_udp_timeout = 30 net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 180 net.ipv4.netfilter.ip_conntrack_icmp_timeout = 30 net.ipv4.netfilter.ip_conntrack_max = 1048576 net.ipv4.netfilter.ip_conntrack_count = 158174 net.ipv4.netfilter.ip_conntrack_buckets = 1048576 net.ipv4.netfilter.ip_conntrack_checksum = 1 net.ipv4.netfilter.ip_conntrack_log_invalid = 0 Что можно ещё уменьшить без ущерба? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 19 декабря, 2011 (изменено) · Жалоба Тогда берите ядро 3.1. Ребята в соседних темах пишут, что там всё ок. Таймауты порежте. Особенно те которые на ожидания пакетов на разрыв - макс 30 сек. Timeout established - поставьте меньше. Но я думаю, что максимальный еффект будет именно от смены ядра. 2.6.32 имеет пачку проблем именно с производительностью и стабильностью. Не знаю как сейчас, но раньше с него стремительно бежали. Профайлер тоже тыкает пальцем на функцию ядра. И обратите внимание на классификатор u32 в профайлере. Он не должен быть на 3ем месте если фильтры построены на хешах. Изменено 19 декабря, 2011 пользователем Dark_Angel Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 19 декабря, 2011 (изменено) · Жалоба Может попробовать ужать цепочку mailusers до 3 правил? Как-то: ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 match-set mail_dst dst ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 match-set mail_src src DROP all -- * * 0.0.0.0/0 0.0.0.0/0 RETURN в mailusers лечше сменить на ACCEPT, в противном случае получается +1 правило при прохождении пакета. Еще как вариент переделать цепочку FORWARD так, чтобы самые массовые пакеты проходили проверку максимум в одном правиле, а не обходили, как сейчас, 4 правила (3 явно заданых + дефолтный). А то у вас ради выявления несчастных 2.3 млн. пакетов впстую по всем правилам гоняется 25 млрд. Изменено 19 декабря, 2011 пользователем taf_321 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...