Development
Now Reading
Detecting unusual CPU load in Powershell
0

Detecting unusual CPU load in Powershell

by Guglielmo MengoraMarch 7, 2018

We recently had a problem on a server since one of its services was randomly experiencing spikes in CPU load that required restarting the service. Such event was happening once in a while and only required a restart. While we were tracking the problem down, we needed a temporary solution that didn’t require us to manually restart the service. Luckily Powershell came to the rescue with a simple script:

$interval = 30 #seconds
$counterSample = Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval $interval
$avgLoad = $counterSample.CounterSamples.CookedValue
Write-Output "Average CPU load : $avgLoad"

The tricky thing is that we didn’t want to measure CPU load as an instant value because such service could need to use all available resources for a short period of time so we couldn’t simply check if CPU was running at 80 or 100%. The script above measures average CPU load within a provided interval that has been set to 30 seconds in the sample.

Then, based on $avgLoad value, you could decide how to behave. In our case, we simply restart the service and notify our administrators. We simply scheduled a script like that to run every 5 minutes.

This sample has been taken from the Internet I don’t get credit for it but I hope it could be useful for someone else.

What's your reaction?
Love It
50%
Interested
50%
Meh...
0%
What?
0%
Hate it
0%
Sad
0%
Laugh
0%
Sleep
0%
Wow !
0%
About The Author
Guglielmo Mengora

Leave a Response