sendfile(2) patch и отдача больших файлов на 7-STABLE amd64
Igor Sysoev
is at rambler-co.ru
Tue Feb 3 09:26:30 MSK 2009
On Mon, Feb 02, 2009 at 11:47:46PM +0300, Artemiev Igor wrote:
> On Mon, Feb 02, 2009 at 10:11:21PM +0300, Igor Sysoev wrote:
> > Судя по этому, nginx уходит в sendfile() с закэшированным контентом один раз.
> > Что он там делает - непонятно.
> угу
>
> > А если на этой машине сделать пару загрузок с большим kern.ipc.sfreadahead,
> > а потому поставить его в 1, то скорость подымается до 50MB/s ? По идее,
> > должна остаться такой же - на уровне нескольких MB/s.
> > И, насколько я понимаю, на непатченном ядре должно повториться то же самое:
> > быстрая первая закачка и медленный последующие.
>
> Нет, установка kern.ipc.sfreadahead=1 восстанавливает скорость до 51MB/s, как
> это и было в случае с непатченным sendfile (я уже приводил порядок скоростей)
То есть,
1) загрузились,
2) поставили kern.ipc.sfreadahead=64,
3) сделали несколько закачек, первая из них быстрая, остальные - медленные,
4) поставили kern.ipc.sfreadahead=1,
5) сделали несколько закачек, все из них быстрые.
Так ?
И при этом при повторных закачках всё равно происходит обращение к диску ?
Если это так, то я не понимаю, почему: sfreadahead используется только
во время чтения. Если страница файла уже в памяти (а они все в памяти, о чём
говорит 1039M Inactive), то код проходит мимо sfreadahead и он вообще
не должно влиять на выполнение.
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list