|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 05 Jan 2007 04:37:35 To : Oleg Gawriloff Subject : Re: BSD 6.1 & polling --------------------------------------------------------------------------------
31 дек 2006, воскресенье, в 19:52 KRAST, Oleg Gawriloff написал(а):
VG>> Да, это дохрена. Hа моём роутере поток 11-12 тысяч в секунду в одну
VG>> сторону, полные 100 мегабит (качают-с). Hеудивительно, что твоё железо
VG>> даёт не более 35.
OG> Тогда перефразируем вопрос: Как смаршрутизировать 36000 пакетов (туда и
OG> обратно. Суммарно 72000) (дающих суммарный трафик в 80Мбит (туда и
OG> обратно,
OG> суммарно 160Мбит)? Т.е. железо не справляется, понятно. Какое железо
OG> необходимо то? Циска 7600 уже заказана, но она будет только в мае, до
OG> этого
OG> времени еще дожить нужно.
Потестировал чуток. Вот есть рядом две машинки, одна двухъядерный Pentium-D
2.4Ghz с Intel 82557 Pro/100 Ethernet, другая Celeron-900
с Intel 82559 Pro/100 Ethernet, соединены кроссовером. Обе 6.2-PRERELEASE,
из одних и тех же сорцов собраны. iperf из сегодняшних портов в режиме UDP,
Celeron - сервер, Pentium - клиент. ifconfig fxp0 link0 на обоих концах
включено.
Hа клиенте запускаю iperf -f m -l 64 -u -t 10 -b 10000K, получаю
10Mbit трафика, потерь меньше 0.05%. Hа клиенте 165 прерываний в секунду
на fxp0, на сервере 19500 прерываний. При повышении скрости - сервер
проседает, 25500 прерываний в секунду и 23% потерь, те же 10Mbit/s.
Это все без поллинга и на неоптимизированном ядре сервера.
При включении оптимизации (CPUTYPE=pentium3) и выкидывании IPSEC из ядра
(что дает mpsafe), получаем 14Mbit/s (27800 прерываний в секунду)
без потерь и потери 2.5% на 15Mbit/s (29400 прерываний в секунду).
В последнем случае на сервере имеем 245 прерываний в секунду на fxp0,
а на клиенте 66% CPU тратилось на прерывания, почти 30% на system time,
остальное user time (запущенный systat), idle 0%.
При включении поллинга на клиенте получаем 25Mbit/s без потерь,
при это systat показывает 0 прерываний по fxp, а idle становится 40%,
на прерывания уходит около 35%, также уменьшается system time.
При увеличении потока до 40Mbit/s потери плавно и пропорционально растут
до 3.5%, при этом загрузка клиента повысилась до 50%, то есть одно
ядро полностью загружено (почти только на system time). Hа сервере
при этом около 5% CPU свободно.
Почему-то ifconfig fxp0 polling на клиенте возвращает Invalid argument
(возвращает это на самом деле ioctl(SIOCSIFCAP), хотя polling в ядре есть).
Все это, напомню, при размере UDP payload в 64 байта.
Для 25mbit/s iperf говорит: Sent 499723 datagrams, это за 10 секунд,
получаем 49.9kpps, причем с отдачей на userland на Celeron-900 и 40% Idle
CPU.
Для 40Mbit/s это уже 82.7kpps при 3.5% потерь и почти полностью занятом CPU.
Дальше тестировать не стал, поздно уже :-)
Eugene
--
И знатную леди от Джуди О'Греди
Hе сможет никто отличить.
--- slrn/0.9.8.0 (FreeBSD)
* Origin: Svyaz Service JSC (2:5006/1@fidonet)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/2609318dbea0a.html, оценка из 5, голосов 10
|