Linux: Отключить кэш файлов для процесса? - PullRequest
0 голосов
/ 13 февраля 2012

Есть ли способ отключить кэш файлов для определенного процесса?

У меня есть два процесса, выполняющих A и B.

Я хочу, чтобы файл, открытый A, оставался в кэше.

и Я не хочу включать файловый кеш для B, поэтому он не заменяет файл, кэшированный процессом в памяти.

Есть ли способ отключить кэш файлов для определенного процесса?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Ничего из того, что я знаю ... единственная опция - глобальная / зависит от устройства:

  • используя опцию -sync с креплением
  • с использованием drop_caches

Еще один момент:

Даже если бы вы могли сделать то, о чем просили, нет никакой гарантии, что любые другие процессы (C, D, E и т. Д.) Будут вести себя так, что "файл, кэшированный процессом A в памяти", будет заменен ...

ОБНОВЛЕНИЕ - после замечаний от OP обидной производительности:

Linux предлагает (как и большинство современных ОС) то, что называется «отображаемый в память файл» - в основном это способ доступа к содержимому файла в памяти ... ОС назначает файлу (в зависимости от заданных параметров) часть адресное пространство и загружает содержимое файла в это адресное пространство (опять-таки: точное поведение зависит от заданных параметров).

Вы бы сделали это в процессе А, чтобы достичь того, чего вы хотите ...

Оформление вызова mmap API для получения подробной информации.

1 голос
/ 13 февраля 2012

Процесс B может использовать fadvise(), чтобы заставить ядро ​​не кэшировать данные, считанные из данного файлового дескриптора.

...