Has anyone seen any real-world (not theoretical) gains by using memory compression in Server 2016? Or does this only show gains with large amounts of users and apps running?
Seriously? Am I the only one that turned it on? So I'm guessing no one else is trying/using PageCombining either?
Possibly ! I know I didn't and I haven't a clue what you are talking about. Didn't stuff like memory compression die out in the win3.11~win95 era ? I'm working on moving a crashed win2012R2 raid over to a Server 2016 at the moment and I still got some experimentation time available with the server if you wish to elaborate.
I'm definitely not much of an educator , but I (guess falsely) assumed people using Server 2016 were aware or looked into what were "relatively new" features first, when moving to it to see what the improvements were over prior versions and tune it for best performance for their usage. But then again there is nothing "new" about either of these, I guess most users were just not aware they existed . That must mean they have been working well. Memory Compression was originally called Ram Compression in early Windows 10 versions and earlier OSs. It has been in use as part of the OS since Win8 and Server 2012. It has always been turned "on" by default in Win10 and turned "off" by default in Server 2016. Page Combining was originally known as Memory Combining and has also been around since Win8 and Server2012. Again it was turned "on" by default in the consumer OS and "off" by default in the server OS and still is as of Win10 and Server 2016. As I understand it, the names were changed/fine tuned (Ram Compression->Memory Compression and Memory Combining->Page Combining) to reduce confusion of which did what. All can be controlled/interfaced through PS and the Memory Management Agent Module. When the "newer" memory management was introduced in Win8 and Server2008, these and other benefits have been steadily evolving and improving. As for what each exactly does and how, it's probably best if you "search" each one @ technet.microsoft.com as there is much to read and understand.
Thanks for pointing me in the right direction. After reading up a bit it seems that where all those years back this type of solution didn't really result in any real world benefits it is now suggested that by the sheer increase in processing power it can actually yield some performance gains. However I'm still not totally convinced when I see numbers like '20Mb' gains in free memory. Although I do believe that small bits help the amounts of memory that people have in their computers these days is a magnitude more than the gains some people are talking about on the web. Probably I shall give it a try to get a feel for it myself. I would assume that potential stability and reliability issues are keeping Microsoft from enabling this technology by default any time soon in the server (enterprise) environment.
Fair enough. Wish me luck, I've just enabled PagCombining and MemoryCompression on my server For those who wish to follow. In Powershell (admin rights) use the commands : Enable-MMAgent -PageCombining Enable-MMAgent -MemoryCompression You can check the status using the command : Get-MMAgent And you can see the memory compression at work via task manager>performance>memory by hovering over the memory composition graph.
I am going to enable and check, if there is any improvement. This server is 2016 running sql 2016 on cm 1702.
It is all related to Superfetch Get-MMAgent with Superfetch service running on Windows 10 ApplicationLaunchPrefetching : True ApplicationPreLaunch : True MaxOperationAPIFiles : 256 MemoryCompression : True OperationAPI : True PageCombining : True PSComputerName : Get-MMAgent with Superfetch service stopped on Windows 10 ApplicationLaunchPrefetching : False ApplicationPreLaunch : False MaxOperationAPIFiles : 256 MemoryCompression : False OperationAPI : False PageCombining : False PSComputerName : It is all in real time, stopping/starting Superfetch shows the results above immediately.
Yes, I thought I made it clear that all those were turned on by default in Win 10 (as is SuperFetch), and since we are talking about Server 2016, I'm not sure of the point you are trying to make. Server 2016 does not have any of those processes turned on by default, nor is SuperFetch, but activating any of those processes automatically activates SuperFetch also (as a delayed autostart service), as it is required for those processes. But once any of those processes is activated, deactivating them does not change the activation status of SuperFetch in either Server 2016 or Win10, that must be done manually. Superfetch shows up as the "Sysmain" service (sysmain.exe). You can change the "MaxOperationAPIFiles" by the following command from an Administrator level Powershell - "reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Prefetcher" /v MaxPrefetchFiles /t REG_DWORD /d 8192 /f" In the above example "8192" is the maximum number of files the prefetcher will open at any given time and as always, multiples of 8 work best.
Whether memory compression helps, hurts performance, or does nothing is going to depend on the kind of workload you're running, how much RAM you have, how much processor power and storage i/o throughput.