Memory Compression in Server 2016

Discussion in 'Windows Server' started by Micro, May 30, 2017.

  1. Micro

    Micro MDL Junior Member

    Apr 26, 2009
    58
    27
    0
    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?
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  2. Micro

    Micro MDL Junior Member

    Apr 26, 2009
    58
    27
    0
    Seriously?
    Am I the only one that turned it on?
    So I'm guessing no one else is trying/using PageCombining either?
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. pvdven777

    pvdven777 MDL Member

    Jul 4, 2010
    118
    29
    10
    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.
     
  4. LiteOS

    LiteOS MDL Expert

    Mar 7, 2014
    1,551
    662
    60
    Its like new topic i guess it need more research
     
  5. Micro

    Micro MDL Junior Member

    Apr 26, 2009
    58
    27
    0
    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 :confused:.
    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. :D
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  6. pvdven777

    pvdven777 MDL Member

    Jul 4, 2010
    118
    29
    10
    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.
     
  7. Micro

    Micro MDL Junior Member

    Apr 26, 2009
    58
    27
    0
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  8. pvdven777

    pvdven777 MDL Member

    Jul 4, 2010
    118
    29
    10
    #8 pvdven777, Jun 8, 2017
    Last edited: Jun 8, 2017
    Fair enough.
    Wish me luck, I've just enabled PagCombining and MemoryCompression on my server :D

    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.
     
  9. ramg1967

    ramg1967 MDL Member

    Sep 13, 2012
    197
    55
    10
    I am going to enable and check, if there is any improvement. This server is 2016 running sql 2016 on cm 1702.
     
  10. ch100

    ch100 MDL Member

    Sep 11, 2016
    186
    173
    10
    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.
     
  11. Micro

    Micro MDL Junior Member

    Apr 26, 2009
    58
    27
    0
    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. :confused:


    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.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  12. freddie-o

    freddie-o MDL Novice

    Jul 29, 2009
    29
    22
    0
  13. pvdven777

    pvdven777 MDL Member

    Jul 4, 2010
    118
    29
    10
    May be so, can't say I've seen any positive or negative effects. My server is still humming along.
     
  14. hoak

    hoak MDL Novice

    Nov 13, 2009
    41
    13
    0
    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.