web-dev-qa-db-fra.com

Quel est le compteur de performance correct pour obtenir l'utilisation d'un processus par la CPU et la mémoire?

Comment obtenir les CPU et tilisation de la mémoire d'un processus particulier 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.

63
Anindya Chatterjee

De this post:

Pour obtenir l'utilisation totale de la CPU et de la mémoire de l'ordinateur:

using System.Diagnostics;

Puis déclarer globalement:

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

Ensuite, pour obtenir le temps CPU, appelez simplement la méthode NextValue() :

this.theCPUCounter.NextValue();

Cela vous donnera l'utilisation du processeur

En ce qui concerne l'utilisation de la mémoire, la même chose s'applique, je crois:

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

Ensuite, pour obtenir l’utilisation de la mémoire, appelez simplement la méthode NextValue() :

this.theMemCounter.NextValue();

Pour un processus spécifique, utilisation du processeur et de la 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 processus pour lequel vous souhaitez obtenir les informations.

Notez que ensemble de travail peut ne pas être suffisant en soi pour déterminer l’empreinte mémoire du processus - voir Qu'est-ce que des octets privés, virtuels?) octets, jeu de travail?

Pour récupérer toutes les catégories, voir Procédure pas à pas: Récupération de catégories et de compteurs

La différence entre Processor\% Processor Time Et Process\% Processor Time Est Processor provient du PC lui-même et Process correspond à un processus individuel. Donc, le temps de processeur du processeur serait utilisé sur le PC. Le temps de traitement d'un processus correspond à l'utilisation des processus spécifiés. Pour une description complète des noms de catégorie: Compteurs de l'analyseur de performances

Alternative à l'utilisation du compteur de performance

Utilisez les propriétés System.Diagnostics.Process.TotalProcessorTime et System.Diagnostics.ProcessThread.TotalProcessorTime pour décrire l'utilisation de votre processeur de la manière décrite par article .

111
SwDevMan81

Pelo Hyper-V:

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