Windows Server 2016 pagefile does not increase

pagefilevirtual-memorywindowswindows-server-2016

I apologize in advance if this is not clear enough to understand my problem, it's a bit long but I've done my best to make it understandable.

I'm running an Exchange 2016 CU6 on a Windows server 2016 VM and I am frequently getting warning in the application log saying that I am out of virtual memory (pagefile).

enter image description here

My monitoring shows that the pagefile has been at 4GB since the VM was created in April, it has never increased beyond 4GB nor has it decreased.

enter image description here


To troubleshoot this issue and understand what the problem is, I have created two test VMs with a vanilla installation of Windows Server 2016 Standard and Windows Server 2008 R2 Enterprise, both with the same physical and virtual memory configuration:

Test VM Configuration

RAM: 4GB

Disk C (dedicated to system): 32GB

Disk G (dedicated to pagefile): 8GB

Pagefile for drive C: 512 – 1024 MB

Pagefile for drive G: System managed size

enter image description here

My test VM 2016 is currently using 512MB on the C: drive and 1GB on the G: drive, totalling 5.5 of committed memory

enter image description here

The test VM 2008 is currently using 512MB on the C: drive and 4GB on the G: drive, totalling 12.5GB of committed memory

enter image description here


After researching a lot about committed memory, I have found this article from Mark Russinovitch: https://blogs.technet.microsoft.com/markrussinovich/2008/11/17/pushing-the-limits-of-windows-virtual-memory/

I've decided to use the tool testlimit64.exe with the -m switch to see if the pagefile would increase on the test VM 2016 and test VM 2008.

The result reflects the problem explained initially where the pagefile on the test VM 2016 does not increase on the G: drive, but it does on the test VM 2008:

enter image description here

enter image description here


According to this Microsoft KB: https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/automatic-memory-dump, using the Automatic Memory Dump setting under Control Panel->System->Advanced System Settings->Startup and Recovery->Write debugging information with the pagefile configured as system managed, it can set the pagefile to a size that is less than the amount or physical memory.

The tests I have performed did not use this setting, both test VM 2008 and test VM 2016 were configured with Kernel memory dump.

enter image description here

So if I set the pagefile on the G: drive to System managed on test VM 2016, its size will be automatically set by Windows and will not increase when under load. This is the core of the issue as it is a behavior change with Windows Server 2008.


My last test was to configure the pagefile on the G: drive manually to 4096 – 8100 MB and run the tool testlimit64.exe with the -m switch again, and as you can see the pagefile does increase from 4GB to ~8GB

enter image description here
enter image description here


So here is my question: why is Windows Server 2016 not increasing the size of the pagefile when set to system managed? What has changed between Windows Server 2008 and 2016 about this?

Thanks a lot for reading all the way and for your responses.

Best Answer

According to this article, for Server 2016 System Managed pagefiles are sized according to the following:

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.

For Server 2008 it states:

3 × RAM or 4 GB, whichever is larger

So it sounds like the 1/8th rule being enforced on Server 2016 is what you are seeing.

Hope that helps...Cheers

Related Topic