Virtual machine with dynamic memory growth, and IIS application pools behaviour...

Virtual machine with dynamic memory growth, and IIS application pools behaviour...

Hello all, 
I have a question about the platform / environment that I would like someone could be able to enlighten me.
We have a Quality server which is a virtual machine, and had only 8 GB of total fixed memory.
The application Pool of Service Center had 2 GB and the OutSystemsAppplications pool had 4 GB (total of both: 6 GB)
It turns out that now we increased (by necessity) pools sizes as follows:
SC became 4 GB
OutApps became 8 GB
Total: 12 GB
Because of this, we had to ask to the infra-structure team from Customer to increase the machine's memory, because she only had 8 GB total (mentioned above).
It turns out that as a virtual machine, the infra-structure team did not wanted to set right a head the 16 GB we had requested them.
So they did the following: the machine is same with 8 GB, but has a dynamic memory configuration with the possibility of growth up to 16 GB during processing needs.
So, my question now is this:
As the machine is currently with 8 GB, is that IIS smart enough to know that he can use the values ??which are defined in the Pools? (4 and 8 GB)
Or IIS has no way to know that the machine can grow up to 16 GB (and only have visibility of 8), and therefore does not use all memory resources defined in pools?
Any idea?
Thanks in advanced

Gonçalo Barata

Hehe that is a question that the IT team should have been able to answer in order to make the recommendation.

Note: I'm going to try to answer ..but I'm no IT expert, so please someone correct me if I say something wrong.

The way the limits defined in pools work is not really "how much memory can this pool use", it is more in the lines of "how much memory will I allow it to use until I kill it and start a new pool again".

So the IIS doesn't (or needs) to know exactly how much memory the machine has, as long It doesn't get really near the limit. At that point (lets call it Memory Pressure limit) it would start increasing the number garbage collection and removing things from cache.

How the Dynamic Memory (assuming we are talking about Hyper-V here) works is that there is one of the settings called "Memory Buffer", that tells at what percentage the memory needs to be increased.
As long it is correctly configured the memory should be given to the system before any of the processes get near the Memory Pressure limit.

So to sum it up, in my opinion, it is not a bad setting, it is normal to not reserve all the memory on virtual machines. On other virtualization systems this is usually more transparent (the virtual machines are set to the maximum and the rest is taken care at the virtual level), but it's the way the Hyper-V virtualization works.

Also just make sure the virtual memory configured in the machine is set high enough.
The checklist says to use "the value recommended by Windows", but I'm not sure if the recommendation from windows isn't lower than it should be (since it thinks there is less physical memory available at the start).

As a side note:
 I won't question the need to raise the limit on the applications pool. But what is the need to have 4GB on the Service Center pool? Sounds really too much for it.

João Rosado
Hi João,

Thanks a lot for your answer.