<div dir="ltr">Насколько я понимаю, mincore оперирует адресами из виртуального адресного пространства процесса, а не файловыми дескрипторами. Таким образом, чтобы как-то применить его к файлу, нужно через mmap отображать файл в то самое адресное пространство, что, видимо, не является приемлемым решением. В <a href="http://habrahabr.ru/post/260669/">http://habrahabr.ru/post/260669/</a> указано, что были попытки по созданию системного вызова fincore(<a href="https://lwn.net/Articles/371538/">https://lwn.net/Articles/371538/</a>), который работал бы как раз с файловыми дескрипторами, но как-то не срослось.</div><div class="gmail_extra"><br><div class="gmail_quote">28 июня 2015 г., 22:10 пользователь Gelun, Artem <span dir="ltr"><<a href="mailto:a@gelun.ru" target="_blank">a@gelun.ru</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Добрый день всем.<div><br></div><div>Возможно, идея/вопрос не новы, но:</div><div><br></div><div>Сейчас (с версии 1.7.11, если не ошибаюсь) sendfile может быть как блокирующим, так и неблокирующим *основной поток*, вызываясь в отдельном треде.</div><div><br></div><div>При этом пул тредов фиксирован и если, например, я выделил 10 тредов, которые заняты чтением с диска (заблокированы), то другие "читатели" будут ожидать их даже если данные уже находятся в page cache, что не рационально, имхо. Т.е. мы можем иметь нагрузку, при которой 90% трафика будет отдаваться из PageCache, 10% с диска и эти 10% могут заблокировать кэшированные, "популярные" ответы.</div><div><br></div><div>Вопрос: можно ли добавить в эту логику вызов mincore (в linux) для того, чтобы определить сколько данных есть в page cache, отправке этого объема данных и, если они отправились (возврат == NGX_OK) вызывать остаток sendfile в треде? Есть ли какие-то потенциальные проблемы за пределами <font face="monospace, monospace">ngx_linux_sendfile_chain.c</font> строк 182-203 внутри <font face="monospace, monospace">#if (NGX_THREADS)</font> ?</div>























</div>
<br>_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br></blockquote></div><br></div>