Sdílet prostřednictvím


Informace o čítačích výkonu

Čítače výkonu Systému Windows poskytují vrstvu abstrakce vysoké úrovně s konzistentním rozhraním pro shromažďování různých druhů systémových dat, jako jsou procesor, paměť a statistiky využití disků. Správci systému používají čítače výkonu k monitorování problémů s výkonem nebo chováním. Vývojáři softwaru používají čítače výkonu ke kontrole využití prostředků jejich komponent.

Důležitý

Čítače výkonu Systému Windows jsou optimalizované pro zjišťování a shromažďování diagnostických dat pro správu a diagnostiku. Nejsou vhodné pro shromažďování dat s vysokou frekvencí nebo pro profilaci aplikací, protože nejsou navrženy tak, aby se shromáždily více než jednou za sekundu. Pokud chcete získat přístup k informacím o systému s nižší režií, můžete preferovat přímější rozhraní API, jako jsoupomocníka stavu procesu, GlobalMemoryStatusEx, GetSystemTimesnebo GetProcessTimes. Pro profilaci můžete shromažďovat protokoly ETW s daty profilace systému pomocí tracelog.exe s -critsec, -dpcisr, -eflagnebo -ProfileSource možnostmi, nebo můžete použít profilaci čítačů hardwaru.

Poznámka

Nezaměňujte čítače výkonu systému Windows s API QueryPerformanceCounter. Čítače výkonu systému Windows poskytují abstrakci vysoké úrovně pro mnoho druhů systémových informací. Funkce QueryPerformanceCounter poskytuje optimalizovaný přístup k časovému razítku s vysokou přesností.

Začínáme

  • Používejte Nástroje pro sledování výkonu , když chcete shromažďovat nebo zobrazovat data o výkonu ze systému.
  • Použijte rozhraní API pro sběr dat z čítačů výkonu , když chcete napsat skript nebo program, který sbírá údaje o výkonu z místního systému.
  • Pokud chcete shromažďovat údaje o výkonu z místního nebo vzdáleného systému pomocí rozhraní WMI, použijte třídy čítačů výkonu rozhraní WMI.
  • Použijte rozhraní API poskytovatele čítačů výkonu , když chcete publikovat údaje o výkonu ze softwarové komponenty.

Koncepce

Systém Čítačů výkonu systému Windows je uspořádán do příjemců, poskytovatelů, sad čítačů, čítačů, instancía hodnot čítačů.

konzument je softwarová komponenta, která využívá výkonová data. Systém Windows obsahuje několik integrovaných nástrojů, které využívají data o výkonu. Patří mezi ně Správce úloh, Monitorování prostředků, Sledování výkonu, typeperf.exe, logman.exea relog.exe. Vývojáři můžou psát skripty a aplikace, které přistupují k čítačům výkonu prostřednictvím rozhraní API čítačů výkonu .

Poskytovatel je softwarová komponenta, která generuje a publikuje údaje o výkonu. Zprostředkovatel publikuje data pro jednu nebo více sad čítačů. Například databázový systém se může zaregistrovat jako poskytovatel dat o výkonu.

  • Poskytovatel V1 je softwarová komponenta, která publikuje data o výkonu prostřednictvím knihovny DLL výkonu, která běží v procesu příjemce. Zprostředkovatel V1 je nainstalován do systému prostřednictvím souboru .ini. Architektura zprostředkovatele V1 je zastaralá. Noví poskytovatelé by měli používat architekturu zprostředkovatele V2.
  • Poskytovatel V2 je softwarová komponenta, která publikuje údaje o výkonu prostřednictvím API poskytovatele čítačů výkonu . Zprostředkovatel V2 je nainstalován do systému prostřednictvím souboru .man (manifest XML).

