Назад | Перейти на главную страницу

Поведение кэша метафайлов Windows Server 2008R2

У нас есть сервер Windows Server 2008R2 с 32 ГБ оперативной памяти и ~ 1000000 объектов файловой системы на 15 ТБ памяти. Уровень использования очень низкий (поддерживается только 2 разработчика), поэтому сохранение содержимого файла в кэше (Mapped File) совсем не важно, но быстрый доступ к метаданным файла (Metafile) очень важен. Поведение сервера кажется прямо противоположным. Распределение сопоставленных файлов расширяется, чтобы использовать всю доступную память, в то время как метафайл, кажется, часто очищается.

Пример. После запроса свойств (выберите корневые папки -> Свойства) размер метафайла увеличивается до ~ 750 МБ (отлично!). Однако, когда я делаю то же самое через час или два, выделение метаданных упало до ~ 300 МБ и происходит полное повторное сканирование диска (1-2 минуты, не очень хорошо!).

Как сохранить в кеше содержимое метафайла?

Графика вывода RamMap здесь - http://i.imgur.com/X1EOskf.jpg

Вы можете попробовать увеличить минимальный размер кэша системных файлов, изменив мой скрипт powershell здесь, при ошибке сервера вставив строку непосредственно перед

$status = [MyTools.cache]::Set( $SFCMin, $NewMax, $SFCFlags ) # calls the c# routine that makes the kernel API call

и измените установленную строку, чтобы не уменьшать максимум, поэтому она читает

$SFCMin = 1 * $GiB
$status = [MyTools.cache]::Set( $SFCMin, $SFCMax, $SFCFlags ) # calls the c# routine that makes the kernel API call

чтобы установить минимальный кеш, в котором хранятся данные метафайла, равным 1 ГиБ.

Обратите внимание, что кто-то еще обнаружил, что минимум должен быть не менее 64 KiB меньше максимального. Максимальное значение по умолчанию - 1 TiB.

Вам также действительно следует выяснить, что вызывает около 21 ГБ активной памяти «Driver Locked».