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

Alex Vorona voron at amhost.net
Wed Nov 14 23:51:50 MSK 2007


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





More information about the nginx-ru mailing list