
Есть машина с очень быстрым RAID-массивом и быстрым подключением к интернету. Но у нее всего 8 ГБ памяти, которая заканчиваетсяДействительнобыстро, когда загрузка пойдет вверх.
Есть идеи, как отключить или ограничить кэш?
(Я пробовал отключить кэш записи в диспетчере устройств. Но это всего лишь кэш записи, и это не помогло.)
решение1
Весь смысл кэша в том, что он используетнеиспользованныйram, и отдает его, как только приложение запрашивает больше. Таким образом, вы не хотите ограничивать его размер, так как это просто оставит свободную ram полностью потраченной впустую.
решение2
Вам необходимо вызвать системный 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()
Обратите внимание, что настоятельно не рекомендуется отключать кэш для производственного использования.
Часто для виртуализированных машин ограничивают размер кэша небольшим значением, а не отключают его.
решение3
Мы также столкнулись с этой проблемой на Windows Server 2008 R2 в нашей компании. В нашем случае машина полностью зависла. Похоже, это ошибка в этой серверной версии Windows, потому что она не возникала при тех же обстоятельствах ни на моей гораздо меньшей машине Windows 7, работающей в VirtualBox, ни под Linux.
Вы можете установить кэш на определенный предел с помощью API, как уже писали другие, но вы можете найти приложения, которые используют его напрямую, напримерSetSystemFileCacheSize.exeилиУстановщик кэша NT.
Недостаток в том, что вам нужно устанавливать кэш после каждой перезагрузки. Вы также можете очистить весь кэш за один раз с помощью этого.
Мы установили кэш файлов на нашей виртуальной машине с 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
Примечание: инструмент необходимо запускать с правами администратора.
решение4
Чтобы ограничить кэширование файлов, убедитесь, что не включена опция «Максимальная производительность общего доступа к файлам», и вы можете указать минимальный объем памяти кэширования файлов, выбрав «Минимизировать используемую память» или «Баланс».
Чтобы проверить текущую конфигурацию, перейдите в: Пуск->Панель управления->Сетевые подключения->Подключение по локальной сети->На вкладке Общие выберите Свойства->Выберите файл и принтер->Свойства. Если выбран параметр Развернуть, выберите любой другой параметр.