Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: небольшой оффтоп: device polling
Igor Sysoev пишет:
On Wed, Nov 14, 2007 at 08:55:35PM +0200, Alex Vorona wrote:
Igor Sysoev пишет:
On Wed, Nov 14, 2007 at 07:39:07PM +0200, Alex Vorona wrote:
Anton Yuzhaninov пишет:
On 14.11.2007 19:47, Pentarh Udi wrote:
Есть ряд вопросов по поллингу, я надеюсь не сочтут оффтопом.
polling имеет большой овехед, и при наличии хорошей сетевой карты (em,
bge) его лучше не использовать совсем.
поподробней плз можно. Поллинг полезен при больших pps и на карте с
немаленькими аппаратными буфферами - em и bge. Я правда не знаю,
включает ли FreeBSD отложенные аппаратные прерывания на них, судя по man
bge этого нет, а в man em по hw.em.rx_int_delay вижу The default value
is 0, since adapters may hang with this feature being enabled.
systat -v:
6274 bge1 irq18
netstat -I bge1 1
input (bge1) output
packets errs bytes packets errs bytes colls
54347 0 7293726 48692 0 24562182 0
55204 0 7407979 48944 0 24368319 0
На ~100,000 (54347+48692) пакетов всего ~6274 прерывания.
У em то же самое.
tx-пакеты не в счёт :)
Как это не в счёт ? А как OS узнаёт, что пакет ушёл и в карте можно
освобожать ресурсы, занятые этим пакетом ?
совмещённые с RX прерываниями действия например или по задержанному
прерыванию. Пакеты ж тоже пачками уходят, но ОС может позволить "ложить"
в карту пакеты синхронно с другими событиями
rx ~50k на 6k прерываний. Плоховатый показатель < 10 packets / interrupt
Ну там ещё есть запас - настроено на
*) прерывание после 64 rx пакетов или 128 tx пакетов.
*) или задержка прерывания на 150ms.
не нашёл никаких похожих настроек в man bge
. Такой я видел и на linux с NAPI на e100 :)
При поллинге я вижу по 1к пакетов за 1 полл
sysctl kern.polling
kern.polling.burst: 1000
kern.polling.burst_max: 1000
kern.polling.each_burst: 1000
Это на какой карте ? Далеко не в каждой карте есть место для 1000 пакетов.
гигабитные imho must have по 4к пакетов буффера в обе стороны. 256 это
для 100мбит ещё нормально
из man em
hw.em.rxd
Number of receive descriptors allocated by the driver. The
default value is 256. The 82542 and 82543-based adapters can
handle up to 256 descriptors, while others can have up to 4096.
Чипов с 256 дескрипторами я не увидел под рукой :)
|