1

Есть ли способ сброса кеша файлов Windows? мы узнали, как использовать RamMap для освобождения файлового кэша Windows, который вы можете съесть, что было приятно.

Я единственный человек, который думает, что уменьшение размеров кэша в виртуальных машинах Windows является очевидной победой? Большая часть гостевого кэша - потраченный впустую ресурс. Если бы вы могли разместить кэш на диете, вы могли бы уменьшить выделение гостевой памяти без увеличения объема подкачки.

Итак, вопрос в том, как вы получаете эквивалент чего-то вроде RAMMap Empty Standby List, работающего как запланированный процесс? RamMap не принимает аргументы, кроме как для регистрации. Запланированная задача очистки кеша была бы сырой, но лучше, чем необходимость приспосабливать алгоритм кеширования, который никогда не разрабатывался, и что MS, похоже, не удосужился адаптироваться для виртуализации.

Другие предложения приветствуются.

2 ответа2

0

Некоторые моменты для рассмотрения:

Кэш файлов Windows (реактивный, тот, который использует сопоставление файлов, он существует с NT 3.1) не находится в списке резервных страниц. Раньше он был в "системном рабочем наборе". Начиная с Windows 7 этот рабочий набор был разбит на четыре, и файловый кеш теперь находится в отдельном рабочем наборе. В PerfMon это "резидентные байты системного кэша", а также "байты кэша", оба в объекте Memory. На вкладке "Использовать счетчики" в RAMmap это часть того, что находится на пересечении "активный" и "сопоставленный файл". Функция "Пустой рабочий набор системы" в RAMmap сбрасывает этот рабочий набор (но обычно он долго не сбрасывается).

Файловый кеш Windows обычно используется только для небольших файлов (под МБ или около того). Большинство программ используют сопоставление файлов для доступа к большим файлам, и сопоставление файлов не проходит через файловый кеш Windows (хотя кэш использует сопоставление файлов для файлов, с которыми он имеет дело).

Superfetch использует список резервных страниц, но ничего не удаляет и не добавляет в список резервных страниц. Это просто перепрофилирует эти страницы. Таким образом, избавление от Superfetch (это легко сделать, отключив его службу) не изменит размер вашего списка резервных страниц. Это просто будет означать, что страницы с низким приоритетом в этом списке не будут переназначены для Superfetch. Они будут использоваться в качестве кэша страниц, недавно удаленных из рабочих наборов во время замены рабочего набора.

0

После нескольких экспериментов я получаю наилучшие результаты: 1. голодание гостей ОЗУ и 2. кэширование гостевого ввода-вывода на хосте.

Например, вместо того, чтобы запускать Win 7 64 с 2,5 ГБ ОЗУ и заставлять его выполнять собственное кэширование, выделите 1 ГБ плюс как минимум 1 ГБ пространства подкачки и включите кэширование для соответствующего контроллера виртуального диска. Я использую VirtualBox, что делает это легко.

Это звучит неэффективно, но, кажется, заставляет гостя использовать более консервативный режим выделения памяти, что приводит к меньшим (видимым) потерям. Существует еще один обмен, но обмен кэшируется, поэтому его эффект уменьшается. Некоторые данные будут кэшироваться дважды, но объем пропорционально меньше из-за меньшего размера гостевого кэша (пара сотен МБ вместо чего-то, приближающегося к 1 ГБ).

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

Общий вывод: модель виртуальной памяти плохо адаптирована к аппаратной виртуализации, и не было особых усилий сделать ее настраиваемой или адаптируемой для работы в ВМ, по крайней мере, с помощью MSFT.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .