Как я могу получить ЦП и Использование памяти для конкретного процесса с использованием класса .NET PerformanceCounter
? А также в чем разница между
Processor\% Processor Time
и Process\% Processor Time
?
Я немного смущен между этими двумя.
Как я могу получить ЦП и Использование памяти для конкретного процесса с использованием класса .NET PerformanceCounter
? А также в чем разница между
Processor\% Processor Time
и Process\% Processor Time
?
Я немного смущен между этими двумя.
Из this post:
Чтобы получить весь процессор ПК и память:
using System.Diagnostics;
Затем объявите глобально:
private PerformanceCounter theCPUCounter =
new PerformanceCounter("Processor", "% Processor Time", "_Total");
Затем, чтобы получить время процессора, просто вызовите метод NextValue()
:
this.theCPUCounter.NextValue();
Это позволит вам использовать CPU
Как и для использования памяти, то же самое относится, я полагаю:
private PerformanceCounter theMemCounter =
new PerformanceCounter("Memory", "Available MBytes");
Затем, чтобы получить использование памяти, просто вызовите метод NextValue()
:
this.theMemCounter.NextValue();
Для конкретного использования процессора и памяти:
private PerformanceCounter theCPUCounter =
new PerformanceCounter("Process", "% Processor Time",
Process.GetCurrentProcess().ProcessName);
где Process.GetCurrentProcess().ProcessName
- это имя процесса, о котором вы хотите получить информацию.
private PerformanceCounter theMemCounter =
new PerformanceCounter("Process", "Working Set",
Process.GetCurrentProcess().ProcessName);
где Process.GetCurrentProcess().ProcessName
- это имя процесса, о котором вы хотите получить информацию.
Обратите внимание, что Рабочий набор может быть недостаточным, чтобы определить "объем памяти" - см. Что такое частные байты, виртуальные байты, рабочий набор?
Чтобы получить все категории, см. Пошаговое руководство: получение категорий и счетчиков
Разница между Processor\% Processor Time
и Process\% Processor Time
равна Processor
от самого ПК, а Process
- для отдельного процесса. Таким образом, процессорное время процессора будет использоваться на ПК. Время обработки процесса будет определяться указанным процессом. Полное описание имен категорий: Счетчики производительности монитора
Альтернатива использованию счетчика производительности
Используйте System.Diagnostics.Process.TotalProcessorTime и System.Diagnostics.ProcessThread.TotalProcessorTime свойства для расчета использования вашего процессора, как описано в статье.
Pelo Hyper-V:
private PerformanceCounter theMemCounter = new PerformanceCounter(
"Hyper-v Dynamic Memory VM",
"Physical Memory",
Process.GetCurrentProcess().ProcessName);