ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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



 




Copyright © Lexa Software, 1996-2009.