Как я могу ограничить или даже отключить файловый кеш на Windows Server 2008R2?

9

Есть машина с очень быстрым RAID-массивом и быстрым интернет-соединением. Но он получил только 8 Гб памяти, что очень быстро заканчивается , когда идет загрузка.

Есть идеи как можно отключить или ограничить кеш?
(Я попытался отключить запись кэша из диспетчера устройств. Но это просто запись кэша, и это не помогло.)

апаш
источник
Какое-то отношение к этому? superuser.com/questions/415140/…
Der Hochstapler
@OliverSalzburg К сожалению, сейчас он не в режиме ожидания. Режим ожидания - это здорово, и он всегда должен быть включен. Это хороший материал. Но теперь по какой-то причине этот баран используется как «Активный». (Я использую uTorrent для проверки скорости, и при быстрой передаче это начинает происходить.)
Apache

Ответы:

4

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

psusi
источник
9
Пожалуйста, скажите это моей Windows 7, которая выгружала все программы только для того, чтобы вставить видеофайл в кеш при его кодировании - файл, который будет прочитан ровно один раз - и разбил всю коробку.
Ян Шейбал
Это может зависеть от параметра LargeSystemCache. По какой-то причине я его установил (вероятно, в то время, когда оперативной памяти у меня было более чем достаточно для всего, что я делал).
Ян Шейбал
@JanSchejbal, эту настройку я уже не помню из-за того, что несколько лет назад отказался от Windows. Обычно ядро ​​пытается выгружать страницы из процессов, которые простаивали в течение некоторого времени, потому что эту память лучше использовать для кэширования файлов для активных процессов. Этот параметр делает его более агрессивным в этом.
Псуси
@JanSchejbal Раздел реестра LargeSystemCache больше не используется по состоянию на 2008r2, согласно blogs.technet.com/b/askperf/archive/2008/02/01/…
BeowulfNode42
3

Вы должны вызвать системный API SetSystemFileCacheSize ().
Документировано здесь: http://msdn.microsoft.com/en-us/library/aa965240.aspx.

Некоторые программы с графическим интерфейсом позволяют это: http://technet.microsoft.com/en-us/sysinternals/bb897561
Но вы можете предпочесть CLI, чтобы автоматически запускать его при запуске системы: http://www.uwe-sieber.de/ntcacheset_e .html (посмотрите в середине страницы, это работает для 2k8)

Или просто напишите сценарий powershell, вызывающий SetSystemFileCacheSize ()

Обратите внимание, что настоятельно не рекомендуется отключать кэш для производственного использования.
Часто для виртуализированных машин размер кэша ограничивается небольшим значением, а не отключается.

Грегори МУССАТ
источник
хм ... пока так хорошо! Я скоро вернусь.
Apache
Это странно. Я установил рабочий размер MAXIMUM равным 1 гигабайту, и это просто помогает. Это будет намного выше, его не волнует значение или предел. Почему?
Apache
Вы должны быть уверены, чтобы контролировать правильное значение. Используйте утилиту cacheset для этого.
Грегори МУССАТ
2

Мы также столкнулись с этой проблемой на Windows Server 2008 R2 в нашей компании. В нашем случае машина застряла полностью. Кажется, это ошибка в этой серверной версии Windows, потому что она не возникала при тех же обстоятельствах ни на моей гораздо меньшей машине с Windows 7, работающей в VirtualBox, ни в Linux.

Вы можете установить кеш на определенный предел с помощью API, как уже опубликовали другие, но вы можете найти приложения, которые будут использовать его напрямую, такие как SetSystemFileCacheSize.exe или NT Cache Setter .

Недостатком является то, что вам нужно устанавливать кэш после каждой перезагрузки. Вы также можете очистить весь кэш за один раз.

Мы установили файловый кеш на нашей виртуальной машине, имеющей 14 ГБ ОЗУ, до 4 ГБ, и это работает. Также хорошо работает flush, и вы можете увидеть это прямо в диспетчере задач.

Образцы командной строки:

  • Показать текущие настройки Windows:

    SetSystemFileCacheSize.exe
    
  • Показать справку:

    SetSystemFileCacheSize.exe /?
    
  • Установите минимальный размер 8 МБ, а максимальный - 128 МБ:

    SetSystemFileCacheSize.exe 8 128
    
  • Отключите минимальный размер и установите максимальный размер 128 МБ:

    SetSystemFileCacheSize.exe off 128
    
  • Отключить минимальный и максимальный размер:

    SetSystemFileCacheSize.exe off off
    
  • Очистить кэш файлов:

    SetSystemFileCacheSize.exe flush
    

Примечание. Инструмент должен быть запущен с правами администратора.

Йозеф Клоцнер
источник
0

Чтобы ограничить кэш файлов, убедитесь, что не включен параметр Максимальная производительность общего доступа к файлам, и вы можете указать минимальный объем кеша файлов памяти, выбрав «Минимизировать объем используемой памяти» или «Баланс».

Чтобы проверить текущую конфигурацию, перейдите в: Пуск-> Панель управления-> Сетевые подключения-> Подключение по локальной сети-> На вкладке Общие, Свойства-> Выбрать файл и принтер-> Свойства .. Если выбрано значение Развернуть, выберите любой другой вариант.

user630653
источник
Параметр свойств недоступен для общего доступа к принтеру и файлу. :) Во всяком случае, он выключен, кеш это. Тем не менее, в Rammap каждый файл попадает в список файлов, и активная память продолжает расти и расти.
Апач