read_ahead

Igor Sysoev is at rambler-co.ru
Tue Sep 15 09:58:44 MSD 2009


On Tue, Sep 15, 2009 at 12:10:30AM +0400, Михаил Монашёв wrote:

> Здравствуйте, Игорь.
> 
> А этот патч для FreeBSD войдёт в 8.x ?

Он пока никуда не вошёл. Область применения специфична.
Единственное, что повышает его шансы на вхождение - это то, что он
совместим fcntl(F_RDAHEAD) из MacOSX:

     F_RDAHEAD          Turn read ahead off/on.  A zero value in arg disables
                        read ahead.  A non-zero value in arg turns read ahead
                        on.

В моём варианте можно указать желаемый размер предчтения.

> IS> aio sendfile в nginx'е использует флаг SF_NODISKIO и sendfile() не
> IS> блокируется на диске, а сообщает об отсутствии данных в памяти,
> IS> после чего nginx инициирует асинхронную подгрузку данных, читая
> IS> только один байт. При этом ядро FreeBSD подгружает в память первые
> IS> 128K файла, однако при последующих чтениях файл подгружается частями
> IS> только по 16K.
> 
> IS> К письму прилагается два патча 
> 
> IS> 1) для FreeBSD 7, реализующий fcntl(F_RDAHEAD, размер):
> 
> IS> patch -d /usr/src < patch.rdahead
> IS> после чего пересобираем и устанавливаем ядро и перегружаемся.
> 
> IS> После загрузки обновляем fcntl.h:
> 
> IS> cd /usr/src/include/
> IS> make obj all install
> 
> IS> 2) для nginx-0.8.15 - patch.read_ahead 
> 
> IS> Настройки:
> 
> IS> sendfile    on;
> IS> aio         sendfile;
> IS> read_ahead  256k;
> IS> tcp_nopush  on;
> 
> IS> sysctl vfs.read_max=16  # 256K
> 
> IS> Для Линукса read_ahead с любым размером >0 вызывает просто
> 
> IS> posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL)
> 
> 
> 
> 
>   
> 
> --
> 
> С уважением,
> Михаил Монашёв, SoftSearch.ru
> mailto:postmaster at softsearch.ru
> ICQ# 166233339
> http://michael.mindmix.ru/
> Без бэкапа по жизни.
> 

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





More information about the nginx-ru mailing list