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