The CPU scheduler and VDI

Something for those of you considering VDI to chew on. First start off with a good read about the vSphere CPU scheduler and what you’ll learn is that CPU scheduling on a hypervisor is all about proportional share, not priority as is the case in unix/linux/windows. Quoting here from the whitepaper “when making scheduling decisions, the ratio of the consumed CPU resources to the entitlement is used as the priority of the world“. Basically, all shares equally distributed, the more compute resources a world consumes the more likely another world will preempt it.

So in a VDI world where there is a high ratio of vCPU’s to physical cores the hypervisor does a very good job of fairly distributing compute resources to requesting worlds. What the hypervisor is blind to is the type of workload that is being done and since compute resources are typically oversubscribed, latency sensitive workloads which require also tend to use more CPU than others…things like video and audio, rich multimedia applications tend to struggle as physical cores become oversubscribed. Take a reference made by Andre Leibovici in this article

“A 1vCPU desktop can deliver 720p@25fps without any hardware acceleration. In this scenario it is recommended a maximum of 2 desktops per core for concurrent playbacks at 720p@25fps. Most VDI deployments don’t cater for this kind playback conditions, but if this is the case of your deployment you should follow these guidelines to ensure the best user experience.”

This isn’t a dig against VMware View, Citrix XenDesktop or VDI…this is just the reality of the world of compute oversubscription. I’m not implying we shouldn’t oversubscribe CPU’s either, I doubt all of your employees are watching 720p video all day long. I do however think it is important to understand how and why these things happen. I think some people have an unrealistic view of the expected performance of 100 VM’s on a 12-16 core server.  I’d also contend that the days of a 1 vCPU desktop VM are drawing to a close. Application developers have been told for years now to multithread their apps to harness more of the power of the AMD and Intel cpu’s.

I’ll leave you with this if it helps drive home the point I’m making as it relates to compute oversubscription..

Traditional PC/laptop

Microsoft Remote Desktop Services/TS/XenApp



3 thoughts on “The CPU scheduler and VDI

  1. Lol, I agree, too much is expected these days. But on the other hand, if I look at the CPU usage while browsing and replying this post, reading some tweets and copy a film to a external HDD which I’m going to watch in a minute gives a total CPU usage of 2% average. So it all comes down to which workload you’re expecting AND I must say, CPU comes with more and more cores which are also faster and faster…
    Now I’m going to watch this film… not in my session, but on a media-player :-)… Keeping valuable CPU cycles for my colleagues. Hehe.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s