sada čítačů je seskupení dat o výkonu v rámci poskytovatele. Sada čítačů má název a jeden nebo více čítačů . Shromažďování dat z čítačové sady vrátí řadu instancí. V některých rozhraních API systému Windows se sady čítačů nazývají objekty výkonu. Například poskytovatel výkonových dat pro databázový systém může poskytnout sadu čítačů pro statistiky jednotlivých databází.

čítač je definice jedné části dat o výkonu. Čítač má název a typ. Například sada čítačů pro "statistiky databáze" může zahrnovat čítač nazvaný "transakce za sekundu" s typem PERF_COUNTER_COUNTER.

Instance je entita, o které se hlásí data o výkonu. Instance má název (řetězec) a jednu nebo více hodnot čítačů . Například sada čítačů statistik pro jednotlivé databáze může obsahovat jednu instanci na databázi. Název instance by byl název databáze a každá instance by obsahovala hodnoty pro čítače "transakce za sekundu", "využití paměti" a "využití disku".

Hodnota čítače je hodnota jedné části dat čítače výkonu. Hodnota čítače je celé číslo bez znaménka, buď 32bitové, nebo 64bitové v závislosti na typu odpovídajícího čítače. Když mluvíme o instanci , hodnota čítače se někdy nazývá čítač nebo hodnota .

Spropitné

Může být užitečné spojit termíny čítačů výkonu se známými pojmy tabulek. Sada čítačů se podobá tabulce. čítač je jako sloupec. Instance je jako řádek. Hodnota čítače je podobná buňce v tabulce.

Sady čítačů s jednou instancí vždy obsahují data pouze pro jednu instanci. To je běžné u sad čítačů, které hlásí globální systémové statistiky. Například Windows má integrovanou čtečku s jednou instancí nazvanou "Paměť", která podává zprávy o globálním využití paměti.

sady čítačů s více instancemi obsahují data pro proměnný počet instancí. To je běžné u sad čítačů, které podávají zprávy o entitách v systému. Například Systém Windows má integrovanou sadu čítačů s více instancemi s názvem "Informace procesoru", která hlásí jednu instanci pro každý nainstalovaný procesor.

Uživatelé budou pravidelně shromažďovat a zaznamenávat data z čítače poskytovatele. Příjemce může například shromažďovat data jednou za sekundu nebo jednou za minutu. Shromážděná data se nazývají vzorek. Vzorek se skládá z časových razítek spolu s daty pro instance čítačové sady. Data pro každou instanci zahrnují název instance (řetězec) a sadu hodnot čítačů (celá čísla, jedna hodnota pro každý čítač v sadě čítačů).

Názvy instancí by měly být v rámci ukázky obvykle jedinečné, tj. poskytovatel by neměl vracet dvě instance se stejným názvem jako součást jedné ukázky. Někteří starší poskytovatelé toto pravidlo nedodržují, takže spotřebitelé musí být schopni tolerovat ne jedinečné názvy instancí. V názvech instancí se nerozlišují malá a velká písmena, takže instance by neměly mít názvy, které se liší pouze v případě.

Poznámka

Z důvodu zpětné kompatibility vrátí sada čítačů Process neunikátní názvy instancí na základě názvu souboru EXE. To může způsobit matoucí výsledky, zejména když se spustí nebo vypne proces s jiným jedinečným názvem, protože to obvykle způsobí chyby dat kvůli nesprávnému párování názvů instancí mezi ukázkami. Příjemci sady čítačů "Process" musí být schopni tolerovat tyto ne jedinečné názvy instancí a výsledné chyby dat. Ve Windows 11 a novějších můžete použít sadu čítačů Process V2 k vyhnutí se tomuto problému.

Názvy instancí musí být stabilní napříč ukázkami, tj. poskytovatel by měl při každém shromáždění sady čítačů použít stejný název instance pro stejnou entitu.

Každý čítač má typ. Typ čítače označuje typ nezpracované hodnoty čítače (32bitové celé číslo bez znaménka nebo 64bitové celé číslo bez znaménka). Typ čítače také označuje, co představuje nezpracovaná hodnota čítače, což určuje způsob zpracování nezpracované hodnoty za účelem generování užitečných statistik.

