Kezdőlap > Windows Performance Toolkit > Windows Performance Tools

Windows Performance Tools

2010. május 12. szerda Hozzászólás Go to comments

image A Windows Performance Tools (WPT) teljesítményfigyelő és analizáló alkalmazások gyűjteménye. Ezekkel az alkalmazásokkal a rendszer széleskörű diagnosztizálását végezhetjük. Például: alkalmazások- teljesítményének, erőforrásának felhasználását, boot időt illetve ezernyi más rendszerbeli dolgot mérhetünk a segítségével. Korábban ez a csomag külön telepítő készlettel rendelkezet, de ma már bekerült a Windows SDK-ba. Ezek a toolok alapvetően Windows Vistara /7-re illetve Windows Server 2008 (vagy későbbi) változatokra lett tervezve, de némi megszorítással Windows Xp-n illetve Windows Server 2003-on is használható. Architektúrálisan mind x86-ra mind x64-re illetve Itanium-ra is elérhető a toolkit. Maga az Xperf minimális tárterületet igényel, hisz a program alig 5 Mb. De a trace eredmény fájlok már elég nagyméretűek lehetnek. Nem ritkák 1-2 Gb trace fájlok sem. 1-2 perces mérésből 40-50 Mb-os Trace fájlok keletkeznek. Persze a fájlok mérete attól is függ, hogy mit és hogyan mérünk.

A toolkit az alábbi három alkalmazást tartalmazza.

Xperf

Mérést végzi. Trace adatokat összegzi és gyűjti. (Post-Process) Parancssoros felület.

Xperfview

A trace eredmények megjelenítésére alkalmas eszköz. Interaktív grafikonokkal és táblázatokkal segíti az eredmények megtekintését.

Xbootmgr

Boot-nál, illetve leállításnál méréseket és diagnosztizálásokat végezhetünk.

Kinek lehet hasznos ez a toolkit? Gyakorlatilag minden informatikával foglalkozó szakembernek. Rendszertervezőknek, rendszergazdáknak, driver- és általános alkalmazás fejlesztőknek egyaránt, hisz olyan széles spektrumú információs mennyiséget kérdezhetünk le a segítségével, amit eddig egyik segédprogram se kínált a számunkra.

Közelítsük meg az Xperfet egy példán keresztül úgy, hogy mi most általános célú alkalmazás fejlesztők vagyunk, és szükségünk van az általunk tervezett és használt rendszer teljesítmény mérésére. Hisz minden komolyabb alkalmazás fejlesztésének életciklusában eljön az idő, amikor le kell mérnünk az alkalmazásunk teljesítményét, illetve az alkalmazásunk által használt erőforrások felhasználásának mértékét. Meg kell néznünk azt, hogy milyen erőforrásokat milyen mértékben használ fel. Ezen információk feltárására lesz hasznos eszköz az Xperf és társai.

A következőekben ezekkel az eszközökkel fogunk megismerkedni, amelyekkel ezeket a méréseket, elemzéseket elvégezhetjük.

XPerf

Az XPerf egy univerzális teljesítménymérő rendszer, amely megmondhatja a számunkra, hogy jelenleg mi az, ami a gép erőforrásait használja, és milyen mértékben. Szinte nincs olyan erőforrás, amit ennek az eszköznek a segítségével ne tudnánk mérni.

A tool alapvetően ETW-t (Event Tracing for Windows) technológiát használ, aminek egyik legnagyobb előnye az, hogy minimális az overhead-je.  Kb. 1 500 – 2 000 óraütést igényel logonként. Ez 20 000 log esetén kb. egy sima 2 Ghz es processzor 2 % -át használja fel.

Az ETW lehetőséget biztosít arra, hogy mind a Windowsról mind az alkalmazásunk eseményeiről információkat gyűjtsünk. Az ETW összegyűjti a kernelhez érkező kéréseket, eseményeket majd az eredményt egy vagy több trace fájlban letárolja.

Amíg az adatok gyűjtése folyik az XPerf NEM fut alkalmazásként. Ilyenkor a Kernel maga gyűjti az adatokat. Az eredmény fájl elkészítése és vele együtt az analízis pedig a gyűjtés leállításakor következik be. Ezért is látható majd, hogy a leállításkor a mért adatok mennyiségétől függően a riportgenerálás akár több percig is eltarthat.

image

A riport egy .etl kiterjesztésű fájl. Amit a Xperfview (Performance Anlyzer) alkalmazással megjeleníthetünk. De a kimenetet egyszerűen importálhatjuk sima text fájlba is, így ha gondoljuk saját megjelenítőt is írhatunk ezen riportok feldolgozásához.

