I've been managing several Hyper-V virtual servers with different versions of Windows Server and Linux. I've come across some guidelines suggesting that we should allocate virtual memory to be 2x to 3x the amount of RAM allocated, and that we shouldn't use dynamic RAM. However, these recommendations seem outdated, especially considering we're using enterprise SSDs where performance might allow for different approaches. Furthermore, I think dynamic RAM isn't always suitable, as lighter resource servers like domain controllers could use it, but more demanding applications like Exchange and SQL Server really struggle with these dynamic adjustments.
So, is the recommendation still to keep virtual memory at 2x to 3x allocated RAM, or can we adjust this based on our faster storage solutions?
2 Answers
Here’s a breakdown based on some recent recommendations:
- For Domain Controllers: around 1x RAM or less.
- General/File Servers: 1x RAM, SSDs manage well.
- SQL Servers: about 20-25% of RAM for fixed size, let SQL handle the memory.
- Exchange Servers: keep it equal to RAM per Microsoft's guideline.
Dynamic RAM can work for certain roles, but it's usually better to avoid it for SQL Server and Exchange since they can act up with variable memory. Also, using performance counters can help you monitor how your VMs are doing without needing bloated pagefiles.
The best approach is to avoid using dynamic RAM whenever possible. Scale your host hardware so it can handle all workloads without needing dynamic adjustments. It's a bit of an art and requires auditing your VMs to see which ones truly need certain amounts of RAM; for example, SQL servers often demand a lot but can be tricky to manage if allowed dynamic RAM. Remember that RAM is quite affordable these days!
Thanks for the guidance! This makes a lot of sense.