Basically, I want to track which processes are running and their cpu % throughout the day to pinpoint random freezing and slowness. I would like to go in to a text file and see a log of the previous days processes, or something to that effect.
2 Answers
GUI: Process Monitor can do this.
- Filter on profiling only and make sure it drops filtered events, as else your memory will fill.
- Make sure you configure a backing file as else your memory will fill.
- Try to decrease the profiling interval to spare memory too.
- You will have to save this yourself.
CLI: XPerf from the Windows Performance Toolkit in the Windows SDK can do this too.
- Must be started and stopped through the command line with a wide set of parameters available so you can log whatever you want, this enables you to automate it with a logon and logoff script so you can let it start when you log in and stop when you shut down.
- Make sure you log the CPU activity only, or else your disk will fill.
- Again, try to decrease the profiling interval if possible, or else your disk will fill.
- With XPerfView you can open the trace and you will have a graph which you can analyze in detail.
- This tool is not for the faint-hearted, be sure to search articles and to read documentation.
Starting, stopping (and thus save) and viewing will look like this:
XPerf -on PROFILE -SetProfInt 5000000
XPerf -d C:\Path\To\Save\The\Trace\To.etl
XPerf C:\Path\To\Save\The\Trace\To.etl
The units of SetProfInt are 100 nanosecond time intervals, or a ten-thousandth of a millisecond. The standard will profile the CPU every millisecond and the above example will profile every 500 milliseconds.
You can read the built-in documentation by just typing xperf if you need help about anything really specific, if you want to get a quick view of what XPerf does you can check this video. You might want to skip the part where he is running his application and sending the trace over; the most important parts are those where he is in the console or the viewing application.
Although a bit unrelated, Process Lasso might help you around the slowness...
You can configure it to lower the priority of background processes so that your system stays responsive.

- 18,809
- 57,463
-
"Make sure you configure a backing file as else your memory will fill." By default, Process Monitor will use the pagefile as a backing store. Unless you've disabled it, of course. – Hello71 Aug 10 '10 at 17:50
-
Yes, but the pagefile might not be sufficient to keep all the data in the long end if it has a constant size, the page tables might get too big if you have one with a dynamic size. – Tamara Wijsman Aug 10 '10 at 18:51
It's also possible to log CPU usage using perfmon:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;248345
You will need to identify the processes ahead of time.
- 367