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

Прошу отписаться, какое максимальное кол-во пакетов в секунду обрабатывает ядро Вашего Linux-роутера без ощутимых потерь в производительности.

В моем случае - Xeon 2.4 Debian Etch - 50000 P/s. После начинаются тормоза, отказы в авторизации (PPPoE,radius) и повышенная загрузка от ksoftirqd.

 

Хотелось бы услышать мнения других людей на эту тему.

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


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

pppoe в ядре или user-level?

трафик весь через него проходит или большая между eth/vlan - интерфейсами?

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


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

Прошу отписаться, какое максимальное кол-во пакетов в секунду обрабатывает ядро Вашего Linux-роутера без ощутимых потерь в производительности.

В моем случае - Xeon 2.4 Debian Etch - 50000 P/s. После начинаются тормоза, отказы в авторизации (PPPoE,radius) и повышенная загрузка от ksoftirqd.

 

Хотелось бы услышать мнения других людей на эту тему.

процессор: P4 D 3.40GHz HT

сетевые: intel pro/1000 PT PCI-e x1 2 шт, драйвера с включенным NAPI

pps: ~ 160000 с файрволом и шейперами (в рабочем режиме) и ~200000 чистый роутинг

pppoe только kernel-space

система: asplinux 11

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

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


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

>pppoe в ядре или user-level?

Kernel.

 

>трафик весь через него проходит или большая между eth/vlan - интерфейсами?

 

Почти весь трафик через PPPoE (порядка 400-500 соединений)

Примерно 10-я часть - eth.

 

>драйвера с включенным NAPI

Что есть NAPI ? Чего дает ?

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


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

У нас наоборот, где-то 10-я часть через pppoe (kernel) и pptp (user) - 300-400 сессий.

 

Развесистый файрвол, шейперы, обсчёт.

 

Dual Opteron (одноядерные).

 

100kpps, при этом юзерлевельный pptp подтормаживает, остальное нормально.

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


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

повышенная загрузка от ksoftirqd.
народ, как увидеть этого зверя? у меня накопительный счетчик (в top) показывает никак не более 1 секунды процессорного времени из расчета на 1 терабайт пропущенного трафика. (средний размер пакета ~430 байт). при чем как на брэндовых интеловых серверах так и на домашних писюках.

 

я правильно понял что процесс называется "ksoftirqd/0", "ksoftirqd/1" (и так далее для каждого ядра процессора) ?

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

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


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

>у меня накопительный счетчик (в top) показывает никак не более 1 секунды

 

Пока 5-10К p/s - у меня тоже не более секунды натикивает.

А как поднимается до 50000 - так хоть "top не смотри". Одно расстройство.

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


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

А как поднимается до 50000 - так хоть "top не смотри". Одно расстройство.

По идее, это нормально. NAPI работает, значит.

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


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

>у меня накопительный счетчик (в top) показывает никак не более 1 секунды

 

Пока 5-10К p/s - у меня тоже не более секунды натикивает.

А как поднимается до 50000 - так хоть "top не смотри". Одно расстройство.

вот щас создал синтетическую нагрузку порядка 60-80kpps между серверами (имхо, больше каталист не тянет)

на одном сервере 20-30% (процесс не на 1-м месте) на другом как было 0 так и осталось. сетевухи на обоих интеловские встроенные гигабитные, какие именно не помню. первый сервак одноядерный П4 3ГГц второй сервак на дуальных ксеонах 2,4ГГц, и вообще в целом покруче, но едва ли дело в этом... странно всё это.

 

где бы почитать про природу явления?

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


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

размер пакетов сделайте минимальный, 64 байта, пусть эти серваки их пороутить попробуют...

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


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

>где бы почитать про природу явления?

http://www.opennet.ru/docs/RUS/GigabitEthernet/

:-)

 

Я с этим явлением столкнулся когда внедрил у себя в локалке torrent tracker. До этого все качали по FTP и DC. Проблем небыло.

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


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

размер пакетов сделайте минимальный, 64 байта, пусть эти серваки их пороутить попробуют...

а где написано что он больше?

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


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

>у меня накопительный счетчик (в top) показывает никак не более 1 секунды

 

Пока 5-10К p/s - у меня тоже не более секунды натикивает.

А как поднимается до 50000 - так хоть "top не смотри". Одно расстройство.

вот щас создал синтетическую нагрузку порядка 60-80kpps между серверами (имхо, больше каталист не тянет)

не подскажите каким образом можно эти синтетические нагрузки создавать?

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


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

>у меня накопительный счетчик (в top) показывает никак не более 1 секунды

 

Пока 5-10К p/s - у меня тоже не более секунды натикивает.

А как поднимается до 50000 - так хоть "top не смотри". Одно расстройство.

вот щас создал синтетическую нагрузку порядка 60-80kpps между серверами (имхо, больше каталист не тянет)

не подскажите каким образом можно эти синтетические нагрузки создавать?

например на линуксе вот таким скриптом:

#! /bin/sh
modprobe pktgen

function pgset() {
    local result
    echo $1 > $PGDEV
    result=`cat $PGDEV | fgrep "Result: OK:"`
    if [ "$result" = "" ]; then
         cat $PGDEV | fgrep Result:
    fi
}

function pg() {
    echo inject > $PGDEV
    cat $PGDEV
}



PGDEV=/proc/net/pktgen/kpktgend_0
  echo "Removing all devices"
pgset "rem_device_all"
  echo "Adding eth0"
pgset "add_device eth0"
  echo "Setting max_before_softirq 10000"
pgset "max_before_softirq 10000"

CLONE_SKB="clone_skb 0"
# NIC adds 4 bytes CRC
PKT_SIZE="pkt_size 64"

# COUNT 0 means forever
#COUNT="count 0"
COUNT="count 100000000"
DELAY="delay 100000"

PGDEV=/proc/net/pktgen/eth0
  echo "Configuring $PGDEV"
pgset "$COUNT"
pgset "$CLONE_SKB"
pgset "$PKT_SIZE"
pgset "$DELAY"
# Random address with in the min-max range
pgset "flag IPDST_RND"
pgset "dst_min 192.168.0.1"
pgset "dst_max 192.168.255.255"
pgset "dst_mac 00:0D:65:8F:B1:34"
pgset "udp_dst_min 1000"
pgset "udp_dst_max 65535"

# Time to run
PGDEV=/proc/net/pktgen/pgctrl

echo "Running... ctrl^C to stop"
pgset "start"
echo "Done"

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


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

не подскажите каким образом можно эти синтетические нагрузки создавать?
netperf, iperf и т.п.

была еще прога, (сей-час некогда искать, а название не помню) которая могла синтезировать нагрузку на сеть по некоторому сценарию (для имитации реальной нагрузки). но для простого создания максимального bps/pps достаточно iperf.

 

и никто не мешает поднять алиас с нужным MTU и тупо скачать файл.

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


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

а кто пробовал играться irqbalance на SMP? как я понял он всё равно не может обрабатывать прерывания от 1-го девайса разными ядрами, но с 2-мя и более сетевухами должно помочь.

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


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

не подскажите каким образом можно эти синтетические нагрузки создавать?

netperf, iperf и т.п.

была еще прога, (сей-час некогда искать, а название не помню) которая могла синтезировать нагрузку на сеть по некоторому сценарию (для имитации реальной нагрузки). но для простого создания максимального bps/pps достаточно iperf.

 

и никто не мешает поднять алиас с нужным MTU и тупо скачать файл.

Есть такая софтинка - netio. Имитирует реальную нагрузку.

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


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

система: asplinux 11

чем обусловлен выбор такой системы?

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


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

Есть такая софтинка - netio. Имитирует реальную нагрузку.
Не имитирует. Это та же статическая нагрузка, что и iperf. Ну с изменением длины пакета, не более (то же может и iperf, если ему менять размер посылаемого блока).

 

А вот где бы реальную тестилку найти, что грузит сеть a la user, т.е. повторяет серфинг, качание и т.д.

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


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

Есть такая софтинка - netio. Имитирует реальную нагрузку.

Не имитирует. Это та же статическая нагрузка, что и iperf. Ну с изменением длины пакета, не более (то же может и iperf, если ему менять размер посылаемого блока).

 

А вот где бы реальную тестилку найти, что грузит сеть a la user, т.е. повторяет серфинг, качание и т.д.

tcpdump + tcpreplay ?

сам не пробовал

 

ИМХО возможности задания размера пакета и количества соединений (это дает pktgen) вполне достаточно

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

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


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

tcpdump + tcpreplay ?

сам не пробовал

Не подходит. Нужно еще статистику собирать.

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


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

А вот где бы реальную тестилку найти, что грузит сеть a la user, т.е. повторяет серфинг, качание и т.д.

на сколько реальную? и какой в этом смысл?

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


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

А вот где бы реальную тестилку найти, что грузит сеть a la user, т.е. повторяет серфинг, качание и т.д.

на сколько реальную? и какой в этом смысл?

Реальную - это создающую динамичную нагрузку на сеть, т.е. куча пакетов разной длинны, с разной задержкой и т.д., т.е. не статическую нагрузку, как iperf. Нужно - для испытаний оборудования на производительность в условиях, приближенных к реальным.

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


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

А вот где бы реальную тестилку найти, что грузит сеть a la user, т.е. повторяет серфинг, качание и т.д.

на сколько реальную? и какой в этом смысл?

Реальную - это создающую динамичную нагрузку на сеть, т.е. куча пакетов разной длинны, с разной задержкой и т.д., т.е. не статическую нагрузку, как iperf. Нужно - для испытаний оборудования на производительность в условиях, приближенных к реальным.

что касается размеров пакетов, то проще протестить наихудший вариант (тем более он с какой-то вреоятностью возможен). про задержку я не понял.

 

а имитировать кучу клиентов на куче серверов (например для измерения производительности ната) еще более ресурсоемко, чем их пронатить... да и смысла особого нет, проще поправку сделать с запасом.

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


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

Join the conversation

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

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

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

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

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

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

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