Telepítés

A Windows Performance Toolkit immár a Windows SDK része. Ahhoz, hogy a WPT-t telepítsük, először telepítenünk kell a Windows SDK-t. Az SDK ISO változatta innen, míg a web installer változata innen tölthető le.

Miután feltelepült az SDK-t, lépjünk be a C:Program FilesMicrosoft SDKsWindowsv7.0Bin könyvtárba. Itt keressük ki a wpt_***.msi fájlt. Ez 3 verzióban érhető el. Annak függvényében, hogy 32 bites (wpt_x86) 64 bites (wpt_x64) vagy itaniumra (wpt_ia64) akarjuk telepíteni a toolt.

(Windows Server 2008 esetében az SDKsWindowsv6.1Bin könyvtárban a rendszernek megfelelő jelzésű xpref msi telepítőt fogjuk megtalálni (xperf_x64.msi).)

Válasszuk ki a cél platformnak megfelelő msi-t és telepítsük fel.

A telepítés után a Program Files alatt megjelent a Microsoft Windows Performance Toolkit mappa, amely már tartalmazza az XPerfet és a többi program komponenst. Innentől kezdve már használhatjuk ezeket az eszközöket.

Telepítés Windows XP-re vagy Windows Server 2003-ra

Bár az Xperf nem kifejezetten XP-re vagy Windows Server 2003-ra lett tervezve, ettől függetlenül működik ezeken a rendszereken is. De vannak olyan opciók és funkciók, amit ezeken a rendszereken nem érhetőek el. Például a –stackwalk kapcsolót a Windows XP nem támogatja, mert a kernel ezt a funkciót nem tudja ellátni. Csak Windows Vistától használható a stackwalk funkció.

 Az ETW már Windows XP-n is elérhető volt, csak közel se tudott annyit, mint a mai rendszereken. Az ETW első változata Windows 2000-en volt elérhető.

Igen ám, de a telepítőt hiába másoljuk fel az XP-s gépre, nem lesz hajlandó telepíteni. Akkor mégis, hogy telepítsük?

Egyszerűen csak másoljuk át a Windows Vista/7 –es gépen feltelepítet Microsoft Windows Performance Toolkit mappából az Xperf.exe -t és a perfctrl.dll –t az Xp-s gépre és utána a megszokott módon végezzük el a méréseket.

image

 Miután megkaptunk az ETL eredmény fájlt, azt másoljuk fel egy Windows Vistára vagy egy Windows7es re ugyanis a kiértékelést csak ezeken a rendszereken valósítható meg.
Winodws XP-n, Windows Server 2003-on NEM!

 

Mérés

A mérés menete nagyon egyszerű, bár igaz, csak parancssoros felület áll a rendelkezésünkre.

A következő lépéseket:

1. Engedélyezzük az ETW tracinget xperf –fel vagy xbootmgr-rel (feladattól függően).

2. Hajtsuk végre a megfelelő szkenáriókat.

3. Állítsuk le az ETW tracinget xpref –fel vagy xbootmgr-rel, majd mentsük el a trace fájlt.

4. A keletkezett eredmény fájlt feldolgozhatjuk xperfview-rel. (vagy akár az xperf -fel is)

A tracelés megkezdéséhez az XPerf helpje sokat segíthet nekünk.

Xperf –help start

A méréshez kilistázhatjuk a kernel flageket is. Ezek segítségével meghatározhatjuk, hogy mit akarunk majd konkrétan mérni.

xperf –providers k

Az, hogy mit mérünk azt csoportokkal és/vagy flagekkel határozhatjuk meg. A csoportok több flagből állnak. A tracelés megkezdésénél megadhatjuk azt, hogy mire vagyunk kíváncsiak a mérés folyamén. Megadhatunk egyesével + jellel összekötve kernel flageket, de akár egybe hozzáadhatunk kernel csoportokat is. Ezekkel a kapcsolókkal határozzuk meg azt, hogy mi az, amit a mérés során figyeljen a rendszer.

Például ez a Kernel csoport

xperf –on DiagEasy+FILE_IO_INIT+REGISTRY

Az alábbi kernel flag kombinációval ekvivalens.

xperf –on LOADER+PROC_THREAD+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER+FILE_IO_INIT+REGISTRY

Ugyanis a DiagEasy kernel csoport az alábbi flageket tartalmazza:

PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER

Kernel flagek

PROC_THREAD –   Process and Thread create/delete

LOADER   –     Kernel and user mode Image Load/Unload events

