Что такое правильный счетчик производительности для получения загрузки процессора и памяти процесса? - PullRequest
62 голосов
/ 13 января 2011

Как я могу получить ЦП и Использование памяти определенного процесса с использованием класса .NET PerformanceCounter? А также в чем разница между

Processor\% Processor Time и Process\% Processor Time?

Я немного запутался между этими двумя.

Ответы [ 2 ]

110 голосов
/ 13 января 2011

С это сообщение:

Для получения полной загрузки процессора и памяти ПК:

using System.Diagnostics;

Тогда объявите глобально:

private PerformanceCounter theCPUCounter = 
   new PerformanceCounter("Processor", "% Processor Time", "_Total"); 

Затем, чтобы получить процессорное время, просто вызовите метод NextValue():

this.theCPUCounter.NextValue();

Это позволит вам использовать процессор

Что касается использования памяти, применимо то же самое, я считаю:

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. *

4 голосов
/ 05 августа 2011

Pelo Hyper-V:

private PerformanceCounter theMemCounter = new PerformanceCounter(
    "Hyper-v Dynamic Memory VM",
    "Physical Memory",
    Process.GetCurrentProcess().ProcessName); 
...