On Tue, Oct 23, 2007 at 12:17:10PM +0300, MZ wrote:
> В пн, 22/10/2007 в 21:27 +0400, Igor Sysoev пишет:
> > On Mon, Oct 22, 2007 at 06:38:31PM +0300, MZ wrote:
> >
> > > В пт, 19/10/2007 в 19:59 +0400, Igor Sysoev пишет:
> > >
> > > > Проблема в том, что FreeBSD не кэширует страницы файлов, исходя из
> > > > частоты их использования. Частота использования считается только для
> > > > mmap()нутых файлов, то есть, по сути дела, только для исполняемого кода.
> > > > Для страниц файлов, которые только читаются или же отдаются sendfile(),
> > > > никакой статистики использования не ведётся. Так что, часто читаемые
> > > > файлы имееют те же шансы вылететь из памяти, что и редко читаемые.
> > >
> > > Вынужден не согласиться.
> > > Специально пересмотрел сегодня McKusick-а - он говорит что во фре для
> > > доступа к данным файлов fs при open/exec используется абсолютно тот же
> > > механизм что и для mmap. Страница 215, замечание к pager vnode. Насчет
> > > sendfile точно не могу сказать, но кажется что и он суда попадает. Ну и
> > > соответственно ведется счетчик использования..
> >
> > Механизм тот же, а вот статистика использования страниц ведётся только
> > для mmap и страниц, которые могут уйти в swap.
> >
> > См. ответ человека, который в 1999 году сделал sendfile во FreeBSD:
> > http://lists.freebsd.org/pipermail/freebsd-current/2007-October/078034.html
> > http://lists.freebsd.org/pipermail/freebsd-current/2007-October/078058.html
>
> Правильно ли я понимаю, что проблема только с sendfile. Ведь при обычном
> read/write для каждого http-запроса будет обновляться счетчик
> использования. В таком случае тем более стоить реализовать поддержку
> EBUSY в FreeBSD sendfile.
Нет, во втором письме как раз ответ на этот вопрос - для read/write
используется специальный mapping, который pagedaemon игнорирует при сборе
статистики.
--
Игорь Сысоев
http://sysoev.ru