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.
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);
où 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);
où 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 .
Pelo Hyper-V:
private PerformanceCounter theMemCounter = new PerformanceCounter(
"Hyper-v Dynamic Memory VM",
"Physical Memory",
Process.GetCurrentProcess().ProcessName);