небольшой оффтоп: device polling

Igor Sysoev is at rambler-co.ru
Thu Nov 15 09:25:02 MSK 2007


On Wed, Nov 14, 2007 at 10:51:50PM +0200, Alex Vorona wrote:

> 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 прерываниями действия например или по задержанному 
> прерыванию. Пакеты ж тоже пачками уходят, но ОС может позволить "ложить" 
> в карту пакеты синхронно с другими событиями

Тем не менее, на tx прерывания вполне приходят и списывать tx пакеты нельзя.

> >>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 дескрипторами я не увидел под рукой :)

em - 256/4096, bge - 512, fxp - 192.


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list