Заранее прошу прощения, если это недостаточно ясно, чтобы понять мою проблему, это немного долго, но я сделал все возможное, чтобы сделать ее понятной.
Я использую 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 KB: 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?
Большое спасибо за прочтение и за ваши ответы.
В соответствии с Эта статья, для файлов подкачки 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.
Надеюсь, это поможет ... Ура