
Заранее извиняюсь, если это недостаточно ясно для понимания моей проблемы. Текст немного длинный, но я постарался сделать его понятным.
Я использую Exchange 2016 CU6 на виртуальной машине Windows Server 2016 и часто получаю предупреждение в журнале приложений о том, что у меня не хватает виртуальной памяти (файла подкачки).
Мой мониторинг показывает, что размер файла подкачки составляет 4 ГБ с момента создания виртуальной машины в апреле, он никогда не увеличивался больше 4 ГБ и не уменьшался.
Чтобы устранить эту проблему и понять, в чем она заключается, я создал две тестовые виртуальные машины с базовой установкой Windows Server 2016 Standard и Windows Server 2008 R2 Enterprise, обе с одинаковой конфигурацией физической и виртуальной памяти:
Тестовая конфигурация виртуальной машины
БАРАН: 4ГБ
Диск C (выделенный для системы): 32 ГБ
Диск G (отведен под файл подкачки): 8 ГБ
Файл подкачки для диска C: 512 - 1024 МБ
Файл подкачки для диска G: Размер, управляемый системой
Моя тестовая виртуальная машина 2016 в настоящее время использует 512 МБ на диске C: и 1 ГБ на диске G:, что в общей сложности составляет 5,5 выделенной памяти.
Тестовая виртуальная машина 2008 в настоящее время использует 512 МБ на диске C: и 4 ГБ на диске G:, что в сумме составляет 12,5 ГБ выделенной памяти.
После долгих исследований на тему преданной памяти я нашел эту статью Марка Руссиновича:https://blogs.technet.microsoft.com/markrussinovich/2008/11/17/pushing-the-limits-of-windows-virtual-memory/
Я решил использовать инструмент testlimit64.exe с ключом -m, чтобы посмотреть, увеличится ли файл подкачки на тестовой виртуальной машине 2016 и тестовой виртуальной машине 2008.
Результат отражает проблему, описанную изначально, когда файл подкачки на тестовой виртуальной машине 2016 года не увеличивается на диске G:, но увеличивается на тестовой виртуальной машине 2008:
Согласно этой базе знаний Microsoft:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/automatic-memory-dump, используя настройку Автоматический дамп памяти в разделеПанель управления->Система->Дополнительные параметры системы->Загрузка и восстановление->Запись отладочной информацииесли файл подкачки настроен как управляемый системой, он может задать размер файла подкачки, который меньше объема физической памяти.
В проведенных мной тестах эта настройка не использовалась, обе тестовые ВМ 2008 и 2016 были настроены с использованием дампа памяти ядра.
Поэтому, если я установлю для файла подкачки на диске G: значение «Управляется системой» на тестовой виртуальной машине 2016, его размер будет автоматически установлен Windows и не будет увеличиваться при нагрузке.Это суть проблемы, поскольку это изменение поведения в Windows Server 2008.
Мой последний тест заключался в том, чтобы вручную настроить файл подкачки на диске G: на 4096–8100 МБ и снова запустить инструмент testlimit64.exe с ключом -m, и, как вы можете видеть, файл подкачки действительно увеличился с 4 ГБ до ~8 ГБ.
Итак, вот мой вопрос: почему Windows Server 2016 не увеличивает размер файла подкачки, когда он установлен в режим системного управления? Что изменилось в этом отношении между Windows Server 2008 и 2016?
Большое спасибо за то, что вы дочитали до конца и за ваши ответы.
решение1
В соответствии с Эта статьяДля Server 2016 системные файлы подкачки имеют следующий размер:
3 × RAM or 4 GB, whichever is larger. This is then limited to the volume size ÷ 8. However it can grow to within 1 GB of free space on the volume if required for crash dump settings.
Для Server 2008 указано:
3 × RAM or 4 GB, whichever is larger
Похоже, что правило 1/8, применяемое на Server 2016, — это то, что вы видите.
Надеюсь, это поможет...Ура!