I když některé typy čítačů jsou jednoduché a mají nezpracovanou hodnotu, která je přímo užitečná, mnoho typů čítačů vyžaduje další zpracování k vytvoření užitečné formátované hodnoty. Aby bylo možné vytvořit formátovanou hodnotu, některé typy čítačů vyžadují nezpracované hodnoty ze dvou vzorků, některé typy čítačů vyžadují časové razítko a některé typy čítačů vyžadují nezpracované hodnoty z více čítačů. Například:

  • PERF_COUNTER_LARGE_RAWCOUNT je 64bitová nezpracovaná hodnota, která nevyžaduje zpracování, aby byla užitečná. Je vhodné pro hodnoty v daném okamžiku, jako jsou využívané bajty paměti.
  • PERF_COUNTER_RAWCOUNT_HEX je 32bitová nezpracovaná hodnota, která vyžaduje, aby bylo užitečné pouze jednoduché šestnáctkové formátování. Je vhodné pro určité časové okamžiky nebo identifikaci informací, jako jsou Příznaky nebo Základní Adresa.
  • PERF_COUNTER_BULK_COUNT je 64bitová nezpracovaná hodnota, která označuje počet událostí a slouží k výpočtu rychlosti výskytu událostí. Aby byl tento typ čítače užitečný, vyžaduje dva vzorky oddělené časem. Formátovaná hodnota je rychlost událostí, tj. počet výskytů události za sekundu v intervalu mezi dvěma vzorky. Vzhledem k dvěma vzorkům s0 a s1se formátovaná hodnota (rychlost událostí) vypočítá jako (s1.EventCount - s0.EventCount)/(s1.TimestampInSeconds - s0.TimestampInSeconds).

Očekává se, že poskytovatelé budou bezstavoví, tj. sbírání dat z množiny čítačů nemá mít viditelný vliv na stav poskytovatele. Zprostředkovatel by například neměl resetovat hodnoty čítačů na 0 při shromažďování čítačové sady a neměl by používat časové razítko předchozího shromažďování k úpravě hodnot v aktuálním souboru. Místo toho by měl poskytovat jednoduché hrubé hodnoty čítačů s přesnými typy, aby si uživatel mohl na základě těchto hrubých hodnot a jejich časových razítek spočítat užitečné statistiky.

Architektura rozhraní API pro měření výkonu

aplikace čítače výkonu vyvolávají rozhraní API systému Windows, která volají poskytovatele za účelem získání dat o výkonu.

Mezi uživatele čítače výkonu patří:

  • aplikace poskytované Microsoftem, jako je Správce úloh, Monitorování prostředků, Sledování výkonu a typeperf.exe.
  • Rozhraní vysokoúrovňové API poskytované Microsoftem, které zpřístupňuje data čítačů výkonu, jako jsou například výkonnostní třídy rozhraní WMI .
  • Vlastní aplikace nebo skripty, které používají API pro čítače výkonu .

Většina příjemců čítačů výkonu používá rozhraní API z PDH.dll ke shromažďování dat o výkonu. PDH spravuje mnoho složitých aspektů shromažďování čítačů výkonu, jako je analýza dotazů, párování instancí napříč několika vzorky a výpočty formátovaných hodnot z nezpracovaných dat čítačů. Implementace PDH používá rozhraní API registru při využívání dat zprostředkovatele V1 a používá rozhraní API příjemců V2 při využívání dat zprostředkovatele V2.

Někteří starší příjemci čítačů výkonu používají rozhraní API registru ke shromažďování údajů o výkonu ze speciálního klíče registru HKEY_PERFORMANCE_DATA. Tento kód se nedoporučuje, protože zpracování dat z registru je složité a náchylné k chybám. Implementace rozhraní API registru přímo podporuje shromažďování dat od poskytovatelů V1. Nepřímo podporuje shromažďování dat od poskytovatelů V2 prostřednictvím vrstvy překladu, která používá rozhraní API příjemců V2.

