O_DIRECT and friends

Igor Sysoev is at rambler-co.ru
Tue Oct 3 23:43:54 MSD 2006


On Wed, 27 Sep 2006, Alexey Mahotkin wrote:

> я слышал, что некоторые из вас раздают с помощью своих nginx'ов
> большие файлы размером примерно 700Mb.
>
> есть предложение реализовать фичу по отдаче таких файлов
> (per-location) без загрязнения файлового кэша, с помощью одного из
> трёх механизмов:
>
> - O_DIRECT у open();  -- ряд ограничений на Linux;
>
> - posix_fadvise() -- везде?
>
> - O_STREAMING, судьбу которого в линуксе я проследить не смог;
>
> насколько реально работают хотя бы первые два, вот в чём вопрос?  И
> кто знает, чем кончилась история с последним способом, который в 2.5
> дошёл аж до -mm?

У меня есть подозрение, что с sendfile()ом они будут дружить неэффективно.
Насколько я понимаю, O_DIRECT предназначен для чтения данных напрямую
в user-land буфер процесса. sendfile()у же нужно map'ить страницы
файла внутри ядра, то есть, файловый кэш нужно пачкать.


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





More information about the nginx-ru mailing list