Hello, Vadim Goncharov!

On Sat, Mar 19, 2011 at 01:18:13AM +0600
vadimnucli...@tpu.ru wrote about "Re: [freebsd] em, input errors and kernel 
load":
> 18.03.11 @ 21:45 Alexey Karguine wrote:
> 
> 
> >>Ну так vmstat вышеуказанный-то где?
> >>
> >Только что был очередной приступ. vmstat -{zm} сделать успел. Результат
> >в приложенных файлах. Посмотрите пожалуйста, сам я в эти цифрахникогда  
> >не разберусь.
> 
> В vmstat -z ничего такого нет, кроме большого числа кэша vnode (к 82000  
> файлов обращались), да еще строки:
> 
> 128:    128,        0,   137977,    50663, 107517508,        0
> 
> которую проясняет vmstat -m:
> 
>     Type InUse MemUse HighUse Requests  Size(s)
> libalias 137337 17231K       - 107197469  128
> 
> Число не ахти какое большое, но больше ничего подозрительного в vmstat  
> -m/-z нет.
> 
> >>Это программная проблема, taskq уже не в hardware interrupt крутится,  
> >>так что не поможет.
> >>
> >>http://lists.freebsd.org/pipermail/freebsd-current/2006-February/061096.html
> >>  
> >>- пересобрать ядро по инструкции отсюда, попробовать остальные шаги во  
> >>время затыка.
> >
> >Сделал. Чтобы не поднимать трафик в рассылке файл с выходными данными  
> >(~290 килобайт) выложил тут: http://dl.dropbox.com/u/83258/hwpmc.txt
> >
> >Делал так:
> >- во время затыка запустил pmcstat -S instructions -O /tmp/sample.out
> >- нажал ctrl-c после того, как затык прошёл. Получил такое вообщение в  
> >консоле:
> >pmcstat: WARNING: some events were discarded.  Please consider tuning  
> >the "kern.hwpmc.nbuffers" tunable.
> >- pmcstat -R /tmp/sample.out -k /boot/kernel/kernel -g
> >- gprof /boot/kernel/kernel /tmp/INSTR_RETIRED_ANY/kernel.gmon
> 
> Да в общем-то можно было не выкладывать, там самое главное в строчках  
> Top-5 пожирателей времени (80% времени в сумме):
> 
>   %   cumulative   self              self     total
>  time   seconds   seconds    calls  ms/call  ms/call  name
>  36.9  233576.00 233576.00     3080 75836.36 76859.98  sched_idletd [9]
>  28.2  411599.00 178023.00   799402   222.70   222.70  _mtx_lock_sleep [11]
>  11.8  485951.00 74352.00      252 295047.62 296047.62  _FindLinkIn [16]
>   2.1  499405.00 13454.00     2390  5629.29 116656.65  ipfw_chk [6]
>   1.8  510634.00 11229.00    11536   973.39  1001.30  rn_match [26]
> 
> Это явный lock contention (glebius@ тут считает, что если сделать ядро с  
> MUTEX_PROFILING, то будет видно, что libalias лок - most contended). Там  
> выше в call graph есть подтверждение:
> 
>                                   called/total       parents
> index  %time    self descendents  called+self    name    index
>                                   called/total       children
> 
>               485.00   227154.59  678354/678354      ipfw_nat [8]
> [10]    36.0  485.00   227154.59  678354         LibAliasIn [10]
>              151066.41        1.70  678355/799402      _mtx_lock_sleep [11]
>              1053.00    75033.48     794/794         LibAliasInLocked [14]
> 
> То есть, несколько тредов одновременно постоянно дерутся за доступ к  

Вадим, можно мне пояснить, вернее разжевать, такое: нагрузка в emX:
taskq. Так? В первых постах топикстартер показывает свой трафик:
7-10кппс и 7-9МБс. На такой нагрузке нат как бы не должен
выпендриваться. Почему вспсплески по CPU у топикстартера получаются?

У меня более слабая машинка натила под 200мбит без проблем!


> instance ната - оно не параллелится. Решение: натить в несколько внешних  
> IP-адресов, для каждого заводить отдельный инстанс libalias (ipfw nat). Я  
> в свое время бил кусками по /28 (16 адресов на один внешний), исходя из  
> лимитов числа соединений с адреса на торрент-трекерах, аськосерверах и т.д.
> 
> Еще вариант, менее выигрышный и более сложный: пропатчить исходники, в  
> /usr/src/sys/netinet/libalias/alias_local.h необходимо найти и заменить  
> две константы, которые cо времен 7.1 равняются 4001. Сделать их такими:
> 
> #define LINK_TABLE_OUT_SIZE        8123
> #define LINK_TABLE_IN_SIZE         16411
> 
> и пересобрать ядро (и при каждом обновлении исходников придется руками  
> поддерживать патченым так).

-- 
 Lystopad Olexandr 

Ответить