LINUX.ORG.RU

Ну как такового понятия файловый кеш не существует.
Есть понятия дисковый кеш. Т.е. кеш который хранит дисковые
блоки. (он тоже в принципе делится на два ... но это ладно).
Так вот ядро не оперирует в своей кешевой политике понятием
файл, а блок (или страница). И эти самые блоки ядро кеширует
и вытесняет из кеша если
Нет памяти или блок не используется.
Механизмов принудительного оставления блоков насколько я знаю
нет. Т.е. если файл часто используют то большинство его блоков
и так будут торчать в кеше.
Можно использовать mmap для ускорения чтения-записи в файл.
Если читается и пишется одна и та же область.
Тогда многих промежуточных операций ядро делать не будет
для записи/чтения (поиск нужного блока).
Т.е. запись будет ровно столько сколько идет копирование
между областями памяти. Т.е. дисковая страница mapitsya
прям в user space of the process.
Но опять же при острой нехватке памяти для запуска программ
эта страница будет скинута на диск.

ovsov
()

Спасибо Константин.

Если я верно понял (из книги Теренса Чана),
то сделав mmap какого-нибудь файла (и оставив в памяти процесс,
который это сделал) мы при любом обращении к этому файлу
автоматически будем читать не с диска, а из памяти?

И некое замечание, по моим наблюдениям, дисковый кеш сам
не очищается (сутками) и из него можно вытеснить содержимое
только пользуясь другими файлами.

anonymous
()
Ответ на: комментарий от anonymous

1. не факт, эта память может быть легко отсвапована или часть ее выкинута на тот же диск при помощи пэйджинга. заблокировать можно при
помощи mlock или mlockall.
2. очищается еще как. посмотри в процессах bdflush или update.

Z0termaNN
()
Ответ на: комментарий от Z0termaNN

Хорошо, предположим я в одной программе делаю
mmap и затем mlock на туже область памяти.
Оставляю процесс сделавший это запущенным.

Если теперь обратиться к файлу с которым
было все это проделано (mmap+mlock) из другой
независимой программы. Будет ли он обращаться
при этом к жествому диску?
Я так понял, что нет. Может я ошибаюсь?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.