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
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

PerformanceCounter, classe

Représente un composant de compteur de performance Windows NT.

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Diagnostics.PerformanceCounter

Espace de noms :  System.Diagnostics
Assembly :  System (dans System.dll)
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	SharedState = true)]
public sealed class PerformanceCounter : Component, 
	ISupportInitialize

Le type PerformanceCounter expose les membres suivants.

  Nom Description
Méthode publique PerformanceCounter() Initialise une nouvelle instance en lecture seule de la classe PerformanceCounter, sans associer cette instance à un compteur de performance système ou personnalisé.
Méthode publique 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.
Méthode publique 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.
Méthode publique 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.
Méthode publique 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.
Méthode publique 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é.
Début
  Nom Description
Propriété protégée CanRaiseEvents Obtient une valeur qui indique si le composant peut déclencher un événement. (Hérité de Component.)
Propriété publique CategoryName Obtient ou définit le nom de la catégorie de compteurs de performance de ce compteur de performance.
Propriété publique Container Obtient le IContainer qui contient Component. (Hérité de Component.)
Propriété publique CounterHelp Obtient la description de ce compteur de performance.
Propriété publique CounterName Obtient ou définit le nom du compteur de performance associé à cette instance de PerformanceCounter.
Propriété publique CounterType Obtient le type de compteur du compteur de performance associé.
Propriété protégée DesignMode Obtient une valeur qui indique si Component est actuellement en mode design. (Hérité de Component.)
Propriété protégée Events Obtient la liste des gestionnaires d'événements attachés à ce Component. (Hérité de Component.)
Propriété publique InstanceLifetime Obtient ou définit la durée de vie d'un processus.
Propriété publique InstanceName Obtient ou définit un nom d'instance pour ce compteur de performance.
Propriété publique MachineName Obtient ou définit le nom de l'ordinateur contenant ce compteur de performance.
Propriété publique RawValue Obtient ou définit la valeur brute (ou non calculée) de ce compteur.
Propriété publique ReadOnly Obtient ou définit une valeur indiquant si cette instance de PerformanceCounter est en mode lecture seule.
Propriété publique Site Obtient ou définit le ISite de Component. (Hérité de Component.)
Début
  Nom Description
Méthode publique 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.
Méthode publique Close Ferme le compteur de performance et libère toutes les ressources allouées par cette instance du compteur de performance.
Méthode publique Membre statique CloseSharedResources Libère l'état partagé de la bibliothèque de compteurs de performance alloué par les compteurs.
Méthode publique 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.)
Méthode publique Decrement Décrémente d'une unité le compteur de performance associé, à l'aide d'une opération atomique efficace.
Méthode publique Dispose() Libère toutes les ressources utilisées par Component. (Hérité de Component.)
Méthode protégée 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.)
Méthode publique 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.
Méthode publique Equals(Object) Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.)
Méthode protégée 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.)
Méthode publique GetHashCode Sert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publique 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.)
Méthode protégée GetService Retourne un objet qui représente un service fourni par Component ou par son Container. (Hérité de Component.)
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publique Increment Incrémente d'une unité le compteur de performance associé, à l'aide d'une opération atomique efficace.
Méthode publique 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.
Méthode publique 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.)
Méthode protégée MemberwiseClone() Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode protégée MemberwiseClone(Boolean) Crée une copie superficielle de l'objet MarshalByRefObject actuel. (Hérité de MarshalByRefObject.)
Méthode publique NextSample Obtient un échantillon de compteur et retourne sa valeur brute ou non calculée.
Méthode publique NextValue Obtient un échantillon de compteur et retourne sa valeur calculée.
Méthode publique RemoveInstance Supprime l'instance de la catégorie spécifiée par la propriété InstanceName de l'objet PerformanceCounter.
Méthode publique ToString Retourne String contenant le nom du Component, s'il existe. Cette méthode ne doit pas être substituée. (Hérité de Component.)
Début
  Nom Description
Événement public Disposed Se produit lorsque le composant est supprimé par un appel à la méthode Dispose. (Hérité de Component.)
Début
  Nom Description
Champ public Membre statique 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.
Début

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.

Remarque importante 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.

Remarque Attention 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 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 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 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("++++++++++++++++++++++");
	}
}


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

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.
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Date

Historique

Motif

Septembre 2010

Informations de sécurité des threads corrigées ; le type n'est pas « thread safe ».

Résolution des bogues de contenu.

Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