PROFILE – CPU Sample profile

CSWITCH – Context Switch

COMPACT_CSWITCH – Compact Context Switch

DISPATCHER – CPU Scheduler

DPC – DPC Events

INTERRUPT – Interrupt events

SYSCALL – System calls

PRIORITY – Priority change events

ALPC – Advanced Local Procedure Call

PERF_COUNTER – Process Perf. Counters

DISK_IO  –  Disk I/O

DISK_IO_INIT – Disk I/O Initiation

FILE_IO   –   File system operation end times and results

FILE_IO_INIT – File system operation (create/open/close/read/write)

HARD_FAULTS – Hard Page Faults

FILENAME – FileName (e.g., FileName create/delete/rundown)

SPLIT_IO  – Split I/O

REGISTRY – Registry tracing

DRIVERS – Driver events

POWER – Power management events

NETWORKTRACE – Network events (e.g., tcp/udp send/receive)

VIRT_ALLOC  – Virtual allocation reserve and release

MEMINFO – Memory List Info

ALL_FAULTS – All page faults including hard, Copy on write, demand zero faults, etc

CPU_CONFIG  – NUMA topology, Processor Group and Processor Index to Number mapping. By default it is always enabled.

Kernel Csoportok

Azért, hogy ne kelljen mindig a kernel flageket felsorolni, vannak előre definiált csoportok is.

Base – PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+PROFILE+MEMINFO

Diag  – PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER+COMPACT_CSWITCH

DiagEasy – PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER

Latency – PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PROFILE

FileIO – PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+FILE_IO+FILE_IO_INIT

IOTrace – PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+CSWITCH

ResumeTrace – PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+PROFILE+POWER

SysProf – PROC_THREAD+LOADER+PROFILE

Network – PROC_THREAD+LOADER+NETWORKTRACE

Stackwalk

Talán az Xperf egyik legnagyobb ereje abban rejlik, hogy van egy úgynevezett stackwalk funkció, amivel megtekinthetjük, hogy a hívások milyen dll-t, komponenst használt fel az erőforrásokat. Sőt betekintést nyerhetünk abba is, hogy ezen dll-ek mely osztályai és metódusa lettek meghívva és milyen mértékben.  Ezt a funkciót nem mindegyik operációs rendszer támogatja. Az alábbi táblázat a támogatott rendszerek listáját mutatja be.

image

*Nem támogatja a manifest alapú ETW eseményeket
**A DisablePagingExecutive registry kulcsot be kell állítanunk, hogy 64 bites rendszeren a stackwalk funkció működjön.

Tehát az Xperf nem csak egy egyszerű teljesítménymonitorozó rendszer, mint mondjuk a Windowsban évek óta megismert Perfomance Counter. Hisz széleskörűen akár a dll-ek metódusaira lebontva meg tudjuk nézni, hogy milyen mértékben használják a gép erőforrásait.

Ahhoz, hogy 64 bites rendszeren használjuk a stakwalk funkciót a következő lépeseket kell végrehajtanunk.

1. Nyissuk meg a Registry Editort (regedit)

2. Navigáljunk el az alábbi elemhezimage

 HKLMSystemCurrentControlSetControlSession ManagerMemory Management

3. Majd állítsuk be a DiablePagingExecutive értékét 1 –re. (REG_DWORD)

4. Utolsó lépéskén indítsuk újra a rendszert. Az újraindítást követően pedig már használhatjuk a stackwalk funkciót 64-bites rendszerünkön.

Amennyiben a -stackwalk kapcsolót szeretnénk használni, mindenképp a Profile flaggel kapcsoljuk be, és amennyiben a Profile kernel flaggel monitorozunk, a –stackwalk lehetőség kihasználásával tegyük ezt.

A –stackwalk merőben más flag-ek használatát nyitja meg nekünk. Néhány flag megegyezik a hagyományos xperf kernel flag-gel, de mindenképp érdemes átböngészni az alábbi help-et.

image

Megjelenítés

Az XPerfView segédprogram a legyűjtött adatok megjelenítésért felelős. A segítségével megjeleníthetjük a legyűjtött adatok egy grafikus felületen. 

Az Xperf támogatja azt, hogy a legyűjtött adatokat szöveges formában kiexportálja. Így mi is bármikor írhatunk saját megjelenítőt, ha az XPerfView-er nem lenne számunkra megfelelő!

Az XPerfView megnyitása történhet parancssorból illetve akár a Start menüből is elindítható. Parancssorból az alábbi módon nyitható meg a segédprogram.

xperf file.etl

image

