nginx-0.1.18

Igor Sysoev is at rambler-co.ru
Wed Feb 9 18:58:52 MSK 2005


On Wed, 9 Feb 2005, Alexander Popkov wrote:

> Wednesday, February 9, 2005, 6:27:10 PM, you wrote:
> IS> devpoll_changes - максимальное число событий, которые можно записать
> IS> в /dev/poll за один раз.
>
> IS> devpoll_events - максимальное число событий, которые можно получить.
> IS> из /dev/poll за один раз.
>
> А если в данный момент больше чем devpoll_changes сокета ожидающих события?
> Что тогда будет делать nginx?
>
> И зачем разнесено на 2 параметра, changes и events?
> По идее ведь это одно и тоже число.

Это разные числа.

/dev/poll в nginx работает так: nginx получает из ядра N событий,
N < devpoll_events. По мере обработки этих событий nginx хочет добавить
или удалить события, все эти изменения (число M) записываются в массив,
размер которого не больше devpoll_changes. Если M стало равно
devpoll_changes, то делается write(/dev/poll) и эти изменений передаются.
в ядро, а массив начинает заполняться с начала. После того, как nginx
обработает N полученных значений, то он идёт за новыми. Перед этим
он пишет в ядро (write(/dev/poll)) всё, что накопилось в массиве изменений.
После этого можно спрашивыать у ядра новые события: ioctl(DP_POLL).

Если у готовых событий больше, чем devpoll_events, то придётся делать
больше сисколлов для получения событий.


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





More information about the nginx-ru mailing list