Что такое правильный счетчик производительности, чтобы получить процессор и использование памяти процесса?


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

Processor% Processor Time и Process% Processor Time?

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

2 54

2 ответа:

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

чтобы получить весь процессор ПК и использование памяти:

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 в индивидуальном процессе. Таким образом, процессорное время процессора будет использоваться на ПК. Процессорное время процесса было бы указанным использованием процессов. Для полного описания категории имена: Счетчики Монитора Производительности

альтернатива использованию счетчика производительности

использовать

Pelo Hyper-V:

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