Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: read_ahead
On Tue, Sep 29, 2009 at 02:35:54PM +0400, Михаил Монашёв wrote:
> Здравствуйте, Игорь.
>
> Игорь, а поясни пожалуйста что даёт aio sendfile? Ниже ты описал
> алгоритм работы, а зачем он нужен не понятно.
Он нужен, когда весь контент не помещается в память. aio sendfile
позволяет воркеру не блокироваться на диске при использовани sendfile.
Вместо этого воркер может принять другое соединение и, если данные
для него уже закэшированны в VM, то отдать их из кэша.
В идеале, если файлов не много, но они большие, то вся информация о
vnode'ах уже будет в памяти, и воркеры не будут блокироваться на
открытии файлов. Если же файлов много, то воркеры будут блокироваться
на открытии.
Кстати, вчера в 9-CURRENT добавили fcntl(O_READAHEAD), так что со
временем read_ahead можно будет использовать без патчей.
> IS> aio sendfile в nginx'е использует флаг SF_NODISKIO и sendfile() не
> IS> блокируется на диске, а сообщает об отсутствии данных в памяти,
> IS> после чего nginx инициирует асинхронную подгрузку данных, читая
> IS> только один байт. При этом ядро FreeBSD подгружает в память первые
> IS> 128K файла, однако при последующих чтениях файл подгружается частями
> IS> только по 16K.
--
Игорь Сысоев
http://sysoev.ru
|