5
votes

In .NET Core, how to get the CPU usage and Virtual Memory for a given process?

Google search result reveals that PerformanceCounter and DriverInfo class could do the job. However, PerformanceCounter & DriverInfo class are not available in .NET Core.

There is a post in stackoverflow about this question: How to get the current CPU/RAM/Disk usage in a C# web application using .NET CORE?

However it only addresses: -CPU usage for the current process:

    var proc = Process.GetCurrentProcess();

I have been given process (with a ProcessID integer format). How do I get the CPU Usage and Virtual Memory for that particular process in .NET Core?

2
Sounds like .Net Core is currently the wrong choice for your requirements. Why not just use the .Net Framework?Jamie Rees
The code I wrote above is for .Net core. Not .Net Frameworkhunterex
I know... My point being, why are you using .Net Core? Is there a specific reason why you are using it over .Net Framework?Jamie Rees
@JamieRees, that function above needs to work in .Net Core because the project needs to run in web apps and services for Windows, Linux, macOS, and Docker.hunterex
That still can be done in .Net Framework with MonoJamie Rees

2 Answers

1
votes

You can use PerformnceCounter in the System.Diagnostics.PerformanceCounter package

for example, the next code will give you the total processor usage percent

var cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", true);
var value = cpuCounter.NextValue();
// In most cases you need to call .NextValue() twice
if (Math.Abs(value) <= 0.00)
    value = cpuCounter.NextValue();

Console.WriteLine(value);
-3
votes

I just typed in 'get all processes in c#' into google and found this:

        Process[] processlist = Process.GetProcesses();

        foreach (Process theprocess in processlist)
        {
        }

i quickly tested in asp.net core 2.2 and it works fine using System.Diagnostics; However i used windows 10 pro to test it. So i dont know if it will work with other operating systems.

Source: https://www.howtogeek.com/howto/programming/get-a-list-of-running-processes-in-c/