• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.
  • The forums have been upgraded with support for dark mode. By default it will follow the setting on your system/browser. You may override it by scrolling to the end of the page and clicking the gears icon.

Process Monitor

FordGT90Concept

"I go fast!1!11!1!"
Joined
Oct 13, 2008
Messages
26,263 (4.30/day)
Location
IA, USA
System Name BY-2021
Processor AMD Ryzen 7 5800X (65w eco profile)
Motherboard MSI B550 Gaming Plus
Cooling Scythe Mugen (rev 5)
Memory 2 x Kingston HyperX DDR4-3200 32 GiB
Video Card(s) AMD Radeon RX 7900 XT
Storage Samsung 980 Pro, Seagate Exos X20 TB 7200 RPM
Display(s) Nixeus NX-EDG274K (3840x2160@144 DP) + Samsung SyncMaster 906BW (1440x900@60 HDMI-DVI)
Case Coolermaster HAF 932 w/ USB 3.0 5.25" bay + USB 3.2 (A+C) 3.5" bay
Audio Device(s) Realtek ALC1150, Micca OriGen+
Power Supply Enermax Platimax 850w
Mouse Nixeus REVEL-X
Keyboard Tesoro Excalibur
Software Windows 10 Home 64-bit
Benchmark Scores Faster than the tortoise; slower than the hare.
Process Monitor is no longer supported nor updated because of changes to Windows itself ("Error VSP1478: Performance counters are not supported on virtual or Hyper-V enabled machines. Please use a non-virtual machine or disable Hyper-V"). When this is the case, the processor graph won't load at all. Process Explorer by Sysinternals (owned by Microsoft) is probably the best substitute.

This simple application records how many handles and how much memory an application is using every second. You can type in a process name (for when the process will be started soon) or select an already running process from the drop down box. Click start and it will start to monitor it; click stop to halt monitoring.

process_monitor_1_0_3.png


If the application closes, it will stop updating so you can see if the handle limit (default 10,000) or memory limit (2 GiB 32-bit, 4 GiB 32-bit Large Address Aware) is exceeded. These are things you can address to perhaps stop it from crashing.

If you wish to to use a Process Identification number (PID), use # followed by the number wherever it requests a name (commandline or in the "Process" field). For example, if you want it to monitor the PID 812, enter #812 and click start.


To increase the handle limit, you must increase the registry key:
Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota


Command line arguments:
[table="head"]Argument|Purpose|Example
process_name|Enters the given name in the Process dropdown box.|csrss
/s|Automatically starts monitoring the process named. This will not work without providing a process name.|csrss /s[/table]


It requires .NET Framework 3.5 or newer to run.


Version History:
1.0.4 - Fixed a minor bug where Max Cores could exceed the number of cores in the machine.
1.0.3 - Added Processor graph/stats and ability to directly input a PID (via #134).
1.0.2 - Added launch arguments (detailed above).
1.0.1 - Displays the start time of monitor and how long the monitor observed the process on stopping.
1.0.0 - Original release.
 

Attachments

Last edited by a moderator:
You da man, man! This is just what I need.
 
Heh, I could display all that info about a specific process. The reason why I don't is because that requires querying the Main Module which is a drag on performance when performance is important (gotta keep those graphs running ;)).

I haven't found an app that does what this does (finds maximum memory usage and maximum handles over a period of time).
 
Yes, there are definitely advantages to having light weight apps and utilities that have very specific functionality.
 
Capture421.jpg


am i missing something ?
 
When the app terminates, that number isn't stored, nor the trends leading up to it. If an application closes because it requested 2+ GiB you can only guess that is in fact what happened. Unless, of course, this is running at the same time watching it.
 
sweet little app.


Yse w1zzy, we know about task manager :P this gives you a timeline/graph
 
1.0.1 released. It displays how long the process monitor was observering a process on stop/close.
 
That doesn't graph memory usage (or handles for that matter) nor keep record of the highest memory usage observed. :p
 
You miss the point
I graphs or lists percentages or actual numbers
of ANYTHING you want
It has 2 pages of variables
and functions and executes your own scripts
 
This works with two clicks (or type and one click), no thinking/programming required. ;)
 
very good, but mine runs when the system is brought up.
no clicking :laugh:

Yes there is initial configuration which can be difficult ;)
but with flexibility come configuration.
 
either way, monitoring the system is very important.
good app.
 
very good, but mine runs when the system is brought up.
no clicking :laugh:
Stick it in Startup and it will start with the system. I should add a flag to pre-specify an application to monitor...


Edit: Done, see original post for details.
 
Last edited:
I've used the tool from this thread over here, to fix a problem with Sins of a solar empires latest expansion pack. I've linked to here, and I'm linking from here back to there so that all threads involved get some attention.
 
I'm pondering adding a new feature to this app:

While the Process Monitor is running, it would monitor CPU usage per core, formulate a score for each core, and figure out how many cores are actually needed to run the application. Because the CPU usage is based on the performance of the entire system, the user must make sure nothing is loading the system to 100% while playing the game. The purpose of this feature would be tell how many cores the game needs to operate smoothly. This information is valuable in setting WCG and F@H to how many cores they should be using. That way, you can contribute as much as possible to those projects while not interfering with your game performance.

Anyone think this would be a valuable feature?
 
just make it spit out min/max/avg for each core - be very useful for testing games multithreading capabilities.
 
I think I would do both. Instead of a graph, show a ListView with the current/min/max and on the left, show min/max core/CPU usage.

The reason I can't do an average is because it would have to have a limited scope (how limited depends on the hardware). If it isn't limited, it would eventually crash and/or be forced to restart averaging. :(
 
average over the last 5 minutes, at 10-20 second intervals?
 
That should work except I'd probably average it every second. It is just a simple division operation (total percentage / total seconds).
 
i'm just thinking its a great way to tell if a game supports multithreading, and if so, is it crippled - EG supreme commander, it was multithreaded... but one thread had the AI on it, and that thread would just choke and die long before the others - holding performance back.
 
Wait...let me clear something up: There is Process CPU time which tells you how much time a processor spent on a given process. This only tells you overall CPU use, not by core (an average of all cores).

There is also load percentages per core. It tells you how burdened each core is but it doesn't tell you what process is burdening that given core.

Which is more valuable to you? Both?


I guess the point I am trying to make is that the most accurate way to tell how many cores a given process is using is to take total process time and compare it to the number of cores. I could graph that...
 
Wait...let me clear something up: There is Process CPU time which tells you how much time a processor spent on a given process. This only tells you overall CPU use, not by core (an average of all cores).

There is also load percentages per core. It tells you how burdened each core is but it doesn't tell you what process is burdening that given core.

Which is more valuable to you? Both?


I guess the point I am trying to make is that the most accurate way to tell how many cores a given process is using is to take total process time and compare it to the number of cores. I could graph that...

is it possible to tell the load a process is having on the cores? Say, you run a game and it uses 100% of core 1, but only 5-10% of the rest of your cores
 
Back
Top