Server 2012 and balanced power plan, part deux – processor queue length

Ok in our last installment on Windows Server 2012 R1 and the balanced power plan, we saw core parking. But was that ‘bad’?

I think so. It depends, naturally, on a variety of factors, but generally speaking in server land, we want stuff done quickly, not don’t slower to save power. Generally.

So here’s what this looks like at high performance plan, running a Monero cryptonote mining program on 4 cores. In the image below you can see we have about 142 hashes / second from 4 cores of work. CPU is at about 62% across all cores, pretty evenly I think.



So great. What happens if we flip this to balanced plan?


We just lost 25% of our cores. 2 parked out of 8. Now, you’ll be quick to note, “hey its teh same CPU util, just busier on 6 cores and idle on 2, so who cares?”

Lets dig a little deeper. Looking at System\Processor Queue Length in perfmon:


Ok so we’re bouncing around. Waiting. We have items waiting on a CPU here some of the time. It’s not a lot. But this is a synthetic setup on a VM on a Dell T5500. Not a production server running, say, a stock exchange. So we have a few threads waiting for a core. So what?

Look what happens if we just pop back over to high.14

As soon as I flip to high performance, queue length goes to 0. Because 2 of our 8 cores aren’t parked. And this is in a VM mind you. So there goes the theory that Virtual Machines don’t need a power plan set because they are virtual (I run into this argument from time to time…)

Next installment, we’ll examine the impact to the network stack.

Build a Perfmon data collector set from a PAL xml template

Howdy, simple walk-through post on how to build a Perfmon data collector set using the excellent templates available from Clint Huffman’s PAL utility.

Step 1: Export the appropriate template from PAL;


One just clicks Threshold File (1), then Export to Perfmon template file (2), and gives it a file name to save as.

Step 2: Open Perfmon. Expand Data Collector Sets, User Defined, right-click, new – Data Collector Set. Give it a friendly name and hit next.

Step 3: click Browse, pick your XML file created in step 1. Click finish.

Step 4: Right click the new data collector set, properties. click on Stop Condition. Make it as so (200 MB limited file creation, restart at limit). Then click OK.


Step 5: right click the PAL_System_Overview under your data collector set, properties, change sample interval to 5 seconds. Click File, set File name format to ddHHmmss and check Prefix file with computer name.


Click OK. right click and start the data collector set. Verify the files are being created in the Perflogs directory.


Server 2012 and balanced power plan

Power is something I’ve written about before. I get it. Really I do. I recycle. I like our planet. I want it to be livable for my grand-kids, etc.

But, when work is going to be done on a computer, why you want it to take 2x as long to do the same work, that will end up burning basically the same amount of energy (just less/minute), plus burning my time sitting around waiting on 145 Windows updates to install for hours… is beyond me.

For some troubleshooting I was doing, I needed to validate some things in Windows Server 2012. So I installed it. It took forever. Even on 8 cores, 8GB of RAM, and backed by a solid state drive. Like, an hour to install. And 2 hours to apply 145 updates from Microsoft and it still wasn’t fully done, just the first pass…

So. This is what my system looked like running Windows Update on a Server 2012 (non-R2) vm:


So, CPU 3 is parked. I don’t care much for core parking. Especially not in older OSes on older hardware. Also see how cores 0/1/2 are busy, really busy, and 3/4/5/6/7 are all parked/quiet? Is that good? Why did I allocate 8 cores to this box? Because I want it to get stuff done faster. Not to save power with core parking.

What’s the big deal, you may ask… Here’s the big deal:

Slow Performance on Windows Server when using the “Balanced” Power Plan

But dude, you’ll say, chill out. No. Here’s why:

Hosts Become Unresponsive with XenServer on Nehalem and Westmere CPUs

I quote:

“In addition to the total system lockups, C-states have been linked to a number of less severe issues, such as erratic network performance, resets on storage adapters, random crashed processes, and the overall system performance.”

BIOS to high perf, power plan to high perf, C-states off.

It occurs to me a WU snap in time of what perf looks like isn’t an empirical test, especially for the incredulous reader. So I’ll show you what I mean with a Monero CPU miner shortly…

Part II

Hyper-V Pro Tip: Don’t cross the streams

update: using a single GPU, same results. It’s not the dual-gpu unsupported problem. Something else is hosing my hyper-v host from the guest install.

The results, well, sucked. Nuked the system totally. So don’t cross the streams!


In my lab I was building an MDT share so I could mass deploy endpoints. I’m a hyper-v guy, and a gamer, and an Ethereum miner, so I have a couple video cards in my rig. Now I know, multiple video cards aren’t supported in Hyper-V RemoteFX. I get it. I don’t know why, sounds like some code laziness going on but whatever. I don’t use RemoteFX acceleration in my guest VMs, so I didn’t think much of it…

Until I stood up a Windows 7 Professional SP1 updated install and injected the Hyper-V additions into it as part of the normal MDT process. 


Apparently the guest driver initialization hosed the host? I didn’t think that was supposed to be possible. I’d file a bug but I’m a pro customer now, not enterprise level, so I can’t.

How to find this? Well, GFL looking in the SYSTEM event log, where crashes are typically recorded. It’s empty.

The esoteric Microsoft-Windows-Hyper-V-VMMS/Admin log though? It was pretty helpful. Just have to think to look down in there…

“The required GPU resources could not be accessed. This server cannot run as a RemoteFX host without a GPU. Verify that the GPU is correctly installed.”


Followed quickly by “The machine contains non-identical GPUs. This is not a supported configuration for RemoteFX.”


So I get it. “You shouldn’t be running in this config”. Fair enough.

Should Hyper-V allow this configurations’ guest to crash the host? Probably not.

Another fun fact. I don’t use the GPUs for the guest anyway…


Tanium is hiring!

Hello friends, countrymen, and esteemed guests!

As you may know, I’m a Technical Account Manager* with Tanium now, having left MSFT a bit ago (again). Well, Tanium is growing in big ways and we’re looking for some talented IT/Security folks, particularly in our Southeast Region, and specifically around Tampa, FL and Memphis, TN. We also are on the lookout for folks in Indianapolis, IN and Atlanta, GA!

If you’d be willing to have a conversation about Tanium and careers and seeing if you’d be a good fit here I’d be happy to make time to talk with you as your schedule allows. It’s becoming more and more difficult to find folks with in-depth skills these days so I’m sort of sending out the clarion call here.

The position is a remote/work from home position and encompasses many facets of technology; architecture, security, troubleshooting, automation, consulting, development, and more. This is definitely a job for those that like to stay busy and be challenged every day.

Tanium is a fast moving organization that challenges all of our employees to be our best for both Tanium and our customers. Our customers include a large portion of the US government, 10 of the top 10 banks, most if not all of the major retailers in the US and more.

So hey, hit me up if you want to chat about this opportunity.

*TAM at Tanium does not mean TAM at Microsoft. It’s sort of a PFE/MCS/TSP role. A floor wax and a dessert topping if you will. It’s fun, fast paced, technical and requires some people skills too.