Before I start rolling my own with the open source tools I already use, is there any thing out there that already does this?
Looking at typical metrics, disk IO, CPU, RAM. When one of those is under load, I need to see what process is causing it.
No and Yes.
You probably know already the Windows task manager in Windows 10 (and other versions of Windows). You may keep it running in a background window. It will give you indications when your computer come into load situation. But beware that this tool will add load on that machine and hence might sometimes be the cause, impacting your observations. You may reduce such impact by reducing the frequency of updating the window to lowest frequency available.
Depending on the cause for such load, already the Windows task manager will give you the process responsible. You may click onto the column titels similar to Excel to make Windows task manager sort its processes view to display according to that column. So when CPU is your bottleneck, it will display application with currently highest CPU usage on top when you click on CPU. The same is possible when memory, storage, network, or energy consumption is the bottle neck, with the corresponding columns.
There are two other limitations with Windows task manager:
- It will not record its displayed data for later analysis, at least not by default and I don't know of a configuration option for recording neither. And even if it would have such an option, it would impact your observation even more, making storage IO your bottleneck and the recording process the responsible one.
- There exist applications using multiple processes and multiple threads. So when the responsible application is such an application, the Windows task manager will help but not identify which of the various processes of this application is the culprit one. For his case, Windows and its task manager have the Windows Resource Manager.
The Windows Resource Manager works similar to the Windows task manager. When going into detail view, you'll see the breakdown on processes, even for applications using multiple processes like typically web browsers. The Windows resource manager has similar limitations. It impacts your observation by adding load. It does not record its data by default, preventing a post-mortem analysis. If it would record its data, it would deteriorate the load situation by its recording feature.