Comment : récupérer des échantillons de compteurs de performance
Mise à jour : novembre 2007
Vous utilisez la classe CounterSample pour créer des échantillons et effectuer des calculs sur leur contenu. Une classe d'échantillon effectue un "échantillonnage" d'un compteur de performance en fonction des critères que vous définissez. Ces critères incluent les valeurs d'un ou de plusieurs compteurs et la fréquence à laquelle ces valeurs doivent être fournies. En outre, la classe enregistre l'heure à laquelle les échantillons ont été effectués. Vous pouvez collecter toutes ces données dans une même classe instanciée, puis utiliser la méthode Calculate pour effectuer un calcul. Vous pouvez également utiliser la méthode Calculate pour effectuer un calcul comparant les valeurs de deux échantillons différents.
Le calcul effectué dépend du type des compteurs ; en effet, des calculs spécifiques sont associés à certains types de compteurs. Par exemple, les compteurs du type ElapsedTime comparent l'horodatage de deux échantillons différents et en déduisent le temps écoulé. De nombreux compteurs calculent une moyenne des données récupérées.
Les différentes étapes de la définition d'un échantillon sont les suivantes :
Créer une ou plusieurs instances de la classe CounterSample.
Récupérer un échantillon en cours pour chaque instance.
Appeler la méthode Calculate en lui passant comme paramètre chaque échantillon à inclure dans le calcul.
Pour récupérer des échantillons de compteurs de performance et effectuer un calcul
Créez une instance de PerformanceCounter et configurez-la pour interagir avec la catégorie et le compteur choisis. Pour plus d'informations, consultez Comment : créer des instances du composant PerformanceCounter ou Comment : configurer des instances du composant PerformanceCounter.
Créez une instance de la classe CounterSample pour recueillir les résultats de l'échantillonnage.
Appelez la méthode NextSample sur l'instance du composant PerformanceCounter pour récupérer la valeur calculée et assignez le résultat à la classe CounterSample.
Conseil : Vous devez récupérer deux échantillons pour effectuer un calcul.
Créez une variable destinée à recueillir les résultats du calcul et attribuez-lui le type de données Single.
Pour chacun des deux échantillons dont vous avez besoin pour le calcul, assignez une valeur de retour de NextSample à une variable de type CounterSample.
Appelez la méthode Calculate sur la classe CounterSample et effectuez l'une ou l'autre des opérations suivantes :
Si vous avez récupéré deux échantillons (ils sont enregistrés en tant qu'objets CounterSample), passez-les tous deux comme paramètres à la méthode Calculate.
Si vous n'avez récupéré qu'un seul échantillon, passez-le à la méthode Calculate, puis utilisez le second paramètre pour récupérer un autre échantillon.
Définissez une égalité entre le résultat du calcul et la variable que vous avez créée pour le contenir.
Remarque : Les deux échantillons doivent provenir de compteurs de même type, à défaut de quoi la méthode lèvera une exception. Le type du compteur détermine le type du calcul effectué. Pour plus d'informations, consultez Types de compteurs de performance.
Le code suivant montre comment récupérer deux échantillons et les comparer à l'aide de la méthode Calculate :
' Dim variables of types CounterSample for each sample and a ' variable of type single for the results. Dim sample1 As CounterSample Dim sample2 As CounterSample Dim result As Single ' Retrieve a sample. sample1 = PerformanceCounter1.NextSample() ' Wait some interval of time here and retrieve ' a second sample. System.Threading.Thread.Sleep(1000) sample2 = PerformanceCounter1.NextSample() ' Pass both samples to the Calculate method. result = CounterSample.Calculate(sample1, sample2)
System.Diagnostics.CounterSample sample1; System.Diagnostics.CounterSample sample2; float result; // Retrieve a sample. sample1 = PerformanceCounter1.NextSample(); // Wait some interval of time here and retrieve // a second sample. System.Threading.Thread.Sleep(1000); sample2 = PerformanceCounter1.NextSample(); // Pass both samples to the Calculate method. result = System.Diagnostics.CounterSample.Calculate(sample1, sample2);
Une autre solution consiste à appeler la méthode NextSample afin de fournir les valeurs pour le second échantillon. L'exemple suivant illustre cette approche :
Dim sample1 As CounterSample Dim result As Single ' Retrieve a single sample. sample1 = PerformanceCounter1.NextSample() ' Pass the retrieved sample to the calculate method ' and retrieve another sample in the second parameter. result = CounterSample.Calculate(sample1, PerformanceCounter1.NextSample())
System.Diagnostics.CounterSample sample1; float result; // Retrieve a single sample. sample1 = PerformanceCounter1.NextSample(); // Pass the retrieved sample to the calculate method // and retrieve another sample in the second parameter. result = System.Diagnostics.CounterSample.Calculate(sample1, PerformanceCounter1.NextSample());
Voir aussi
Tâches
Comment : récupérer les valeurs brutes d'un compteur de performance
Comment : récupérer les valeurs calculées d'un compteur de performance
Comment : récupérer des listes de compteurs et de catégories