What does the new Microsoft Ultimate Power Plan do? (not much)

There has been some excitement in the announcement of Microsoft’s new Ultimate Power Plan. This power plan, for those who haven’t heard about it, is destined for Windows 10 Professional for Workstations. The setting also is present in Windows 10 Professional and Enterprise build 1803, but you have to add it in an administrative cmdline.

powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61


After doing this, it appears in your Power Options:

Ultimate Power is ready!

So, what does it do exactly?

Well, right now, I don’t think it does anything High Performance doesn’t do.

What what?!

Yeah, so here I am running minerd, a CPU hashing program. It’s parked on 4 cores of my AMD Ryzen 2700x.

Now what is the hash rate for each. The same.

hash rates on each plan

So, what gives?

Do a dump of High Performance, and Ultimate. It’s not hard.


set power plan to high performance
powercfg -query > C:\temp\high.txt
change to your power plan to ultimate
powercfg -query > C:\temp\ultimate.txt


So what’s next?

Uh, nothing? I’m personally staying on Ryzen because it works a ton better than Balanced and saves a smidge of power. For an Intel in a production environment? High. What about Ultimate? Meh for now. Sorry Microsoft.

Other power articles:


Server 2012 and balanced power plan

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




Performance Series Part 2 – How to import an xml file into Perfmon on Windows.

Applies to: Windows 7+, Windows Server 2008 R2+
Target audience: People I support primarily. Anyone who wants to perf like a pro?


There may come a time where you need to import an xml file given to you by a support person into Perfmon. This is so precise, targeted data captures can be made of the impacted system, or sometimes to baseline a system to know what good looks like.


The xml file is a template that defines the performance metrics to capture and also sometimes time intervals, file format for the results file, etc.


Step 1: Open Perfmon (start/perfmon or computer management/performance)

Step 2: Expand Performance and go to Data Collector Sets then User Defined.

Step 3:  Right Click the User Defined folder then select New > Data Collector Set.

Step 4: Give it a name and leave the “Create from a template” selected. Click Next.

Step 5: Click Browse and then select this file.

Step 6: Click through the wizard (next/next) and then select the top radio button “Open properties for this data collector set“.

Step 7: If you want to tweak anything about this collection, now is the time to do it. Most of the configuration has been done for you though. 200 MB rolling logs created in sequence with host name in the file name. This collects at a 1 second interval, to preserve space you can adjust to 5 or 10 seconds if you like. You do this by right clicking “Pal System Overview” under your data collector.






And then modifying the field you want to modify (in this example, Seconds)










Step 7: Once you are happy with the configuration, right click your data collector set and select Start.


Note this does not sustain through a restart/crash of Windows. To do that you need to follow this article: https://blogs.technet.microsoft.com/jeff_stokes/2011/11/16/how-to-sustain-your-data-collector-set-through-a-reboot/

Performance Series Part 1 – How to collect an ETW/Xperf trace to capture general performance issues

Applies to: Windows 7+, Windows Server 2008 R2+
Target audience: People I support primarily. Anyone who wants to perf like a pro?

Step 1: Get the Windows Performance Toolkit, by way of the Windows Assessment and Deployment Kit. Since every iteration of the WPT happens to be distributed slightly differently than the previous version, I’ve included the MSFT guide on getting the most recent as a link. As it stands now, run through the web installer and uncheck everything but “Windows Performance Toolkit”.

It is worth noting that the resulting Windows Kits folder with the WPT in it is typically portable. Meaning once you install, you can usually copy/paste the folder to another host without going through the web installer again. There are also redist executables to install just the WPT for ‘next time/next system’ as well.

Step 2: Open WPRui (Start/WPRUI/enter)

Step 3: Expand the “More Options” caret.

  • Expand Resource Analysis.
    • Select “CPU Usage”,
    • Select “Disk I/O Activity”,
    • Select “File I/O Activity”
  • Expand Scenario Analysis.
    • Select “Minifilter I/O activity”

Step 3a: Optionally I may have you skip this and click “Add Profiles…” and add a custom XML instead of check individual boxes.

Step 4: Validate the Performance Scenario is “General”, Detail Level is “Verbose” and Logging mode is “Memory”.

Step 5: Click “Start” and then reproduce the ‘bad behavior’.

Step 6:  Let the collection run for the amount of time I gave you (or a couple minutes) and then click stop.

Step 7:  Wait.

Zip and upload the resulting ETL file and the same-named NGEN.PDB folder (if present) to me.

Activate dual displays in Nvidia control panel SLI area doesn’t seem to use both GPUs as advertised.

So I was playing a video game on one monitor while watching a video on the other.

And I noted that the video was stuttering in spots. And generally when the screen action got busy in the game. I have 2 1070ti GPUs in my system, this shouldn’t really be happening…

Complete stats of the system are on pcpartpicker.

Anyway, the setting I have in Nvidia doesn’t seem to be working as advertised. Take a look:

So note at the bottom the text “Your GPUs will drive all connected displays while optimizing rendering performance whenever possible using SLI or multi-GPU rendering.”

Awesome, sign me up….why does it say SLI disabled then?

I thought I should dig in more so I enabled the GPU activity icon in my notification area in Windows 10.

When I click on it though, no matter which app is on which monitor, the GPU activity reports no activity on one GPU…

But yeah check this out, the 2nd tab;

So why is everything on one GPU?!

Task Manager seems to back this up, the consumed video ram is 200MB on the one with no apps running, and 2GB with the one that has all the apps.

The only time I see activity on the 2nd GPU is when I take a screenshot with Snagit (presumably because Snagit is capturing what is displayed on the GPU itself? dunno).

So is this enough proof/diagnostic info/screenscraps and graphs to analyze? Not really;

I fire up WPRui from the Windows Performance Toolkit;

Note I have selected in this options area;

  • 1st level triage
  • CPU
  • Disk I/O activity
  • Video glitches
  • HTML Responsive analysis

(HTML because my movie is playing off a plex.tv host on my LAN)

And I hit start, run a game intro, watch some Rodney Dangerfield for a minute or three, and then stop the trace.

Interestingly, when I try to open the WPA tool and read the trace, it hangs…

Warning: EventSink {13399e05-4afd-48fd-ba25-6b673a7a2b92} signaled an Invalid Event:
Event#: 25707928 (T#0:#25707928)
TimeStamp: 120768768, Process: 2916, Thread: 20636, Cpu: 4
ClassicEventGuid: {01853a65-418f-4f36-aefc-dc0f1d2fd235}
ClassicEventDescriptor: 0x0c 0x00 0x0002
MofLength: 112
InitializeSession: OnEnd: Finished pass 1
InitializeSession: OnBegin: Starting pass 2


This is on insider preview Win10 pro, slow ring, and the preview ADK as well… more to come.

Edited Why I shouldn’t write while dealing with a fever… under discussion.

So I am mining some coinage in the Cryptocurrency world. Mainly because the miners make GREAT performance testing resources. Nothing like maxing out CPU or GPU or both whenever you need it (and making a little speculative coin on the side).

But, Windows the mining program was doing me wrong. By default, the thread scheduler thing sets a new process to use ALL cores available and apparently go in sequence. This is ‘ok’ but I find I get MUCH better results when I don’t let the thread scheduler miner handle my CPU-based miner threads.

Case in point:

miner going slow

Note CPU #6. Why is it 70,000 hashes/second faster than it’s peers? Because it’s the only miner thread that doesn’t have it’s partner CPU also running at 100%.

Let’s look at this in Task Manager, this is what it looks like:

task manager core count.png

So see the pairings? CPU 0/1, CPU 2/3, CPU 4/5, CPU 6/idle.

That’s why CPU 6 can run faster. It’s hyper-threaded pair isn’t mussing it up. Plus it perhaps has better caching since it isn’t using pipeline cache for another busy thread (conjecture).

Anyway, changing this is trivial. I found my miner in task manager and right clicked it and selected Processor affinity.

proc affinity

See how it’s spread out on all CPUs? Yeah we’re going to fix that.

better proc affinity.png

Now I’m using every odd CPU, and every even CPU is not used by my miner process. Fair enough. I am only allocating 7 miner threads by the way, so we’re giving the miner an extra thread. Who cares. It might not use it. Don’t care.

Hit ok and see the results:


See, CPU 0, 2, 4, 6 are falling. The odds are all increasing.

The results? Pretty damn good. I went from 990 kH/s on 7 mining threads to 1746 kH/s.

I’ll take it.faster.png

All this because Windows thread scheduling leaves something to be desired…since like, a while ago. But that’s another story…

Carl schooled me.

Outlook.com BETA kicks tail!


Dude here. I give credit where credit is due. Today I was offered a preview/beta version of Outlook.com to use. And. It’s awesome.

Frankly, I was migrating off Outlook.com’s property due to bloat. My Google Chrome browser would be over a GB just for the worker of Outlook.com given enough time. 1GB of RAM used for a web-based email client. Gmail is the same basically, so not a bash on MSFT. The one reason that really got me was Outlook.com took so long to receive mails sent to me. Some extra filtering to keep me safe maybe. Dunno.

ANYWAY, check this out.

Fresh browser, old version of Outlook.com:



New version:


I’m keeping an eye on it. Will report after a day of use. But HOLY MOLY it’s faster, sleeker, and uses less resources. Good job Microsoft.

Today’s (Cloud) Tip…Performance Guidance for SQL Server in Windows Azure Virtual Machines

Post courtesy of Evan Basalik

One of the most resource intensive applications you can run on Windows is SQL Server. To some extent, this is demonstrated by the vast amounts of performance guidance and troubleshooting documents that exist all over the web. When running SQL Server in an Azure Virtual Machine (i.e., IaaS), there is one additional article you want to be sure to read. It was written and edited by a virtual who’s who of Windows performance, Azure performance and SQL Server performance. Even if you aren’t running SQL Server, but want to understand best how to build high performance Azure IaaS applications, this article has a wealth of knowledge.