Az ablak bal oldalán található egy nyitó elem, amelynek a tartalma a Frame List. Ez az elem tartalmazza, az összes tartalmazza az összes elemet, amit megjeleníthetünk a riportban. Az, hogy milyen elemek jelennek meg ebben a listában az attól függ, hogy milyen flaggel vagy csoporttal mértünk.

Symbol Szerver beállítás

Mind az Xperf mind pedig a Perfomance Alanyzer támogatja szimbólumok (symbols) dekódolását. Ahhoz, hogy a szimbólumokat dekódoljuk szükségünk lesz a mind a saját programjaink mind az operációs rendszer illetve a többi alkalmazás PDB-jére. (Program Database File – Ez a fordító generálja) Ez mindaddig szép amíg saját alkalmazást figyelünk meg, de honnan szerezzük be a Microsoft PDB-ket? A Microsoftnak van egy online PDB szervere. Ahhoz, hogy ezt használjuk be kell állítani az _NT_SYMBOL_PATH környezetei változót. A PDB-ket nyújtó szerver az alábbi címen érhető el: http://msdl.microsoft.com/download/symbols

Ezt a beállítást elvégezhetjük parancssorból

set _NT_SYMCACHE_PATH=C:symbols
set _NT_SYMBOL_PATH=srv*c:symbols*http://msdl.microsoft.com/download/symbols;

vagy ha grafikus felhasználói felület hívei vagyunk a Rendszer Tulajdonságok (System Properties) ablakban.

 

image image

A C:symbols könyvtár természetesen tetszés szerint lecserélhetőbb De nézzünk az XPerf használatára egy konkrét példát.

image

Ekkor a UI felület meg fog fagyni. Háttérben ugyanis elkezdte letölteni a szerverről a PDB fájlokat. Ez eltarthat jó néhány percig.

Gyors mérés

Először nézzünk egy egyszerű mérést.

1. Nyissunk meg egy parancssort!

Start menü Programok -> Kellékek -> Parancssor Vagy Futtatás Cmd

Fontos! A parancssort Adminisztrátorként indítsuk!

2. A parancssorba írjuk be a következő parancsot

xperf –on DiagEasy

Ez a parancs bekapcsolja a Windows Kernel Esemény Providert.

3. Most pedig fordítsunk egy programot, böngésszünk 1-2 percig a neten, vagy végezzünk bármilyen látványosabb feladatott a gépen.

4. Ha a feladatunkat befejeztük, akkor állítsuk le a kernel logger-t, és az eredményt tegyük ki egy *.etl fájlba. (ezt hívjuk „STOP AND MERGE”-nek)

xperf –d build.etl

5. Most pedig nézzük meg az eredményt. Megnyithatjuk az XPerfView -errel is. De most parancssorból fogjuk ezt megtenni. Írjuk be az alábbi parancsot a parancssorba:

xperf trace.etl

6. Ekkor meg fog nyílni az XPerfView –er, és valami hasonló eredményt kapunk. Amit aztán jól kielemezhetünk.

image

A kielemzésnél nem mindig jelenik meg, s kifejezetten hasznos, ha a CPU Usage by Process grafikont is megjelnítjük, mert ezen mint a neve is mutatja, a futó alkalmazások alapján is  tudunk elemezgetni.

Érdemes kihasználni az XPerfView-nak a Zoom funkcióját, mellyel kinagyíthatjuk a számunkra érdekes részt. A kijelölést követően, ha kiadjuk a Zoom parancsot (Jobb egérgomb -> Zoom To Selection) nem csak az adott grafikonon nagyítja, hanem a kijelölésnek megfelelően az összes többit is…

Az Unzoom parancs nem egy lépcsőt ugrik vissza a nagyítási folyamatban, hanem visszaadja az egész grafikont.

Amennyiben a grafikonon jobb egérgombot nyomunk a gyorsmenüben elérhetjük a Summary Table-t melyen számos információra bukkanhatunk, többek között a futó folyamatokat listázza PID-el (Process ID) és itt tudunk leásni, hogy melyik process melyik dll-t és címet használta.

Grafikonok elemzése

A következő screenshot-on a Visual Studio 2010 telepítése közben láthatjuk a lemezkihasználtságot, és az svchost folyamat hibaejtésének következményeit mind a lemez kihasználtság, mind a CPU kihasználtság fényében.

image

Az alábbi mérést a network kernel csoporton végeztük. Itt csak két grafikont jelenít meg nekünk, de kiválóan megmutatja, hogy van lehetőségünk grafikonokat egymásra illeszteni a jobb egérgomb -> Overlay Graphs menüponttal.

