timer_resolution и swi4: clock sio
Andrei Nigmatulin
andrei.nigmatulin at gmail.com
Fri Mar 20 18:23:36 MSK 2009
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 ?
--
Andrei Nigmatulin
GPG PUB KEY 6449830D
Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take
More information about the nginx-ru
mailing list