Performance Guidance for SQL Server in Windows Azure Virtual Machines.

Authors: Silvano Coriani, Jasraj Dange, Ewan Fairweather, Xin Jin, Alexei Khalyako, Sanjay Mishra, Selcin Turkarslan

Technical Reviewers: Mark Russinovich, Brad Calder, Andrew Edwards, Suraj Puri, Flavio Muratore, Hanuma Kodavalla, Madhan Arumugam Ramakrishnan, Naveen Prakash, Robert Dorr, Roger Doherty, Steve Howard, Yorihito Tada, Kun Cheng, Chris Clayton, Igor Pagliai, Shep Sheppard, Tim Wieman, Greg Low, Juergen Thomas, Guy Bowerman, Evgeny Krivosheev

Editor: Beth Inghram

Summary: Developers and IT professionals should be fully knowledgeable about how to optimize the performance of SQL Server workloads running in Windows Azure Infrastructure Services and in more traditional on-premises environments. This technical article discusses the key factors to consider when evaluating performance and planning a migration to SQL Server in Windows Azure Virtual Machines. It also provides certain best practices and techniques for performance tuning and troubleshooting when using SQL Server in Windows Azure Infrastructure Services.

Xperf for the layman, performance analysis unchained, Windows Assessment Toolkit revealed.

If you have been following along in performance land the last year or three, you’d hear about xperf and the WPT (Windows Performance Toolkit).  Mayhap you’ve had some time to practice and you know what you are doing.  Cool.  This tool might still interest you.

If you, on the other hand, haven’t heard of these, or haven’t had the time to spend to get good at them, then this tool will definitely interest you.

It is the Windows Assessment Toolkit.  Unlike the Windows Assessment Server, which I’ll speak to later, Windows Assessment Toolkit it a stand alone, infrastructure-less toolkit designed to help layman and skilled professional alike with client performance analysis. 

This is an option for both Windows 7 and Windows 8 by the way.

So without further ado, lets get rolling…

Step 1 – Get the tool

Go here and run the web installer for the ADK.  Cycle through the installer until you get to the checkbox list of tools and pick 2 as seen below:



Let it install.

Step 2 – Use the tool (data collection and review)

Launch the Windows Assessment Console for the Toolkit like so:


So here we have the Console Launching…and then, the console:





So, browser running slow can’t figure out why?  Want to see how long the battery will really last?  Does it take forever to startup and you want to know why?  Just some of the test cases at your finger tips.  Note all these in the default pane run only on Windows 8 or Windows RT.  But when you select “Run Individual Assessments”:


A fair amount of them can be run on Windows 7 as well as 8.  So if you don’t want to stand up the infrastructure of a Windows Assessment Server, use this to vet out the performance of hardware, your build, third party filter drivers like AV, DLP, NAC, etc.

The key to this UI though is to click “Configure” down at the bottom next to the Run button, because that’s what you can use to determine which of these ad-hoc test cases can be run against Windows 7 as well.


Note this test case can run on Windows 7.  If you wanted to make a test case to give to someone or to place on another machine, just click “Package…”


And then you can run it on a machine without having to install any console.

So click Run to do a test case.



And then it dumps you into a report view when it is complete.  All the items are clickable, and can take you into the ETW trace files if need be.  For example:


See below, we’re selected on one of the found issues and on the right hand pane we get an explanation of what the problem and recommendation are to remediate, along with a link to TechNet on what the ‘deal’ is.


Take the time to use this in your environment on workstations….why you are going to ask?  What does it get me?


Well, the driver certification and verification jobs will identify problem drivers in your build that could cause BSODs or other problems…

The File Handling test case will give you a crystal clear idea of DLP or AV’s ‘cost’ to performance in terms of file io.

Boot up is a general holistic view of the boot up process and the impact of everything on it.

Internet Explorer browsing experience is a collection of pages the job will hit locally for graphics rendering.  It’s pretty slick.  Run it and see.  How good is your GPU and GPU driver at hardware rendering?  Find out.

Check this out, see how it works, and it’ll even point you to issues in the ETW files and you can use this as a jump start to real ETW trace analysis on your own.

Hope you liked this post!

The Dude…

Download this KB now!

And test it first please.

An enterprise hotfix rollup is available for Windows 7 SP1 and Windows Server 2008 R2 SP1


This is a collection of the various updates we kept (we being PFEs who do WDRAP in particular) and Yong Rhee published for us, like http://blogs.technet.com/b/yongrhee/archive/2012/02/19/list-of-performance-hotfixes-post-sp1-for-windows-7-sp1.aspx.

This is now a Rollup for Enterprises.  It is not in Windows Update, but is in the Catalog here:


Most customers should see a minute or more reduced from boot, and a more peppy system, as a result.

This was a great collaborative effort amongst CTS, WINSE, PFE and MCS.  A huge thanks to everyone involved.

Jeff Stokes

“The Dude”