Information and announcements from Program Managers, Product Managers, Developers and Testers in the Microsoft Virtualization team.
With Windows Server 2008 R2 SP1 Hyper-V and Microsoft Hyper-V Server 2008 R2 SP1, we focused Hyper-V development on enhancing Virtual Desktop Infrastructure (VDI) scenarios, which resulted in the introduction of Dynamic Memory and RemoteFX. In addition, we increased the maximum number of running virtual processors (VP) per logical processor (LP) from 8:1 to 12:1 when running Windows 7 as the guest operating system for VDI deployments. In making this change and discussing the VP:LP ratio with you, I’ve noticed that there’s some confusion as to what this metric really means and how it compares to other virtualization vendors. Let’s discuss.
I’ve noticed differences in how Microsoft--versus other virtualization vendors--expresses the maximum number of virtual processors that can run on a physical processor. It seems we’ve inadvertently created some confusion as to the maximum number of supported virtual processors on a server running Hyper-V. Here’s the crux of the problem:
· Other virtualization vendors provide a maximum for virtual processors per core.
· Microsoft provides a maximum for virtual processors per logical processor, where a logical processor equals a core, or thread.
What ends up happening is that customers ask about the ratios and here’s what happens:
1. Vendor A responds 16:1 (with the qualifier that your mileage will vary…).
2. Microsoft responds 12:1 for Win7 for VDI and 8:1 for Non-VDI and all other guest OSs.
The issue is we’re comparing apples and oranges. When we talk about physical processors, that includes symmetric multi-threading where there are two threads (i.e., logical processors) per core. Remember, Microsoft provides a maximum of virtual processors per logical processor where a logical processor equals a core or thread. To do apples-to-apples comparison, when you ask about the maximum virtual processors per core for Hyper-V, the answer really is:
· Up to 24:1 for Win 7 for VDI and 16:1 for non-VDI (all other guest operating systems)
…and up to a maximum of 384 running virtual machines and/or 512 virtual processors per server (whichever comes first). To make things easy to understand, I’ve provided the formulas and tables below.
Window 7 as Guest OS for VDI
In the case of a VDI scenario with Windows 7 as the guest with a 12:1 (VP:LP) ratio, here’s the formula and the table:
(Number of processors) * (Number of cores) * (Number of threads per core) * 12
Table 1 Virtual Processor to Logical Processor Ratio & Totals (12:1 VP:LP ratio for Windows 7 guests)
Cores per processor
Threads per core
Max Virtual Processors Supported
1Remember that Hyper-V R2 supports up to a maximum of up to 512 virtual processors per server so while the math exceeds 512, they hit the maximum of 512 running virtual processors per server.
All Other Guest OSs
For all other guest operating systems, the maximum supported ratio is 8:1. Here’s the formula and table.
(Number of processors) * (Number of cores) * (Number of threads per core) * 8
Table 2: Virtual Processor to Logical Processor Ratio & Totals (8:1 VP:LP ratio)
You can see that even with an 8:1 VP to LP ratio (or 16:1 VP: Core, if you prefer), Hyper-V supports very dense VM configurations. Even on a server with two physical processors, Hyper-V supports a staggering number of virtual machines (up to 256). The limiting factor won’t be Hyper-V. It will be how much memory you’ve populated the server with and how well the storage subsystem performs.
Q: You state that a logical processor can be a core or a thread? How can it be both?
A: A logical processor can be a core or thread depending on the physical processor.
· If a core provides a single thread (a 1:1 relationship), then a logical processor = core.
· If a core provides two threads per core (a 2:1 relationship), then each thread is a logical processor.
Q: This whole topic is very confusing. Why does Microsoft provide a ratio of virtual processors to logical processors? Why doesn’t Microsoft just provide a ratio of virtual processors to cores? Wouldn’t that be simpler?
A: While Microsoft could use a ratio of virtual processors per core, Microsoft uses the ratio of virtual processors to logical processors because it is more precise and more accurate. Using a ratio of virtual processors per core ignores whether the underlying physical processor is single threaded or multi-threaded. The end result is that capacity planning can be off by a factor of two. We choose to provide the most precise information so you can effectively plan Hyper-V deployments with confidence.
Q: Where are the Hyper-V maximums publicly documented?
A: The Hyper-V maximums are documented on TechNet http://technet.microsoft.com/en-us/library/ee405267%28WS.10%29.aspx. TechNet is the best place to start for Microsoft technical documentation.
Q: Why do these ratios exist? Why is there a ratio at all?
A: The Hyper-V maximums are provided to give you clear guidance as to what has been tested at scale and under load by the Hyper-V team. This allows you to effectively plan Hyper-V deployments with confidence.
Q: Do these ratios apply to other virtualization platforms?
A: Microsoft does not test any virtualization platforms except its own.
Q: Why is Windows 7 supported with a ratio of 12:1 VP:LP ratio while other operating systems are supported at a ratio of 8:1?
A: Windows 7 is supported with a 12:1 VP: LP ratio because the Hyper-V team specifically tested this configuration under load for VDI deployments based on customer input. Customers told us that increasing the VP:LP ratio was important for Windows 7 VDI scenarios to help improve density and drive down the cost per virtual machine. For other operating systems, which are overwhelmingly used for server consolidation scenarios, the feedback was that the current ratio was more than sufficient.
Q: Is the 12:1 VP:LP ratio a hard block? What happens if I attempt to start a 13th virtual machine? Will it be blocked?
A: The VP:LP ratio is a supportability metric and not a technical block. There’s no hard block. If you attempt to start more than 12 virtual machines and resources are available, Hyper-V will start them. However, this hasn’t been thoroughly tested and isn’t supported. If you call for support, expect the support team to ask you to reduce the running number of virtual machines to meet the supportability statement.
Q: Do these ratios affect licensing in any way?
A: No. Microsoft doesn’t license any products per core or charge higher premiums for processors with more cores. One of the great benefits of virtualization is being able to maximize your hardware investments. We don’t believe you should be penalized with a Core Tax. That’s about as puerile as charging you for the amount of memory you allocate to a virtual machine.
We have been told that in Windows 2008 R2 for server workloads Hyperthreading does not count, and it is 1 core = 1 logical = 8 virtual.
Could you clarify whether it is only with Windows 2008 R2 SP1 as Hyper-V host that 1 Hyperthread = 1 Logical Processor = 8 virtual ones, or is this also with Windows 2008 and Windows 2008 R2 as hosts?
2 * 6 * 2 * 8 equals 192, not 144 in table 2 row 3, doesn't it ?
Wow, if my 2003 servers can only use 2 virtual processors (threads) when running under Hyper-V, I am better off leaving them on my old physical boxes with real physical processors. While it is nice that MS can provide the density that they are providing, if you want any kind of basic performance then you have to stick with a physical machine. One physical core will not replace a decent 3 year old server.
In real life I saw some people change number of CPU Processors per VM to be more than 4 (which is the maximum limitation) and no impact on Hyper-V performance, is this somthing that Microsoft can support?
After lots of digging around, i found that that common wisdom is not to account "threading" when sizing and planning the servers. If If you have 2 CPU - Hex Core Machine - You have 12 cores. And if you keep vCPU to Core Ratio as 8:1 then 96 vCPUs on that server. Most said, leave the threading on but don't account it in sizing,
Also, if you can throw some light on how to arrive at these ratio "8:1". Many say it's a guess, many consrvative say go with 1:1 ratio. Some say choose something in between. What were the workload during testing, were they underutilized physical servers which when virtualized needed 1/8th of the CPU time then what they were given as physical servers?