Programování

Jak pracovat s čítači výkonu v C #

Windows sleduje procesy a služby, které běží ve vašem systému, sledováním podprocesů, které jsou aktuálně ve spuštění, paměti CLR atd. Často byste potřebovali měřit výkon počítačových systémů nebo aplikací na nich spuštěných podle na metriky, jako je spotřeba zdrojů v systému, služby spuštěné v systému nebo výkon zařízení připojených k systému.

Čítače výkonu (funkce poskytovaná ve výchozím nastavení) nám umožňují zachytit, publikovat a analyzovat údaje o výkonu týkající se jedné nebo více aplikací nebo služeb spuštěných v systému nebo v systému jako celku.

Při vytváření aplikací možná budete muset sledovat jeho výkon (spotřebu prostředků nebo využití po určitou dobu) a pomocí údajů o výkonu identifikovat úzká místa v aplikaci. Zde se hodí čítače výkonu. K načtení těchto podrobností můžete také použít WMI (Windows Management Instrumentation), technologii Microsoftu založenou na modelu COM, ale čítače výkonu vám poskytnou způsob, jak v reálném čase získat statistiky spotřeby prostředků ve vašem systému za běhu.

Modul snap-in Monitor výkonu (nástroj poskytovaný ve výchozím nastavení v systému Windows OS) lze použít k zobrazení údajů o výkonu v reálném čase. Chcete-li spustit tento nástroj, klikněte na nabídku Start a poté na „Spustit“. Dále zadejte „perfmon“ a stiskněte klávesu Enter.

Vlastní čítače výkonu

Vytváření vlastních čítačů výkonu je jednoduché. Čítače výkonu můžete vytvořit pomocí Průzkumníka serveru. Nejprve budete muset vytvořit kategorii čítače výkonu a poté vytvořit jeden nebo více čítačů jako součást této kategorie.

Chcete-li programově pracovat s čítači výkonu, můžete použít třídu System.Diagnostics.PerformanceCounter. Budete muset vytvořit instanci třídy PerformanceCounter třídy a poté zadat potřebné hodnoty pro každou z těchto vlastností: CategoryName, CounterName, MachineName a ReadOnly.

Chcete-li vytvořit vlastní kategorii čítače výkonu, budete muset využít metodu Create třídy PerformanceCounterCategory. Následující fragment kódu lze například použít k vytvoření vlastní kategorie čítače výkonu.

PerformanceCounterCategory.Create ("CustomPerformanceCounterCategoryName", "CustomPerformanceCounterHelp", PerformanceCounterCategoryType.MultiInstance,

"CustomPerformanceCounterName", "CustomPerformanceCounterHelp");

Následující fragment kódu ukazuje, jak můžete zobrazit všechny dostupné kategorie čítače výkonu.

static void Main ()

    {

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ();

foreach (PerformanceCounterCategory performanceCounterCategory v performanceCounterCategories)

        {

Console.WriteLine (performanceCounterCategory.CategoryName);

        }

Console.Read ();

    }

Následující fragment kódu ukazuje, jak můžete načíst čítače výkonu, které patří do kategorie „Procesor“.

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ()

.FirstOrDefault (category => category.CategoryName == "procesor");

var performanceCounters = performanceCounterCategories.GetCounters ("_ celkem");

Ke čtení čítače výkonu patřícího do konkrétní kategorie musíte použít třídu PerformanceCounter. Všimněte si, že třída PerformanceCounter je k dispozici v oboru názvů System.Diagnostics. Tady je kompletní seznam kódů, který ukazuje, jak můžete zobrazit názvy čítačů výkonu všech čítačů výkonu, které patří do kategorie „Procesor“.

static void Main ()

    {

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ()

.FirstOrDefault (category => category.CategoryName == "procesor");

var performanceCounters = performanceCounterCategories.GetCounters ("_ celkem");

Console.WriteLine ("Zobrazení čítačů výkonu pro kategorii procesorů: - \ n");

foreach (PerformanceCounter performanceCounter v performanceCounters)

        {

Console.WriteLine (performanceCounter.CounterName);

        }

Console.Read ();

    }

Můžete také vytvořit vlastní čítač výkonu a zapisovat do nich data. Chcete-li to provést, měli byste využít výhod tříd CounterCreationDataCollection a CounterCreationData.

String customCategory = "Vlastní kategorie čítače výkonu";

if (! PerformanceCounterCategory.Exists (customCategory))

{

CounterCreationDataCollection counterCreationDataCollection = nový CounterCreationDataCollection ();

counterCreationDataCollection.Add (new CounterCreationData ("Counter 1", "Sample Counter 1", PerformanceCounterType.ElapsedTime));

counterCreationDataCollection.Add (new CounterCreationData ("Counter 2", "Sample Counter 2", PerformanceCounterType.SampleCounter));

counterCreationDataCollection.Add (new CounterCreationData ("Counter 3", "Sample Counter 3", PerformanceCounterType.SampleCounter));

PerformanceCounterCategory.Create (customCategory, "This is just an example", PerformanceCounterCategoryType.SingleInstance, counterCreationDataCollection);

}

Všimněte si, že je-li provedena kontrola k ověření, zda vlastní čítač výkonu, který má být vytvořen, již existuje. Vlastní čítač výkonu je vytvořen, pouze pokud neexistuje. Dále se vytvoří instance CounterCreaionDataCollection. Pomocí třídy CounterCreationData jsou do kolekce přidány nové čítače. Po přidání potřebných čítačů se zavolá metoda Create třídy PerformanceCounterCategory k vytvoření vlastní kategorie výkonu.

Všimněte si, že vaše aplikace by měla mít potřebná oprávnění pro přístup k požadovaným čítačům výkonu. Vždy bych doporučil spustit Visual Studio IDE v režimu správce. Čítače výkonu hodně pomáhají analyzovat výkon vašich aplikací - můžete analyzovat údaje o výkonu v době, kdy je vaše aplikace ve spuštění.