read_ahead

Михаил Монашёв postmaster at softsearch.ru
Tue Sep 29 15:38:24 MSD 2009


Здравствуйте, Игорь.

>> Игорь, а поясни пожалуйста что даёт aio sendfile? Ниже ты описал
>> алгоритм работы, а зачем он нужен не понятно.

IS> Он нужен, когда весь контент не помещается в память. aio sendfile
IS> позволяет воркеру не блокироваться на диске при использовани sendfile.
IS> Вместо этого воркер может принять другое соединение и, если данные
IS> для него уже закэшированны в VM, то отдать их из кэша.

А в каких случаях лучше делать aio on, а в каких aio sendfile? Я вот
сейчас дополз до того, чтобы попробовать aio на рабочей машине и если
всё получится, оставлю его вместо 1000 воркеров.

IS> В идеале, если файлов не много, но они большие, то вся информация о
IS> vnode'ах уже будет в памяти, и воркеры не будут блокироваться на
IS> открытии файлов. Если же файлов много, то воркеры будут блокироваться
IS> на открытии.

У  меня  как раз файлов очень много, но вроде бы большинство влезает в
память:

kern.maxvnodes: 2000000
vfs.numvnodes:  1167098

Видимо сейчас блокировки возникают из-за открытия редких файлов,
которые почему-то не попали в кэш vnode-ов...

Эх, жаль никак не получается ограничиться одним воркером... :-)

Кстати, нормально ли делать vfs.aio.max_aio_procs: 256 ? Или ядро
может не потянуть столько ядерных тредов?

Мог  бы  ты  описать  вкратце, как работает AIO во FreeBSD. Там каждый
ядерный  тред  имеет  свою  очередь  файлов  на чтение и по очереди их
читает? По sysctl -d vfs.aio можно лишь догадываться о том как там всё
работает...

IS> Кстати, вчера в 9-CURRENT добавили fcntl(O_READAHEAD), так что со
IS> временем read_ahead можно будет использовать без патчей.

Спасибо за хорошие новости!

--

С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster at softsearch.ru
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.






More information about the nginx-ru mailing list