Ask Learn
Preview
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Today I saw a question on how find the count of CPUs that a server has, maybe you need this for licensing or maybe just for inventory purposes. I remember looking at this before…
The easiest way I’ve found (unless you know different) was to convert a syntax I used in the old query language to ALA v2.
You may need to add "Processor(*)\% Processor" to your Windows Performance Counter list in [Advanced Settings]
This counter gives you the _Total and info for each CPU. So this line will find all Processor data:
| where ObjectName == "Processor" and CounterName == "% Processor Time"
However to exclude _Total, I added this syntax to ignorethe total info, i.e. !=”_Total” giving me the full line:
| where ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName!="_Total"
This can give you a report like this:
I liked the extra detail of showing the CPUs in a list, for this once again I used makeset and sort to get the data in order (however I need to look at a better method as above 10CPUs the order is wrong). So I ended up with:
// needs perf counter "Processor(*)\% Processor"
Perf
| where TimeGenerated >= ago(1h)
| where ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName!="_Total"
| sort by InstanceName asc nulls first
| summarize makeset(InstanceName), dcount(InstanceName) by Computer
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign in