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