ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: кеширование стати ки в RAM



Igor Sysoev wrote:
On Mon, Oct 26, 2009 at 01:56:52PM +0200, MZ wrote:

Igor Sysoev wrote:

Да, во FreeBSD page cache не учитывает популярность страниц, отданных
sendfile()ом или прочитанных с помощью read(). Популярность учитывается
только при обращеннии к mmap()тым страницам. Тем не менее, какое-то
Насколько я понял МакКусика, для read() сначала делается что-то типа того что и для mmap() - страница загружается в память и привязывается к vnode файла. Разница между read() и mmap() в том что в первом случае нужные данные после загрузки с винта в память копируются в указанные в read() анонимные страницы привязанные к процессу, а во втором - загруженная страница с данными сама биндится в адрессное пространство процесса.

Да.

В обоих случаях при работе с данными идет обращение к странице привязанной к vnode - для read() чтоб скопировать в адрессное пространство процесса, который затем зашлет данные в сокет, и для mmap() - чтоб скопировать уже сразу в сокет.

При копировании read()ом данных в адресное пространство процесса
используется дополнительное отображение, по которому не ведётся
статистика обращений:
http://lists.freebsd.org/pipermail/freebsd-current/2007-October/078034.html
http://lists.freebsd.org/pipermail/freebsd-current/2007-October/078058.html


> The read() from file certainly updates vnode pages' PG_A/PG_REFERENCED,
> because coping to userland is made by CPU. I think write() does the same.

   No, it does not. The kernel virtual mappings involved in that copy
are "special"; page bits (PG_A, PG_M, etc) from those mapping are not
preserved from the PTEs (at least not on x86).

Если это правда - то мне совершенно непонятно, зачем так сделано, ведь это на корню губит смысл существования битов PG_A/PG_REFERENCED.


Не в курсе как с zero_copy, будет ли засчитываться обращение ядра к mmap-нутым страницам или нет.

Я все правильно понял, или где-то ошибся ?






 




Copyright © Lexa Software, 1996-2009.