image

A Summary Table sajátos tulajdonsága, hogy annak megfelelően generálódnak le az oszlopai, amelyik grafikonon aduk ki a parancsot. Ennek a táblázatnak a segítségével kirészletezhetjük az adatok.

image

Rendszerindítás és leállítás alatti mérések

Sok esetben előfordulhat, hogy az operációs rendszer leállítása és indulása alatt zajló folyamatok mikéntjét szeretnénk megismerni. Erre kiváló eszköze ennek a toolkit-nek a xbootmgr. Ha csak simán beírjuk a parancssorba és entert nyomunk, már akkor feldob egy egyszerűsített help-et. De nézzük csak, hogy zajlik egy ilyen mérés és utána mit várhatunk.

Xbootmgr –trace rebootCycle –noPrepReboot –traceFlags BASE+CSWITCH+DRIVERS+POWER+REGISTRY –resultPath c:

Az xperfnél a –on-al indítottuk a mérést, itt a –trace [trace típusa] paranccsal kezdünk. (A trace típusa lehet boot, hibernate, standby, shutdown és a fent alkalmazott rebootCycle)

Azt láthatjuk, hogy a Flagek-ből szinte ugyan azt használhatjuk, mint az xperf esetében annyi különbséggel, hogy itt egy –traceFlags kapcsoló után írjuk be.

A –resultPath a trace fálj (mérési eredmény) helyét adja meg. Ebben az esetben a cél helyen három fájlunk fog létrejönni. Két .etl fájl, egy shutdown (leállításkor mért eredményekkel)  és egy boot (rendszerindításkor). A boot alatt egy kabinet fájlt is létre hoz, melynek mérete 1 Kb.

A következő példánkban a Windows 7 boot folyamatának mérését láthatjuk (lemezkihasználtság, indított folyamatok, registry adatbázis műveletek).

A Driver Delays – folyamatok- grafikont reprezentáció véget kicsinyítettük, mivel ha teljesen kinyitjuk, az egész képernyőre nem fér rá.

image

Az xbootmgr-nél nem csak az Xperfview lehet segítségünkre, hanem maga az xperf is.

xperf -i „boot_base+cswitch­­+compact_cswitch_1.etl” –o boot_1.xml –a boot

Ezzel az xperf  az input fájlból (-i „filenév”) készít egy XML output fájlt

(-o filenév.xml). Ezen fájlt már bármilyen szövegszerkesztővel megnyithatjuk és kielemezhetjük.

image Bizonyos körülmények között előfordulhat, hogy xbootmgr használatánál a Windows 7 boot folyamat összeomlik, és kék halállal elszáll, majd az újra indítás követően a Windows felhozza a saját recovery programját és próbálja helyre hozni a boot folyamatokat. Ilyenkor az indítást csökkentet módban végezzük el, és parancssorban adjuk ki az xbootmgr –remove parancsot. Újraindítást követően visszakapjuk az operációs rendszerünket, és a célhelyeken megtaláljuk az .etl fájlokat is.

Trace fájlok összefűzése

Az Xperf lehetőséget biztosít arra, hogy kettő vagy több trace fájlt amit ugyan azon gépen mértünk összefűzzük egy nagy trace fájllá. Például mergeljük össze a MyApp.etl –t és a Kernel.etl fájlt egy nagy System.etl fájllá.

Xperf –merge MyApp.etl Kernel.etl System.etl

Útravaló

Az Xperf és vele telepített alkalmazás számos és számtalan lehetőséget biztosít számunkra. Ha egy probléma feltárását szeretnénk elvégezni, célszerű minden eszközt bevetni. (Tehát ha x64-es rendszeren vagyunk, akkor végezzük el a megfelelő módosítást a registry-ben.)

Amennyiben még nincs konkrét problémánk, hanem csak szeretnénk felkészülni a későbbiekben elfordulható problémákra („hisz az ember ha tudja előre mikor fog elesni, előtte leülne”) célszerű elővenni, végezni pár mérést és megismerni ezen eszközt, mivel nagyon széles körben alkalmazható, kifejezetten hasznos toolkit.

http://blogs.technet.com/askperf/archive/2008/06/27/an-intro-to-xperf.aspx

http://www.windowsitpro.com/article/performance/examining-xperf.aspx

http://blogs.msdn.com/ntdebugging/archive/2008/04/03/windows-performance-toolkit-xperf.aspx

http://www.sqlmag.com/article/performance/under-the-covers-with-xperf.aspx

Reklámok
  1. Még nincs hozzászólás.
  1. No trackbacks yet.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: