It's no secret that I do a fair number of presentations. It's also no secret that I am a big SharePoint user. (In case you missed it the Pope is Catholic too!) With SharePoint 2010 being 64 bit only I really had two choices – Hyper-V or VMWare workstation. Since I have been an avid user of VMWare for a while that's not a problem – until you consider that I'll be presenting at some Microsoft run conferences and that I've got a few projects with the product team. So I had to get Hyper-V working.
In my case that meant taking my LenovoT61p and installing Windows Server 2008 R2 on it. That process went fine, right up to the point where I enabled Hyper-V. This turned my system into what I like to refer to as a flying brick. Hyper-V disables certain things like suspend and hibernate on machines that have the role enabled. What's worse – much worse – is that there's a design flaw (you might say the virtualization team and I disagree on this particular issue) where if your driver allocates memory with write combining it has to flush the translation lookaside buffer on the processor. In practical terms, this surfaces as an issue with high performance video cards (or high performance video drivers) in machines running Hyper-V. The result is substantially reduced performance. The Microsoft recommendation? Run with the out of the box VGA drivers. (See for yourself.) Where's my problem?
Well, the fact that I do presentations means that I sort of need to be able to control what video I send to the external monitor port – which the out of the box drivers don't support. The driver that NVidia had used the write combining flag (as they should have). When I contacted the virtualization product team at Microsoft the recommendation eventually became… use two machines -- one machine that you use to drive the monitor which does a remote desktop connection into your other machine. It's that advice that drove me to purchasing my Lenovo X200 Tablet (which I still love).
Of course, I wasn't satisfied. The more I dug into the problem the more stonewalls I got. I was once told to buy new hardware – of course, the hardware wasn't actually available yet. So I decided to reach out and see if I could find someone at NVidia to help. If they could allow me to turn off the write combining when they allocated a page of memory, I could eliminate the performance problem. (I have to say again, they're doing the right thing, it's Hyper-V that has the problem.) So I fired up linked in and realized that I had two different second order connections to NVidia. I sent emails to both of the folks I knew who reportedly had connections to NVidia. Both of those connections ended up making it to NVidia. I won't bore you with the details and the people but I will say that ultimately NVidia made a fix to their driver for Hyper-V.
I can't explain what it means to me to hear that a company like NVidia would go out of their way to help their customers – even when the problem they're solving isn't really one that they created. I had made a decision (because of some seriously negative interactions with ATI years ago) that I'd be buying all NVidia graphics cards. It's not often that I get proof that the decisions I make are the right ones – but this definitely falls in this category.
I still use more VMWare Workstation than I use Hyper-V. However, at least I don't feel like stabbing a fork in my eye when I'm running Hyper-V on my laptop anymore.