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

производительный шейпер

Народ, поделитесь опытом, кто как делает шейпера на серверах.

Не удается прокачать больше 140Kpps (в каждую сторону, суммарно 280, ~1Gb в каждую сторону)

сервер HP DL 160 G6 , 2 процессора Xeon E5504 по 4 ядра, 4 сетевухи Intel 82576 в 2-х бондингах

Линукс, шейпер на хешах u32

 

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


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

а что потом происходит? дропы на интерфейсах?

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


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

поставить линукс, сделать полисинг

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


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

там и так вроде линукс. Есть сомнения, что переход с htb на полисеры даст хотя бы 50% прироста pps, т.е. всёравно полка будет потом скоро.

 

Как несколько адресов и + к ним подсетей (у одного абонента может быть несколько подключений и подсети) пихать в один полисер ? Вот в одну очередь можно.

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


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

а если шейпер отключить, трафик растет и процессоры разгружаются?

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


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

Так sofirq все ядра равномерно загружают? mpstat -P ALL покажи

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


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

# mpstat -P ALL

Linux 2.6.32-3-amd64 (shaper4) 18.11.2010 _x86_64_ (8 CPU)

 

16:43:37 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle

16:43:37 all 0,02 0,01 0,16 0,01 1,94 36,38 0,00 0,00 61,47

16:43:37 0 0,06 0,00 0,14 0,00 0,85 30,72 0,00 0,00 68,22

16:43:37 1 0,04 0,01 0,14 0,00 0,88 30,54 0,00 0,00 68,39

16:43:37 2 0,01 0,00 0,11 0,00 5,62 35,03 0,00 0,00 59,22

16:43:37 3 0,01 0,00 0,11 0,00 0,85 30,74 0,00 0,00 68,29

16:43:37 4 0,03 0,02 0,13 0,02 0,79 39,64 0,00 0,00 59,39

16:43:37 5 0,01 0,01 0,41 0,05 0,78 40,62 0,00 0,00 58,13

16:43:37 6 0,00 0,00 0,11 0,00 5,02 43,18 0,00 0,00 51,69

16:43:37 7 0,00 0,00 0,14 0,01 0,77 40,64 0,00 0,00 58,43

 

 

 

 

а если шейпер отключить, трафик растет и процессоры разгружаются?
Да - трафик резко вверх, процы вниз

 

Хотелось бы услышать - кто сколько выжимал и на каком железе

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

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


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

Какой выставлен InterruptThrottleRate для igb? Примерно структуру шейпера набросать можете?

 

В общем случае, имхо, поставить что-то вроде oprofile, посмотреть что точно грузит систему. Отоптимизировать. Если оптимизировать уже некуда - ставить рядом еще один сервер и балансировать нагрузку.

 

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


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

а если шейпер отключить, трафик растет и процессоры разгружаются?
Да - трафик резко вверх, процы вниз

 

Хотелось бы услышать - кто сколько выжимал и на каком железе

Подозреваю, что хэш-фильтры созданы неправильно. Как у вас выглядят типичные правила?

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


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

сделать полисинг
на linux полисинг не даст существенного прироста... 10-20% максимум

 

drv_sevstar

прерывания к cpu прибиты? на выводе mpstat "cpu в полку" не видно

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


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

сделать полисинг
на linux полисинг не даст существенного прироста... 10-20% максимум

 

drv_sevstar

прерывания к cpu прибиты? на выводе mpstat "cpu в полку" не видно

прибиты

один физический проц на один бондинг, второй на второй бондинг

 

# cat irq.sh

#!/bin/bash

 

 

# bond1 internet

echo 01 > /proc/irq/55/smp_affinity #eth3-tx-0

echo 02 > /proc/irq/56/smp_affinity #eth3-tx-1

echo 04 > /proc/irq/57/smp_affinity #eth3-tx-2

echo 08 > /proc/irq/58/smp_affinity #eth3-tx-3

echo 01 > /proc/irq/59/smp_affinity #eth3-rx-0

echo 02 > /proc/irq/60/smp_affinity #eth3-rx-1

echo 04 > /proc/irq/61/smp_affinity #eth3-rx-2

echo 08 > /proc/irq/62/smp_affinity #eth3-rx-3

 

echo 01 > /proc/irq/65/smp_affinity #eth2-tx-0

echo 02 > /proc/irq/66/smp_affinity #eth2-tx-1

echo 04 > /proc/irq/67/smp_affinity #eth2-tx-2

echo 08 > /proc/irq/68/smp_affinity #eth2-tx-3

echo 01 > /proc/irq/69/smp_affinity #eth2-rx-0

echo 02 > /proc/irq/70/smp_affinity #eth2-rx-1

echo 04 > /proc/irq/71/smp_affinity #eth2-rx-2

echo 08 > /proc/irq/72/smp_affinity #eth2-rx-3

 

# bond0 local net

echo 10 > /proc/irq/74/smp_affinity #eth0-tx-0

echo 20 > /proc/irq/75/smp_affinity #eth0-tx-1

echo 40 > /proc/irq/76/smp_affinity #eth0-tx-2

echo 80 > /proc/irq/77/smp_affinity #eth0-tx-3

echo 10 > /proc/irq/78/smp_affinity #eth0-rx-0

echo 20 > /proc/irq/79/smp_affinity #eth0-rx-1

echo 40 > /proc/irq/80/smp_affinity #eth0-rx-2

echo 80 > /proc/irq/81/smp_affinity #eth0-rx-3

 

echo 10 > /proc/irq/83/smp_affinity #eth1-tx-0

echo 20 > /proc/irq/84/smp_affinity #eth1-tx-1

echo 40 > /proc/irq/85/smp_affinity #eth1-tx-2

