Quel est le compteur de Performance correct pour obtenir L'utilisation CPU et mémoire d'un processus?

Comment puis-je obtenir le CPU et utilisation de la mémoire d'un processus particulier en utilisant la classe .NET PerformanceCounter ? Et aussi quelle est la différence entre

Processor% Processor Time et Process% Processor Time ?

je suis un peu confus entre ces deux.

54
demandé sur SharpC 2011-01-13 15:24:21

2 réponses

à Partir de ce post":

pour obtenir le CPU entier PC et L'utilisation de la mémoire:

using System.Diagnostics;

puis déclarer globalement:

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

ensuite pour obtenir le temps CPU, il suffit d'appeler le NextValue() méthode:

this.theCPUCounter.NextValue();

vous obtiendrez l'utilisation CPU

Comme pour l'utilisation de la mémoire, même la chose s'applique je crois:

private PerformanceCounter theMemCounter = 
   new PerformanceCounter("Memory", "Available MBytes");

ensuite pour obtenir l'utilisation de la mémoire, il suffit d'appeler le NextValue() méthode:

this.theMemCounter.NextValue();

pour un usage spécifique de processeur et de mémoire:

private PerformanceCounter theCPUCounter = 
   new PerformanceCounter("Process", "% Processor Time",              
   Process.GetCurrentProcess().ProcessName);

Process.GetCurrentProcess().ProcessName est le nom du processus pour lequel vous souhaitez obtenir les informations.

private PerformanceCounter theMemCounter = 
   new PerformanceCounter("Process", "Working Set",
   Process.GetCurrentProcess().ProcessName);

Process.GetCurrentProcess().ProcessName est le nom du procédé que vous souhaitez pour obtenir les informations sur les.

notez que l'ensemble de travail peut ne pas être suffisant en soi pour déterminer l'empreinte mémoire du processus -- voir qu'est-ce que les octets privés, les octets virtuels, l'ensemble de travail?

pour récupérer toutes les catégories, voir Walkthrough: Retrieving Categories and Counters

la différence entre Processor\% Processor Time et Process\% Processor Time est Processor est à partir du PC lui-même et Process est par un processus individuel. Ainsi, le temps de processeur du processeur serait l'utilisation sur le PC. Le temps de traitement d'un processus serait l'utilisation des processus spécifiés. Pour la description complète des noms de catégorie: compteurs de moniteur de Performance

une alternative à l'utilisation du compteur de performances

Use système.Diagnostic.Processus.TotalProcessorTime et système.Diagnostic.ProcessThread.TotalProcessorTime propriétés pour calculer l'utilisation de votre processeur comme ce article décrit.

100
répondu SwDevMan81 2017-05-23 11:55:03

Pelo Hyper - V:

private PerformanceCounter theMemCounter = new PerformanceCounter(
    "Hyper-v Dynamic Memory VM",
    "Physical Memory",
    Process.GetCurrentProcess().ProcessName); 
3
répondu Fernando 2011-08-05 17:25:08