Programavimas

Kaip dirbti su našumo skaitikliais C #

„Windows“ stebi jūsų sistemoje vykstančius procesus ir paslaugas stebėdama šiuo metu vykdomas gijas, CLR atmintį ir pan. Jums dažnai reikės įvertinti kompiuterių sistemų ar jose veikiančių programų našumą į metriką, pavyzdžiui, apie išteklių sunaudojimą sistemoje, sistemoje veikiančias paslaugas ar prie sistemos prijungtų įrenginių našumą.

Našumo skaitikliai (pagal numatytuosius nustatymus teikiama funkcija) leidžia mums užfiksuoti, paskelbti ir išanalizuoti našumo duomenis, susijusius su viena ar daugiau sistemoje ar visoje sistemoje veikiančių programų ar paslaugų.

Kuriant programas dažnai gali tekti stebėti jos našumą (išteklių sunaudojimą ar naudojimą tam tikrą laiką) ir naudoti našumo duomenis, kad būtų galima nustatyti programos kliūtis. Štai kur naudingi pasirodymų skaitikliai. Taip pat galite naudoti WMI („Windows Management Instrumentation“), COM pagrindu veikiančią „Microsoft“ technologiją, kad gautumėte šią informaciją, tačiau našumo skaitikliai suteikia jums galimybę realiuoju laiku gauti išteklių sunaudojimo sistemoje statistiką vykdymo metu.

„Performance Monitor“ (įrankis, numatytas pagal numatytuosius nustatymus „Windows OS“) papildinys gali būti naudojamas našumo duomenims peržiūrėti realiuoju laiku. Norėdami paleisti šį įrankį, spustelėkite meniu Pradėti ir spustelėkite "Vykdyti". Tada įveskite „perfmon“ ir paspauskite „Enter“.

Pasirinktiniai našumo skaitikliai

Sukurti pasirinktinius našumo skaitiklius yra paprasta. Galite sukurti našumo skaitiklius naudodami „Server Explorer“. Pirmiausia turėsite sukurti našumo skaitiklio kategoriją ir tada sukurti vieną ar daugiau skaitiklių kaip tos kategorijos dalį.

Norėdami programiškai dirbti su našumo skaitikliais, galite naudoti klasę System.Diagnostics.PerformanceCounter. Turėsite sukurti „PerformanceCounter“ klasės egzempliorių ir tada nurodyti būtinas kiekvienos iš šių ypatybių reikšmes: „CategoryName“, „CounterName“, „MachineName“ ir „ReadOnly“.

Norėdami sukurti pasirinktinę našumo skaitiklio kategoriją, turėtumėte panaudoti „PerformanceCounterCategory“ klasės kūrimo metodą. Pavyzdžiui, šį kodo fragmentą galima naudoti kuriant tinkintą našumo skaitiklio kategoriją.

„PerformanceCounterCategory.Create“ („CustomPerformanceCounterCategoryName“, „CustomPerformanceCounterHelp“, „PerformanceCounterCategoryType.MultiInstance“,

"CustomPerformanceCounterName", "CustomPerformanceCounterHelp");

Šis kodo fragmentas parodo, kaip galite rodyti visas galimas našumo skaitiklių kategorijas.

statinis negaliojantis Pagrindinis ()

    {

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ();

foreach („PerformanceCounterCategory performanceCounterCategory in performanceCounterCategories“)

        {

Console.WriteLine (performanceCounterCategory.CategoryName);

        }

Pultas.Skaitykite ();

    }

Šis kodo fragmentas parodo, kaip galite gauti našumo skaitiklius, priklausančius kategorijai „Procesorius“.

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ()

.FirstOrDefault (kategorija => category.CategoryName == "Procesorius");

var performanceCounters = performanceCounterCategories.GetCounters ("_ Iš viso");

Norėdami skaityti tam tikros kategorijos našumo skaitiklį, turite naudoti „PerformanceCounter“ klasę. Atkreipkite dėmesį, kad „PerformanceCounter“ klasė yra „System.Diagnostics“ vardų srityje. Čia pateikiamas visas kodų sąrašas, rodantis, kaip galite rodyti visų „Procesoriaus“ kategorijai priklausančių našumo skaitiklių pavadinimus.

statinis negaliojantis Pagrindinis ()

    {

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ()

.FirstOrDefault (kategorija => category.CategoryName == "Procesorius");

var performanceCounters = performanceCounterCategories.GetCounters ("_ Iš viso");

Console.WriteLine ("Procesoriaus kategorijos našumo skaitiklių rodymas: - \ n");

foreach („PerformanceCounter performanceCounter in performanceCounters“)

        {

Console.WriteLine (performanceCounter.CounterName);

        }

Pultas.Skaitykite ();

    }

Taip pat galite sukurti pasirinktinį našumo skaitiklį ir įrašyti į juos duomenis. Norėdami tai padaryti, turėtumėte pasinaudoti „CounterCreationDataCollection“ ir „CounterCreationData“ klasių pranašumais.

String customCategory = "Tinkinto našumo skaitiklio kategorija";

jei (! PerformanceCounterCategory.Exists (customCategory))

{

CounterCreationDataCollection counterCreationDataCollection = new CounterCreationDataCollection ();

counterCreationDataCollection.Add (new CounterCreationData ("Skaitiklis 1", "Skaitiklio pavyzdys 1", "PerformanceCounterType.ElapsedTime");

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

counterCreationDataCollection.Add (new CounterCreationData ("Skaitiklis 3", "Skaitiklio pavyzdys 3", "PerformanceCounterType.SampleCounter");

PerformanceCounterCategory.Create (customCategory, "Tai tik pavyzdys", PerformanceCounterCategoryType.SingleInstance, counterCreationDataCollection);

}

Atminkite, kad patikrinta, ar patikrinta, ar jau yra sukurtas tinkinto našumo skaitiklis. Pasirinktinis našumo skaitiklis sukuriamas tik tuo atveju, jei jo nėra. Tada sukuriamas „CounterCreaionDataCollection“ egzempliorius. Naudojant „CounterCreationData“ klasę, prie kolekcijos pridedami nauji skaitikliai. Pridėjus reikiamus skaitiklius, klasėje „PerformanceCounterCategory“ reikia sukurti metodą „Sukurti“, kad būtų sukurta pasirinktinė našumo kategorija.

Atminkite, kad jūsų programa turėtų turėti reikiamus leidimus, kad galėtų pasiekti jums reikalingus našumo skaitiklius. Visada rekomenduočiau „Visual Studio IDE“ paleisti administratoriaus režimu. Našumo skaitikliai labai padeda analizuoti jūsų programų našumą - galite analizuoti našumo duomenis tuo metu, kai vykdoma jūsų programa.