timer_resolution и swi4: clock sio

Igor Sysoev is at rambler-co.ru
Fri Mar 20 18:28:35 MSK 2009


On Fri, Mar 20, 2009 at 06:23:36PM +0300, Andrei Nigmatulin wrote:

> On Friday 20 March 2009 18:03, Igor Sysoev wrote:
> > On Fri, Mar 20, 2009 at 05:56:34PM +0300, Maxim Dounin wrote:
> > > Hello!
> > >
> > > On Fri, Mar 20, 2009 at 05:13:13PM +0300, Монашёв Михаил wrote:
> > > > Здравствуйте.
> > > >
> > > > Заметил в top -S , что  swi4: clock sio жрёт много процессора:
> > > >
> > > > 18 root        1 -32    -     0K    16K WAIT   2  17.9H 15.58% swi4:
> > > > clock sio
> > > >
> > > > В конфиге nginx-а прописано timer_resolution 100ms;
> > > >
> > > > Когда  закомментил  timer_resolution,  то процесс стал кушать не более
> > > > процента.
> > > >
> > > > Кроме  того, странным кажется тот факт, что nginx не пишет аксес-логи,
> > > > для которых как я понимаю создавался timer_resolution.
> > > >
> > > > Может  кто-нить пояснить, как работает timer_resolution и стоит ли его
> > > > использовать?   Ведь  фактически  сэкономленные  сисколы  меняется  на
> > > > процессор, скушенный swi4: clock sio.
> > >
> > > При использовании timer_resolution каждый воркер создаёт таймер,
> > > тикающий периодически (раз в 100ms в твоём случае) и делает
> > > gettimeofday() по этому таймеру.  При не использовании - делает
> > > gettimeofday() каждый раз после получения очередной порции событий
> > > из ядра.  Полученное время используется много где, в частности - в
> > > таймаутах и т.п., далеко не только при записи логов.
> > >
> > > В зависимости от вида нагрузки и количества воркеров эффект от
> > > использования timer_resolution может быть разным.  Думаю твоя
> > > проблема в количестве воркеров.
> >
> > Да, твоя фраза "каждый воркер создаёт таймер" натулкнула меня ту же мысль.
> > 1000 воркеров генерят 10000 callout'ов - это уже серьёзно.
> 
> А что, во FreeBSD gettimeofday() все еще syscall ?

Да, но callout'ы - это не gettimeofday().


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





More information about the nginx-ru mailing list