echo 80 > /proc/irq/86/smp_affinity #eth1-tx-3

echo 10 > /proc/irq/87/smp_affinity #eth1-rx-0

echo 20 > /proc/irq/88/smp_affinity #eth1-rx-1

echo 40 > /proc/irq/89/smp_affinity #eth1-rx-2

echo 80 > /proc/irq/90/smp_affinity #eth1-rx-3

 

 

 

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


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

на выводе mpstat "cpu в полку" не видно
Полки нет по тому что время было ок 16:00, во первых(пик в 20-21), во вторых пер***нсировали на другие шейпера, не терпеть же такое безобразие.

Но проблему это не снимает.

На HP DL160 G6 в минимальной конфигурации, с одним процом выжимаеться до 700-800 Mbit в каждую сторону, (100-110 Kpps в каждую сторону), а тут железка в 3 раза дороже, а имеем прироста 15-20% макс.

 

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


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

Чего то не понял к это соотносится? Linux 2.6.32-3-amd64 и 2 процессора Xeon E5504 по 4 ядра

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

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


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

Народ, поделитесь опытом, кто как делает шейпера на серверах.

Фря 7.3, Дамминет.

ОДИН Ксеон 5520. Одна сетевуха Интел EXPI9404PT.

Примерно 1400/700 трафика, 360-390 кппс. Дрова Яндех+тюнинг.

Загрузка примерно 60-70%.

 

п.с. Смотрел "на глазок". Только сегодня поставили, точной статистики еще нет, могу и наврать (

Отдельно НАТ. Пролетает суммарно гига два.

Это все в ЧНН - примерно 6-8 часов в сутки.

 

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


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

Какой выставлен InterruptThrottleRate для igb? Примерно структуру шейпера набросать можете?
Стояло по дефолту (3)

Сейчас переключил на 1 , посмотрю результат.

 

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


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

Другими важными параметрами являются размеры rx/tx rings (см. вывод ethtool -g <iface>) и txqueuelen, который устанавливается с помощью ifconfig или ip из iproute2. При больших пакетрейтах их надо увеличить.

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


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

Linux 2.6.32 sc скрипт.

Xeon E5520 (с HT 8 ядер)

Cетевухи: 2+2 igb 8257, bonding, InterruptThrottleRate=20000

ethtool -G eth0 rx 2048 tx 2048

ethtool -K eth0 rx off tx off gso off

 

В пиках кидал 1340in/1220out (pps в сумме около 500к) жрало около 50% проца.

 

Фильтры выглядят так:

tc filter show dev bond1

filter parent 1: protocol ip pref 2 flow

filter parent 1: protocol ip pref 2 flow handle 0x1 map keys dst and 0x0000ffff baseclass 1:1

 

Еще для части IP собирает netflow.

 

Так что ваш 5504 должен тоже нормально работать.

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

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


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

Другими важными параметрами являются размеры rx/tx rings (см. вывод ethtool -g <iface>) и txqueuelen, который устанавливается с помощью ifconfig или ip из iproute2. При больших пакетрейтах их надо увеличить.
rx/tx rings выставил в 4096

txqueuelen на eth и bond выставлены в 1000 - увеличить?

и еще - в вланах на богдингах txqueuelen=0 Есть смысл его там выставлять?

 

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


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

Linux 2.6.32 sc скрипт.

Xeon E5520 (с HT 8 ядер)

Cетевухи: 2+2 igb 8257, bonding, InterruptThrottleRate=20000

ethtool -G eth0 rx 2048 tx 2048

ethtool -K eth0 rx off tx off gso off

 

В пиках кидал 1340in/1220out (pps в сумме около 500к) жрало около 50% проца.

 

Фильтры выглядят так:

tc filter show dev bond1

filter parent 1: protocol ip pref 2 flow

filter parent 1: protocol ip pref 2 flow handle 0x1 map keys dst and 0x0000ffff baseclass 1:1

 

Еще для части IP собирает netflow.

 

Так что ваш 5504 должен тоже нормально работать.

Можно по подробнее как у вас построены правила tc

Если можно - tc -batch файл в личку.

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


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

txqueuelen на eth и bond выставлены в 1000 - увеличить?

Конечно, это же те самые очереди, что используются для шейпинга.

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


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

txqueuelen на eth и bond выставлены в 1000 - увеличить?
Конечно, это же те самые очереди, что используются для шейпинга.

Только для физических интерфейсов имеет смысл

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


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

txqueuelen на eth и bond выставлены в 1000 - увеличить?
Конечно, это же те самые очереди, что используются для шейпинга.

Только для физических интерфейсов имеет смысл

Существует ли како-то (мнемоническое?) правило для определения размера этой очереди ?

 

Например, если для 100Mbit следует использовать 1'000 пакетов, то для гигабита - 10'000 ?

 

При МТУ 1500 и для 100 мегабит это (1'500байт * 8бит_в_байте * 1'000 пакетов)/100'000'000бит/сек = 0.12 секунды трафика.

Может быть как-то исходя из этого считать ? Сколько секунд трафика должно помещаться в этой очереди ?

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


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

Попробуй для начала 3000 - 5000 ставить, для 100 Мбит на самом деле по дефолту 100 стоит, а для гигабита 1000, но этого уже мало. MTU то может и 1500, но размер пакета у меня средний ~600 байт.

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

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


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

При МТУ 1500
Ethernet [+vlan] забыли.

На интерфейс ОС передаёт пакеты уже с ethernet заголовками.

 

txqueuelen
как следует из названия это ДЛИНА очереди, определяемая количеством элементов, а никак не размеры буферов пакетов.

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


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

Join the conversation

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

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

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

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

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

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

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