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

cache size : 2048 KB

меняй проц с кешем на 8-12 метров и все побежит.

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


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

cache size : 2048 KB

меняй проц с кешем на 8-12 метров и все побежит.

отключил заворот в ifb0 и ifb1 нагрузка сразу упала, пинги выровнялись.

Если поменяю на "кешем на 8-12 метров" проблем даже с ifb не будет?

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


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

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

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


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

Нагрузка упала не из-за самого редиректа на ifb, а потому что без редиректа шейпер больше не работает и не грузит систему))

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


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

Нагрузка упала не из-за самого редиректа на ifb, а потому что без редиректа шейпер больше не работает и не грузит систему))

=) спасибо за замечание.

 

кто-то предлагал QOS без использования ifb....

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


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

=) спасибо за замечание.

 

кто-то предлагал QOS без использования ifb....

Шейпер на исход вешается на интерфейс/влан внешнего мира, вход - на каждый пользовательский влан. Но вообще редирект на ifb малозатратная операция, не должно тут быть каких-либо проблем.

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


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

=) спасибо за замечание.

 

кто-то предлагал QOS без использования ifb....

Шейпер на исход вешается на интерфейс/влан внешнего мира, вход - на каждый пользовательский влан. Но вообще редирект на ifb малозатратная операция, не должно тут быть каких-либо проблем.

такой вариант мне не подходит, так как надо киосить межвлановский (между клиентами) трафик + внешний.

 

До некоторых пор мне хватало схемы на ifb. Но сейчас явно я уперся в возможности железа.

Народ рекомендует брать проц с кешам 8-12мБайт. Этот параметр критичен?

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

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


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

Что-то вы странные вещи говорите.

 

кусок из работающего скрипта:

#!/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 вообще стало очень грустно.

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


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

Кстати, раньше, когда NAT был поднят на этой же машине, и без ifb обойтись было нельзя, тоже наблюдались затупы на скоростях 150-250М (сильный джиттер, лаги в онлайн играх, заикания в VoIP и осыпание картинки во всяких так онлайн трансляциях). А с массовой миграцией торрент-клиентов на udp вообще стало очень грустно.

 

спасибо за пример, но описанный мной роутер решает не задачу шейпера для интернета, а занимается маршрутизацией трафика между сегмент сети. Поясню,

на ЕТН1 навешаны клиентские вланы ВЛ2, ВЛ3, ВЛ.., ВЛ 100; физическое подключение клиентов разное (оптика, медь, радио), задача шейпера на этой машине правильно прижать трафик между вланами. Ваш шейпер, я так понимаю, заточет чисто для для нета, а все клиенты либо обмениваются трафиком по полной, либо и вовсе изолированы друг от друга.

Пока я не нашел нормальной реализации вх/вых трафика без вирт. интерфейсов.

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


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

Для виртуальных то же самое прописывается как и для физических. с точки зрения шейпера они идентичные.

 

Поправьте, если ошибаюсь в рассуждениях.

 

Итак, у вас задача зароутить пачку 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 гигабит.

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

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


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

Помогите, пожалуйста, с проблемой.

Есть роутер с 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%.

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


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

Кстати, раньше, когда NAT был поднят на этой же машине, и без ifb обойтись было нельзя

В очередной раз проскакивает ifb и NAT. Какая связь и как оно у вас работало вообще? Как бы вещи не совместимые изначально.

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


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

Кстати, раньше, когда NAT был поднят на этой же машине, и без ifb обойтись было нельзя

В очередной раз проскакивает ifb и NAT. Какая связь и как оно у вас работало вообще? Как бы вещи не совместимые изначально.

 

Раньше NAT и шейп были подняты на одном железе. ifb применялся для того, чтобы можно было управлять исходящим трафиком от клиентов, сидящих за NAT. Работало оно замечательно до определенной нагрузки (об этом выше я упоминал).

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


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

Помогите, пожалуйста, с проблемой.

 

На мой взгляд, лучше применить irqbalance, вместо жесткой привязки у карт. У вас, такое ощущение, половина ядер перегружены, а вторая половина простаивает.

 

А дальше только после демонстрации версии ядра, правила шейпера, iptables и NAT. Ну, и при таких нагрузках будет лучше разнести NAT и шейпер.

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

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


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

На мой взгляд, лучше применить 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

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


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

2taf_321: Не советуйте то что не пробовали. Прибивать карты к ядрам - ОБЯЗАТЕЛЬНО. irqbalance для балансировки карт ОБЯЗАТЕЛЬНО отключать. Об этом даже написано в мануалах к драйверам Интел. Обсуждалось даже по-моему в рамках этой темы с примерами.

 

2muchacho: А какая версия ядра у вас? Ну и 100K записей при 63Kpps - это много, сразу скажу. Как и 100К прерываний при таком трафике.

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


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

Не могу понять что такое

79924.00 - 16.9% : _spin_lock

и почему он такой большой.

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


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

Это когда другие процессы ожидают когда освободится какой-то лок. На сколько я понимаю, у вас в системе где-то есть узкое место и у него собственно всё и упирается.

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


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

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Мбит и захлёбывается.

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


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

2.6.32-35 Не очень удачные ядра. Либо ползите выше, либо ниже. Там авось и показания прийдут в норму и меньше напильника надо будет. Гиг должен завестись без танцев с бубном на свежих или старых ядрах. Ну разве что НАТ надо всеравно подкручивать.

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


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

2.6.32-35 Не очень удачные ядра. Либо ползите выше, либо ниже. Там авось и показания прийдут в норму и меньше напильника надо будет. Гиг должен завестись без танцев с бубном на свежих или старых ядрах. Ну разве что НАТ надо всеравно подкручивать.

А какое ядро вы порекомендуете?

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


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

Если у вас никаких извратов типа ifb нет, то я бы взял последнее 2.6.27.

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


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

Если у вас никаких извратов типа 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

 

Что можно ещё уменьшить без ущерба?

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


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

Тогда берите ядро 3.1. Ребята в соседних темах пишут, что там всё ок. Таймауты порежте. Особенно те которые на ожидания пакетов на разрыв - макс 30 сек. Timeout established - поставьте меньше.

 

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

 

И обратите внимание на классификатор u32 в профайлере. Он не должен быть на 3ем месте если фильтры построены на хешах.

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

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


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

Может попробовать ужать цепочку 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 млрд.

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

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


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

Join the conversation

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

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

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

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

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

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

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