ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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 дескрипторами я не увидел под рукой :)



 




Copyright © Lexa Software, 1996-2009.