Hoofdstuk 10 - Les 2

In de System.Diagnostics namespace kunnen performance counters worden aangemaakt en kunnen performance counters worden bijgewerkt binnen de applicatie. Vervolgens kunnen de developer en systeembeheerder deze performance counters bekijken via de perormance monitor.

Om een performance counter te maken moet een instantie worden gemaakt van de PerformanceCounter class door een performance, een teller en eventueel de instantie mee te geven. Gebruik performanceCounter.NextValue om de counter te resetten. Roep dezelfde methode nog een keer aan om de performance data op te halen.
PerformanceCounter pc = new PerformanceCounter("Processor", "% Processor Time", "_Total");

// Reset de teller
pc.NextValue();

// Wacht eens seconde
Thread.Sleep(1000);

// Haal het processor gebruik op van de afgelopen seconde
Console.WriteLine(pc.NextValue());
Custom performance counters kunnen niet worden toegevoegd aan een bestaande categorie. Om een custom performance counter aan te maken dient de static methode Create te worden aangeroepen: PerformanceCounterCategory.Create(); Geef vervolgens een naam mee voor de categorie, een naam voor de performance counter en een beschrijving van de teller.
PerformanceCounterCategory.Create("CategoryName", "CounterHelp", PerformanceCounterCategoryType.MultiInstance, "TellerNaam", "CounterHelp");
Met de static methoden Exists en Delete van PerformanceCounterCategory class kan gekeken worden of een categorie al bestaat of kan je een categorty verwijderen.

Om 2 redenen dienen performance counters tijdens installatie aangemaakt worden:
  • preformance counters aanmaken heeft administrator rechten nodig
  • Het OS heeft enkele momenten nodig om de performance counters te verversen
Het updaten van een custom performance counter is hetzelfde als eerder vermeld. Let bij het aanmaken van een performance counter object op, dat hij niet op readonly staat. Dit doe je door in de constructor de waarde false mee te geven:
PerformanceCounter pc = new PerformanceCounter("My app counters", "Sales", false);

// Bepaal de waarde
pc.RawValue = 7;
// Haal er 1 vanaf
pc.Decrement();
// Tel er 1 bij op
pc.Increment();
// Tel er 3 bij op
pc.Increment(3);
Gebruik Increment() en Decrement() alleen bij multi threads omdat zij langzamer zijn dan RawValue(). Gebruik dus RawValue() bij een single thread applicatie.

Reacties

Populaire posts van deze blog

[SQL Server] varchar vs nvarchar

MS Sql 70-461: Chapter 5

[C#] Class serialiseren en deserialiseren