5

What's the default memory allocation policy in Windows Server 2012 Terminal Services?

We've got a problem where we have an application that requires a large amount of RAM (100GB approx). The machine has 256GB ram. However, despite the fact that the machine is not under memory pressure, there is apparently free ram, Windows is only giving the process a 50GB working set, causing it to page furiously and hence run really slowly.

So I'm trying to find out information about the default memory allocation policy Windows uses. Note that Windows Server Resource Manager is NOT installed on this machine, but what I don't know is what Windows does in its absence. Is it still doing some kind of "equal per process" or "equal per user" allocation?

Thanks.

5
  • 1
    Sounds like there's something wrong with the system, or the program. How are you measuring that the process is paging furiously?
    – mfinni
    May 22, 2014 at 19:53
  • I used Sys Internals Process Monitor to take a trace of the process and 99% of the time was taken up reading from pagefile.sys May 22, 2014 at 20:37
  • @mfinni What kinds of things could be wrong with the program or the system? May 27, 2014 at 10:46
  • I realize you probably don't have an abundance of spare machines with 256GB of RAM in them to test with... but... any possibility of trying this application on a non Remote Desktop Server? Being able to eliminate RDS as a complication would help. Alternatively, have you ever run this application on any other machine successfully? (Success being the application is given the full 100GB of RAM?)
    – Ryan Ries
    Jul 4, 2014 at 15:45
  • Also, how about using Testlimit and see whether Testlimit is able to allocate a full 100GB or not. download.sysinternals.com/files/TestLimit.zip
    – Ryan Ries
    Jul 4, 2014 at 15:54

1 Answer 1

1

Windows Server Resource Manager is depreciated in Windows Server 2012. Microsoft recommends using Hyper-V to replace its functionality (presumably with things like VM prioritization and host reserve) but this is admittedly a poor replacement. See Windows Server 2012 R2 Windows System Resource Manager Replacement? for details.

As for Window's memory allocation policy you should probably start with Mark Russinovich's series of blog posts Pushing the Limits of Windows: Physical Memory.

I believe there is no way to dedicate a set amount of RAM to a particular process anymore unless the feature is built into the application (e.g., MS SQL, IIS Application Pools).

5
  • So how does MS SQL achieve it? You can do a certain amount with the SetProcessWorkingSetSize call if you have sufficient privileges, or using Address Windowing Extensions (which aren't paged) but perhaps that's a topic for another post on a different site. May 22, 2014 at 20:40
  • @Tom SQL Server has its own mediary OS (SQLOS) that takes care of all of its memory management independent of the OS. It will allocate as much memory as it can and then do everything itself.
    – squillman
    May 22, 2014 at 22:34
  • The Pushing the Limits series doesn't really explain anything about how the allocation works unfortunately. May 23, 2014 at 7:49
  • @TomQuarendon - Hmm. I must be confusing it with another article I read. Either way, I have to agree with mfinni that something is wrong with the system or the application. There's just no real replacement for WSRM so you are going to have to come at this from the other side of the problem.
    – user62491
    May 23, 2014 at 16:11
  • What would be wrong with the application, or indeed the system? I mean the application surely doesn't have control over anything that could affect this could it? It allocates lots of memory, but hopefully there's no law against that. May 27, 2014 at 10:44

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .