Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. |
Traduction
Source
|
PerformanceCounter, classe
Représente un composant de compteur de performance Windows NT.
System.MarshalByRefObject
System.ComponentModel.Component
System.Diagnostics.PerformanceCounter
Assembly : System (dans System.dll)
Le type PerformanceCounter expose les membres suivants.
| Nom | Description | |
|---|---|---|
|
PerformanceCounter() | Initialise une nouvelle instance en lecture seule de la classe PerformanceCounter, sans associer cette instance à un compteur de performance système ou personnalisé. |
|
PerformanceCounter(String, String) | Initialise une nouvelle instance en lecture seule de la classe PerformanceCounter et l'associe au compteur de performance système ou personnalisé spécifié de l'ordinateur local. Ce constructeur exige que la catégorie ait une seule instance. |
|
PerformanceCounter(String, String, Boolean) | Initialise une nouvelle instance en lecture seule ou en lecture/écriture de la classe PerformanceCounter et l'associe au compteur de performance système ou personnalisé spécifié de l'ordinateur local. Ce constructeur exige que la catégorie contienne une seule instance. |
|
PerformanceCounter(String, String, String) | Initialise une nouvelle instance en lecture seule de la classe PerformanceCounter et l'associe au compteur de performance système ou personnalisé et à l'instance de la catégorie spécifiés sur l'ordinateur local. |
|
PerformanceCounter(String, String, String, Boolean) | Initialise une nouvelle instance en lecture seule ou en lecture/écriture de la classe PerformanceCounter et l'associe au compteur de performance système ou personnalisé et à l'instance de la catégorie spécifiés sur l'ordinateur local. |
|
PerformanceCounter(String, String, String, String) | Initialise une nouvelle instance en lecture seule de la classe PerformanceCounter et l'associe au compteur de performance système ou personnalisé et à l'instance de la catégorie spécifiés sur l'ordinateur donné. |
| Nom | Description | |
|---|---|---|
|
CanRaiseEvents | Obtient une valeur qui indique si le composant peut déclencher un événement. (Hérité de Component.) |
|
CategoryName | Obtient ou définit le nom de la catégorie de compteurs de performance de ce compteur de performance. |
|
Container | Obtient le IContainer qui contient Component. (Hérité de Component.) |
|
CounterHelp | Obtient la description de ce compteur de performance. |
|
CounterName | Obtient ou définit le nom du compteur de performance associé à cette instance de PerformanceCounter. |
|
CounterType | Obtient le type de compteur du compteur de performance associé. |
|
DesignMode | Obtient une valeur qui indique si Component est actuellement en mode design. (Hérité de Component.) |
|
Events | Obtient la liste des gestionnaires d'événements attachés à ce Component. (Hérité de Component.) |
|
InstanceLifetime | Obtient ou définit la durée de vie d'un processus. |
|
InstanceName | Obtient ou définit un nom d'instance pour ce compteur de performance. |
|
MachineName | Obtient ou définit le nom de l'ordinateur contenant ce compteur de performance. |
|
RawValue | Obtient ou définit la valeur brute (ou non calculée) de ce compteur. |
|
ReadOnly | Obtient ou définit une valeur indiquant si cette instance de PerformanceCounter est en mode lecture seule. |
|
Site | Obtient ou définit le ISite de Component. (Hérité de Component.) |
| Nom | Description | |
|---|---|---|
|
BeginInit | Commence l'initialisation d'une instance de PerformanceCounter utilisée dans un formulaire ou par un autre composant. L'initialisation se produit au moment de l'exécution. |
|
Close | Ferme le compteur de performance et libère toutes les ressources allouées par cette instance du compteur de performance. |
|
CloseSharedResources | Libère l'état partagé de la bibliothèque de compteurs de performance alloué par les compteurs. |
|
CreateObjRef | Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant. (Hérité de MarshalByRefObject.) |
|
Decrement | Décrémente d'une unité le compteur de performance associé, à l'aide d'une opération atomique efficace. |
|
Dispose() | Libère toutes les ressources utilisées par Component. (Hérité de Component.) |
|
Dispose(Boolean) | Libère les ressources non managées utilisées par Component et libère éventuellement les ressources managées. (Hérité de Component.) |
|
EndInit | Termine l'initialisation d'une instance de PerformanceCounter utilisée dans un formulaire ou par un autre composant. L'initialisation se produit au moment de l'exécution. |
|
Equals(Object) | Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.) |
|
Finalize | Libère les ressources non managées et exécute d'autres opérations de nettoyage avant la récupération de Component par le garbage collection. (Hérité de Component.) |
|
GetHashCode | Sert de fonction de hachage pour un type particulier. (Hérité de Object.) |
|
GetLifetimeService | Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject.) |
|
GetService | Retourne un objet qui représente un service fourni par Component ou par son Container. (Hérité de Component.) |
|
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) |
|
Increment | Incrémente d'une unité le compteur de performance associé, à l'aide d'une opération atomique efficace. |
|
IncrementBy | Incrémente ou décrémente d'un nombre d'unités spécifique la valeur du compteur de performance associé, à l'aide d'une opération atomique efficace. |
|
InitializeLifetimeService | Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject.) |
|
MemberwiseClone() | Crée une copie superficielle de l'objet Object actif. (Hérité de Object.) |
|
MemberwiseClone(Boolean) | Crée une copie superficielle de l'objet MarshalByRefObject actuel. (Hérité de MarshalByRefObject.) |
|
NextSample | Obtient un échantillon de compteur et retourne sa valeur brute ou non calculée. |
|
NextValue | Obtient un échantillon de compteur et retourne sa valeur calculée. |
|
RemoveInstance | Supprime l'instance de la catégorie spécifiée par la propriété InstanceName de l'objet PerformanceCounter. |
|
ToString | Retourne String contenant le nom du Component, s'il existe. Cette méthode ne doit pas être substituée. (Hérité de Component.) |
| Nom | Description | |
|---|---|---|
|
DefaultFileMappingSize | Obsolète. Spécifie la taille, en octets, de la mémoire globale partagée par les compteurs de performance. La taille par défaut est 524,288 au format décimal. |
Le composant PerformanceCounter peut être utilisé à la fois pour la lecture de compteurs prédéfinis ou personnalisés existants et pour la publication (écriture) de données de performance dans des compteurs personnalisés.
Important
|
|---|
|
Cette classe requiert que les appelants immédiats soient d'un niveau de confiance suffisant dans les versions 1.0 et 1.1 du .NET Framework. À partir de .NET Framework version 2.0, cette classe requiert PerformanceCounterPermission pour des actions spécifiques. Il est fortement recommandé que PerformanceCounterPermission ne soit pas accordé à du code de niveau de confiance partiel. La capacité de lecture et d'écriture dans les compteurs de performance permet au code d'exécuter des actions telles que l'énumération des processus d'exécution et l'obtention d'informations les concernant. |
Attention
|
|---|
|
Passer un objet PerformanceCounter à du code d'un niveau de confiance moindre peut créer un problème de sécurité. Ne passez jamais des objets de compteur de performance, tel que PerformanceCounterCategory ou PerformanceCounter, à du code d'un niveau de confiance moindre. |
Les compteurs prédéfinis sont trop nombreux pour pouvoir être cités et sont spécifiques à chaque produit. Pour en savoir plus sur les compteurs de performance .NET Framework, consultez Compteurs de performance dans le .NET Framework.
Pour lire un compteur de performance, créez une instance de la classe PerformanceCounter, définissez CategoryName, CounterName et éventuellement les propriétés InstanceName ou MachineName, puis appelez la méthode NextValue pour lire un compteur de performance.
Pour publier les données de compteurs de performance, créez un ou plusieurs compteurs personnalisés à l'aide de la méthode PerformanceCounterCategory.Create, créez une instance de la classe PerformanceCounter, définissez les propriétés CategoryName, CounterName et éventuellement InstanceName ou MachineName, puis appelez les méthodes IncrementBy, Increment ou Decrement, ou encore définissez la propriété RawValue afin de modifier la valeur de votre compteur personnalisé.
Remarque
|
|---|
|
Les méthodes Increment, IncrementBy et Decrement utilisent des verrouillages internes pour mettre à jour la valeur du compteur. Cela aide à garantir la précision de la valeur de compteur dans les scénarios multithread ou multiprocessus, mais provoque également une altération des performances. L'exactitude fournie par les opérations verrouillées n'est pas nécessaire, vous pouvez mettre à jour directement la propriété RawValue pour améliorer les performances jusqu'à 5 fois. Toutefois, certaines mises à jour de la valeur de compteur peuvent être ignorées dans les scénarios multithread, ce qui entraîne une imprécision des données. |
Le compteur est le mécanisme permettant de recueillir les données de performance. Le Registre stocke les noms de tous les compteurs, chacun d'eux étant lié à une zone spécifique des fonctionnalités du système. Il peut s'agir, par exemple, de la plage de temps occupée d'un processeur, de l'utilisation de la mémoire ou du nombre d'octets reçus sur une connexion réseau.
Chaque compteur est identifié de manière unique à l'aide de son nom et de son emplacement. Exactement comme un chemin d'accès de fichier comprend un lecteur, un répertoire, un ou plusieurs sous-répertoires et un nom de fichier, les informations sur le compteur sont constituées de quatre éléments : l'ordinateur, la catégorie, l'instance de la catégorie et le nom du compteur.
Les informations sur le compteur doivent inclure la catégorie (ou l'objet de performance), pour laquelle le compteur mesure les données. Les catégories d'un ordinateur comprennent les composants physiques, tels que les processeurs, les disques et la mémoire. Il existe également des catégories système, telles que les processus et les threads. Chaque catégorie est liée à un élément fonctionnel au sein de l'ordinateur et un jeu de compteurs standard lui est assigné. Ces objets sont énumérés dans la liste déroulante Objet de performance de la boîte de dialogue Ajouter des compteurs du Moniteur système Windows 2000, et vous devez les spécifier dans le chemin d'accès du compteur. Les données de performance sont regroupées selon catégorie à laquelle elles sont liées.
Dans certains cas, il peut exister plusieurs copies de la même catégorie. Par exemple, plusieurs processus et threads s'exécutent simultanément et certains ordinateurs contiennent plusieurs processeurs. Les copies de catégories sont appelées instances de catégorie, et un jeu de compteurs standard est assigné à chaque instance. Si une catégorie peut posséder plusieurs instances, une spécification d'instance doit être comprise dans les informations sur le compteur.
Pour obtenir les données de performance de compteurs qui exigeaient une valeur initiale ou antérieure pour effectuer les calculs requis, appelez à deux reprises la méthode NextValue et utilisez les informations retournées nécessaires à votre application.
Remarque
|
|---|
|
Les catégories de compteurs de performance installées avec le .NET Framework 2.0 utilisent une mémoire partagée distincte, chaque catégorie de compteurs de performance possédant sa propre mémoire. Vous pouvez spécifier la taille d'une mémoire partagée distincte en créant un DWORD nommé FileMappingSize dans la clé de Registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<NomCatégorie>\Performance. La taille de la mémoire partagée de la catégorie est affectée à la valeur FileMappingSize. La taille par défaut est 131072 au format décimal. Si la valeur FileMappingSize n'est pas présente, l'attribut fileMappingSize de l'élément performanceCounters spécifié dans le fichier Machine.config est utilisé, ce qui entraîne une charge supplémentaire pour le traitement du fichier de configuration. Vous pouvez réaliser une amélioration des performances au démarrage de l'application en définissant la taille du mappage de fichier dans le Registre. Pour plus d'informations sur la taille du mappage de fichier, consultez <performanceCounters>, élément. |
Remarque
|
|---|
|
L'attribut HostProtectionAttribute appliqué à ce type ou membre a la valeur de propriété Resources suivante : Synchronization | SharedState. HostProtectionAttribute n'affecte pas les applications bureautiques (qui sont généralement démarrées en double-cliquant sur une icône, en tapant une commande ou en entrant une URL dans un navigateur). Pour plus d'informations, consultez la classe HostProtectionAttribute ou Attributs de programmation et de protection des hôtes SQL Server. |
Remarque sur la plateforme : Les compteurs de performance ne sont pas pris en charge sous Windows 98 ou Windows Millennium Edition (Me).
L'exemple de code suivant montre l'utilisation de la classe PerformanceCounter pour créer et utiliser un type de compteur AverageCount64. L'exemple crée des catégories, installe des compteurs, rassemble des données à partir des compteurs et appelle la classe CounterSampleCalculator pour interpréter les données des compteurs de performance. Les résultats intermédiaires et définitifs sont affichés dans la fenêtre de la console. Pour des exemples supplémentaires d'autres types de compteur de performance, consultez l'énumération PerformanceCounterType.
using System; using System.Collections; using System.Collections.Specialized; using System.Diagnostics; public class App { private static PerformanceCounter PC; private static PerformanceCounter BPC; public static void Main() { ArrayList samplesList = new ArrayList(); // If the category does not exist, create the category and exit. // Performance counters should not be created and immediately used. // There is a latency time to enable the counters, they should be created // prior to executing the application that uses the counters. // Execute this sample a second time to use the category. if (SetupCategory()) return; CreateCounters(); CollectSamples(samplesList); CalculateResults(samplesList); } private static bool SetupCategory() { if ( !PerformanceCounterCategory.Exists("AverageCounter64SampleCategory") ) { CounterCreationDataCollection CCDC = new CounterCreationDataCollection(); // Add the counter. CounterCreationData averageCount64 = new CounterCreationData(); averageCount64.CounterType = PerformanceCounterType.AverageCount64; averageCount64.CounterName = "AverageCounter64Sample"; CCDC.Add(averageCount64); // Add the base counter. CounterCreationData averageCount64Base = new CounterCreationData(); averageCount64Base.CounterType = PerformanceCounterType.AverageBase; averageCount64Base.CounterName = "AverageCounter64SampleBase"; CCDC.Add(averageCount64Base); // Create the category. PerformanceCounterCategory.Create("AverageCounter64SampleCategory", "Demonstrates usage of the AverageCounter64 performance counter type.", PerformanceCounterCategoryType.SingleInstance, CCDC); return(true); } else { Console.WriteLine("Category exists - AverageCounter64SampleCategory"); return(false); } } private static void CreateCounters() { // Create the counters. PC = new PerformanceCounter("AverageCounter64SampleCategory", "AverageCounter64Sample", false); BPC = new PerformanceCounter("AverageCounter64SampleCategory", "AverageCounter64SampleBase", false); PC.RawValue=0; BPC.RawValue=0; } private static void CollectSamples(ArrayList samplesList) { Random r = new Random( DateTime.Now.Millisecond ); // Loop for the samples. for (int j = 0; j < 100; j++) { int value = r.Next(1, 10); Console.Write(j + " = " + value); PC.IncrementBy(value); BPC.Increment(); if ((j % 10) == 9) { OutputSample(PC.NextSample()); samplesList.Add( PC.NextSample() ); } else Console.WriteLine(); System.Threading.Thread.Sleep(50); } } private static void CalculateResults(ArrayList samplesList) { for(int i = 0; i < (samplesList.Count - 1); i++) { // Output the sample. OutputSample( (CounterSample)samplesList[i] ); OutputSample( (CounterSample)samplesList[i+1] ); // Use .NET to calculate the counter value. Console.WriteLine(".NET computed counter value = " + CounterSampleCalculator.ComputeCounterValue((CounterSample)samplesList[i], (CounterSample)samplesList[i+1]) ); // Calculate the counter value manually. Console.WriteLine("My computed counter value = " + MyComputeCounterValue((CounterSample)samplesList[i], (CounterSample)samplesList[i+1]) ); } } //++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++ // Description - This counter type shows how many items are processed, on average, // during an operation. Counters of this type display a ratio of the items // processed (such as bytes sent) to the number of operations completed. The // ratio is calculated by comparing the number of items processed during the // last interval to the number of operations completed during the last interval. // Generic type - Average // Formula - (N1 - N0) / (D1 - D0), where the numerator (N) represents the number // of items processed during the last sample interval and the denominator (D) // represents the number of operations completed during the last two sample // intervals. // Average (Nx - N0) / (Dx - D0) // Example PhysicalDisk\ Avg. Disk Bytes/Transfer //++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++ private static Single MyComputeCounterValue(CounterSample s0, CounterSample s1) { Single numerator = (Single)s1.RawValue - (Single)s0.RawValue; Single denomenator = (Single)s1.BaseValue - (Single)s0.BaseValue; Single counterValue = numerator / denomenator; return(counterValue); } // Output information about the counter sample. private static void OutputSample(CounterSample s) { Console.WriteLine("\r\n+++++++++++"); Console.WriteLine("Sample values - \r\n"); Console.WriteLine(" BaseValue = " + s.BaseValue); Console.WriteLine(" CounterFrequency = " + s.CounterFrequency); Console.WriteLine(" CounterTimeStamp = " + s.CounterTimeStamp); Console.WriteLine(" CounterType = " + s.CounterType); Console.WriteLine(" RawValue = " + s.RawValue); Console.WriteLine(" SystemFrequency = " + s.SystemFrequency); Console.WriteLine(" TimeStamp = " + s.TimeStamp); Console.WriteLine(" TimeStamp100nSec = " + s.TimeStamp100nSec); Console.WriteLine("++++++++++++++++++++++"); } }
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Important
Remarque