Někteří spotřebitelé čítačů výkonu používají funkce perfLib V2 Consumer pro přímý přístup k datům od poskytovatelů V2. Je to složitější než využití dat pomocí rozhraní PDH API, ale tento přístup může být užitečný v případě, že rozhraní PDH API nelze použít kvůli problémům s výkonem nebo závislostmi. Implementace PerfLib V2 přímo podporuje shromažďování dat od poskytovatelů V2. Nepodporuje shromažďování dat od poskytovatelů V1.

Poznámka

Windows OneCore nezahrnuje PDH.dll a nezahrnuje podporu využívání dat čítače výkonu prostřednictvím rozhraní API registru. Konzumenti běžící na OneCore musí používat funkce konzumenta PerfLib V2.

Poskytovatelé V1 se implementují jako knihovna DLL poskytovatele, která je načtena do procesu spotřebitele. Implementace API registru spravuje načítání DLL knihovny poskytovatele, volání knihovny DLL za účelem shromažďování údajů o výkonu a uvolňování DLL knihovny podle potřeby. Knihovna DLL zprostředkovatele zodpovídá za shromažďování údajů o výkonu podle potřeby, například pomocí normálních rozhraní API systému Windows, RPC, pojmenovaných kanálů, sdílené paměti nebo jiných komunikačních mechanismů meziprocesů.

Poskytovatelé V2 se implementují buď jako program v uživatelském režimu (často služba Windows), nebo jako ovladač režimu jádra. Kód zprostředkovatele dat výkonu je obvykle integrovaný přímo do existující komponenty (tj. ovladač nebo služba hlásí statistiky o sobě). Implementace PerfLib V2 spravuje požadavky a odpovědi prostřednictvím rozšíření jádra PCW.sys, takže poskytovatel obvykle nemusí implementovat žádnou komunikaci mezi procesy, aby poskytoval data o výkonu.

Poznámka

Rozhraní API a nástroje čítače výkonu Windows zahrnují omezenou podporu přístupu k čítačům výkonu z jiných počítačů prostřednictvím vzdáleného registru (pro poskytovatele V1) a RPC (pro poskytovatele V2). Tato podpora se často obtížně používá z hlediska ověřovacích ovládacích prvků (nástroje a rozhraní API se můžou ověřovat pouze jako aktuální uživatel) a také z hlediska konfigurace systému (nezbytné koncové body a služby jsou ve výchozím nastavení zakázané). V mnoha případech je lepší přistupovat k čítačům výkonu vzdálených systémů prostřednictvím rozhraní WMI, nikoli prostřednictvím integrované podpory vzdáleného přístupu.

Cílová skupina vývojářů

Čítače výkonu často využívají správci k identifikaci problémů s výkonem nebo neobvyklého chování systémů, aby vývojáři studovali využití prostředků softwarových komponent a jednotliví uživatelé, aby pochopili, jak se programy chovají v systému. Použití může nastat prostřednictvím nástrojů grafického uživatelského rozhraní, jako je Správce úloh nebo Monitorování výkonu, nástroje příkazového řádku, jako jsou typeperf.exe nebo logman.exe, prostřednictvím skriptování přes rozhraní WMI a PowerShell nebo prostřednictvím rozhraní C/C++ a rozhraní .NET API.

Poskytovatelé čítačů výkonu se obvykle implementují jako ovladače režimu jádra nebo služby uživatelského režimu. Čítače výkonu jsou obvykle napsané v jazyce C nebo C++.

Požadavky běhového prostředí

Informace o požadavcích na běh pro konkrétní programovací prvek naleznete v části Požadavky referenční stránky pro daný prvek.

Historii verzí najdete v tématu Novinky.

Viz také

Používání čítačů výkonu

Referenční čítačů výkonu