Чтение файла из кэша, но без загрязнения кэша (в Windows) - PullRequest
1 голос
/ 02 мая 2011

Windows имеет флаг FILE_FLAG_NO_BUFFERING, который позволяет вам указать, хотите ли вы, чтобы ваш ввод / вывод кэшировался файловой системой.

Это нормально, но что, если я хочу использовать кэш, если это возможно, но избегать его изменения?

Другими словами, как вы говорите Windows следующее?

Считайте этот файл из кеша, если он ужекэшируется, но мои данные не имеют локального расположения, поэтому не помещайте их в кэш !

Стандарт SCSI определяет бит Disable Page Out это именно так, так что мне интересно, как (если вообще) возможно использовать эту функцию из Windows (конечно, с помощью кеша файловой системы)?


Редактировать: TL; DR:

Что эквивалентно FILE_FLAG_WRITE_THROUGH для читает ?

Ответы [ 2 ]

1 голос
/ 02 мая 2011

О самой близкой Windows к тому, что вы спрашиваете, это FILE_FLAG_WRITE_THROUGH.

0 голосов
/ 02 мая 2011

Я вижу два флага, которые подозрительно выглядят так, как вы просите:

FILE_FLAG_RANDOM_ACCESS
FILE_FLAG_SEQUENTIAL_SCAN

В последнем документе четко указано, что он не будет сохранять страницы в кеше, хотя, вероятно, будет последовательно читать впередПервый документ полностью непрозрачен, но, похоже, подразумевает то, что вы хотите.Если шаблон является довольно случайным, зависание на страницах для последующего повторного использования будет пустой тратой памяти.

Имейте в виду, что для файлов ядро ​​Windows всегда будет использовать некоторые страницы «кэша» для хранения I/ вывода.Больше некуда его положить.Так что не имеет смысла говорить «не кешировать», а не «удалять старые страницы этого файла перед удалением некоторых других страниц».

...