I'm troubleshooting occasional CPU spikes on a Windows server and want a tool that can trigger when CPU usage crosses a threshold, record useful telemetry, and identify which process caused the spike. I'm looking for something relatively simple and lightweight. Performance Monitor, Resource Monitor, and Event Viewer are available, but manually searching through them feels too shallow or time-consuming. A free Microsoft tool would be ideal, though I'm open to paid software that could be deployed across multiple systems. What tools or configurations have worked well for this?
4 Answers
Zabbix is a good free option for server-wide monitoring, alerting, and historical timelines, but it’s a larger deployment and has a real learning curve. It can tell you that the server had a CPU spike, but identifying the exact process will generally require Windows performance counters or another process-level collection method. If you need something focused on this one investigation, Performance Monitor is probably simpler.
For a more immediate trigger, ProcDump can monitor a particular process and write a dump when it exceeds a CPU threshold for a specified period. For example, a threshold around 85% sustained for five seconds can capture the moment the process becomes problematic. It’s lightweight and Microsoft-owned, although it works best when you already have a likely suspect rather than when you need to discover any process on the server.
Performance Monitor can handle this without installing anything. Create a Data Collector Set with processor and process-level CPU counters, configure an alert around 85% or whatever threshold makes sense, and let it run in the background. Include Process% Processor Time in the logged counters so the process consuming CPU is captured when you review the event. It takes a little setup, but it’s free, built into Windows, and worked well for identifying problem processes in virtual desktop environments.
Before spending too much time on monitoring software, check whether the server is physical or virtual and look at power-management settings. On some physical systems, BIOS C-States or aggressive power saving can cause CPUs to downclock after inactivity and respond poorly when load returns. That can look like a software performance problem, so it’s worth ruling out alongside the telemetry collection.

That was my experience too. Once the collector was configured correctly, it found the offending process much faster than manually watching the live graphs.