Here’s a quick tidbit for any and all Windows jockeys out there. Need to figure out what is chewing up all of your system resources? Need to do it quickly and easily? Have no fear, Laz and the PowerShell are here. Some of you may know this already, so let those who don’t have some air!
OK, bring up the PowerShell (*note, this is different from the DOS “like” Command Prompt and can usually be installed through Windows Update). Once the PowerShell is open, you can use the ‘ps’ command to get a list of the currently running pr0cesses, but believe you me there are a lot of them and they scroll by all unformatted and hard to read and stuff. All in all you get a bunch of info that is hard to understand!
“So, what are we doing here?” you ask. Well, this is where just like with the ‘ps’ command (and the PowerShell in and of itself too), Windows takes some inspiration from UNIX and not only adds some nifty commands to help wrangle all that information that goes scrolling by, but also the idea of “piping” commands or a more simpler analogy, a way to link commands together. Making them talk to each other, work together and share information like never before. You pipe commands together with the ‘|’ character, and it allows you to run a command and take that output and send it to the next command. You will see this in the final command we will use, take a look:
ps | sort -desc cpu | select -f 20 | ft -a;
So, let’s take a look at what this command or set of commands really, does. First off the ps command gets the current list of processes running on the machine along with certain information about each and every one of them like the ‘Process ID’, the ‘ProcessName’ and the amount of ‘CPU’ time it’s using to name just a few. We then take all of that ‘ps’ data and “pipe” or feed it into the ‘sort’ command, telling sort to … well, sort that information by the ‘CPU’ column in “Descending” order. We then take all that sorted data and use the ‘select’ command to only grab or select the top ’20’ items in the list. Last but not least, we use the ‘ft’ command to “format” the list that we have now, which has been cut down to just the top 20 processes sorted by how much of your CPU they are using starting with the most at the top of the list and then listing the top 20 going down from there.
Ultimately, you run this command just like you see it above and you will get a list of the top processes that looks like this:
PS C:\temp> ps | sort -desc cpu | select -f 20 | ft -a;
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
197 14 6700 11456 92 1,008.66 2744 AODAssist
422 15 6272 11572 53 886.27 1112 svchost
2398 1032 115224 10804 420 863.37 2020 AvastSvc
827 48 253744 247248 371 641.55 1388 svchost
1132 106 86252 118472 421 575.07 3596 explorer
140 69 45028 49456 173 572.51 5012 Everything
485 47 46612 69228 284 565.83 9608 explorer
1535 90 33912 49260 433 453.93 1460 svchost
717 52 29416 27460 124 451.45 1352 svchost
363 43 41048 11472 176 370.32 4436 svchost
909 63 94836 129776 726 366.38 6388 dopus
596 54 24476 26196 248 364.06 5136 avastui
684 44 22172 23564 241 352.66 1048 svchost
140 13 119472 113980 183 328.48 6972 vmware-usbarbitrator64
300 13 9940 14796 64 306.90 6516 WmiPrvSE
346 31 35176 29280 203 302.42 4688 tlbHost
225 24 1431016 1339160 1460 263.47 1500 stacsv64
865 81 27488 36708 149 216.86 1420 svchost
202 16 7300 15020 96 215.45 1744 WHSTrayApp
110 10 7144 10368 58 200.74 3252 BitMeterCaptureService
There you go, a nice handy little list of your top offenders! If you keep a PowerShell handy, it can be a very fast way to take a quick look at what’s going on under the hood of your PC. Enjoy!