Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[2]: read_ahead
Здравствуйте, Игорь.
>> Игорь, а поясни пожалуйста что даёт 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@xxxxxxxxxxxxx
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.
|