sendfile(2) patch и отдача больших файлов на 7-STABLE amd64

Igor Sysoev is at rambler-co.ru
Tue Feb 3 12:09:52 MSK 2009


On Tue, Feb 03, 2009 at 11:55:07AM +0300, Artemiev Igor wrote:

> On Tue, Feb 03, 2009 at 09:26:30AM +0300, Igor Sysoev wrote:
> > То есть,
> > 
> > 1) загрузились,
> > 2) поставили kern.ipc.sfreadahead=64,
> > 3) сделали несколько закачек, первая из них быстрая, остальные - медленные,
> > 4) поставили kern.ipc.sfreadahead=1,
> > 5) сделали несколько закачек, все из них быстрые.
> > 
> > Так ?
> > И при этом при повторных закачках всё равно происходит обращение к диску ?
> Да, только kern.ipc.sfreadahead=16, а так всё точь в точь. Обращение к диску
> есть при каждой закачке.

Да, с 64 я ошибся, должно быть 16.

> > Если это так, то я не понимаю, почему: sfreadahead используется только
> > во время чтения. Если страница файла уже в памяти (а они все в памяти, о чём
> > говорит 1039M Inactive), то код проходит мимо sfreadahead и он вообще
> > не должно влиять на выполнение.
> Выглядит так, будто UIO_NOCOPY отрабатывается не совсем ожидаемо. Можно,
> конечно, предположить, что этот флаг zfs пока не поддерживается, но с ufs
> проблема тоже наблюдается

zfs, насколько я понимаю, во FreeBSD копирует всегда. Но дело в том, что
при повторных обращениях к файлу это место вообще не должно работать.

> Ну вот в аттаче два ядерных трейса, соответствующих началу закачки: 1й с
> выключенным zfs prefetch и zil, второй с включенными.  В обоих идёт обращение к
> диску. Может это как-то поможет.
> 
> Вообще, у тебя самого оно по-прежнему работает на свежей 7.1-STABLE? У меня
> означенный выше эффект воспроизводится на 6.4-STABLE и 7.1-STABLE.

У меня это работает на 7.0-RELEASE-p5, но, думаю, дело не в версии, а в zfs.

А если этому файлу несколько раз сделать dd of=/dev/null, после первого dd
есть обращения к диску ?


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list