9

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

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

4 ответа4

4

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

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()

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

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

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

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

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