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