Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
SPTDump egy parancssori eszköz a mintaprofilkövetési (SPT) fájlok vizsgálatához, amelyeket a mintaprofil-vezérelt optimalizálási (SPGO) munkafolyamatokban használnak. Használatával megtekintheti az SPT metaadatait és a mintaadatokat. Ellenőrizze a nyomkövetési tartalmakat az SPD-re való átalakítás előtt, és elhárítsa az olyan problémákat, mint az SPD-verzióeltérések.
Az SPT-fájlok nyers hardverteljesítmény-mintaeseményeket tartalmaznak, amelyeket egy alkalmazás számítási feladatából gyűjtenek össze.
Szemantika
SPTDump[beállítások] sptfile
Paraméterek
beállítások
A következő beállításokat adja meg a(z) SPTDump számára:
- /all Kiírja a teljes SPT-fájlt. Ez az alapértelmezett beállítás.
- /Fejléc Adja ki az SPT-fájlfejlécet.
- /Progid Kimeneti programazonosítók (GUID és kor minden binárishoz).
- /strtab Kiírja a karakterlánc-táblát.
- /Esemény Kimeneti mintaesemények.
- /segítség Súgóinformációk megjelenítése.
sptfile
A vizsgálandó SPT-fájl elérési útja.
Remarks
Note
Indítsa el ezt az eszközt egy Visual Studio fejlesztői parancssorból.
A mintaprofil-nyomkövetési (SPT-) fájl tartalmának vizsgálatára használható SPTDump .
Az SPTAggregate SPT-fájlokat hoz létre az általuk gyűjtött ETL eseménykövetési xperfnaplókból. SPT-fájlokat importál egy SPD-fájlba (mintaprofil-adatbázisba) az SPDConvert használatával.
Az "SPD-verzió nem kompatibilis" hiba diagnosztizálásához használja /progid az SPT-fájlban lévő egyes bináris fájlok GUID-azonosítójának és korának megjelenítéséhez, majd hasonlítsa össze ezeket az értékeket az SPD-fájllal a használatával SPDDump /header.
Example
Ez a példa egy SPT-fájl teljes tartalmát adja ki:
SPTDump sample.spt
Ez a példa csak az SPT-fájl bináris fájljaihoz tartozó programazonosítókat (GUID és kor) adja ki:
SPTDump /progid sample.spt
SPT-fejlécformátum
Az SPT-fájl egy bináris formátum, amely 32 bájtos fejlécet, sztringtáblát, programazonosító táblát és mintaesemény-adatfolyamot tartalmaz. Ez a dokumentum a formátum 1. verzióját ismerteti. A verzió mező frissül, ha az elrendezés a jövőben megváltozik.
Az SPT-fejléc 32 bájt:
-
[0x00-0x03]Aláírás (uint32 LE) = 0x5350543A ("SPT:") -
[0x04-0x07]Verzió (uint32 LE) = 1 -
[0x08-0x0B]RawDataId (uint32 LE) = 0 (nem használt/fenntartott) -
[0x0C-0x0F]TargetArch (uint32 LE) = 0 (nem használt/fenntartott) -
[0x10-0x13]StringTableOffset (uint32 LE) = eltolás a bináris név karakterlánc-táblájához (általában 0x20) -
[0x14-0x17]ProgramIdTableOffset (uint32 LE) = eltolás az RSDSKEY táblához (jellemzően StringTableOffset+StringTableCapacity) -
[0x18-0x19]StringTableUsed (uint16 LE) = a sztringtáblában használt bájtok száma -
[0x1A-0x1B]StringTableCapacity (uint16 LE) = a sztringtáblában lefoglalt bájtok (általában 0x4000) -
[0x1C-0x1D]ProgramIdsUsed (uint16 LE) = a programazonosítók száma (gyakran csak 1) -
[0x1E-0x1F]ProgramIdCapacity (uint16 LE) = a programazonosítók kapacitása darabszámban (nem bájtokban) (általában 0x100)
A StringTable azonnal követi a fejlécet a megadott eltolásnál. Nullával lezárt UTF-8 kódolású bináris fájlnevet tartalmaz.
A ProgramIdTable a megadott offsetnél a StringTable után következik. Minden bejegyzés 24 bájt: 16 bájtos Rich Signature Data Stream (RSDS) GUID + 4 bájtos age mező + 4 bájtos, a StringTable-be mutató karakterláncindex.
Az adatfolyam ekkor ProgramIdTableOffset + (ProgramIdCapacity * 24)kezdődik, és egy SPT_OP_BINARY_ID opcode-val kezdődik.
SPT műveleti kódok
Az alábbi leírásokban:
- Az RVA azt jelenti, hogy egy utasítás 32 bites relatív virtuális címe a binárisban, vagyis eltolás a modulban.
- A LE kis végű bájtsorrendet jelent.
SPT_OP_REPEAT (0x82)
Ismételje meg a következő rekordot a megadott számú alkalommal. A 2 ismétlési szám azt jelenti, hogy összesen 3 azonos rekord van. Az ismétlésszám a feldolgozása után visszaáll.
Elrendezés: 1 bájt: opcode 0x82. 1 bájt: kitöltés. 8 bájt: ismétlések száma (uint64 LE)
SPT_OP_UNHALT_CYCLE, SPT_OP_RETIRE_INSTR, SPT_OP_RETIRE_BR_INSTR, SPT_OP_L1_ICACHE_MISS, SPT_OP_L1_DCACHE_MISSSPT_OP_ETW_INSTR (0x01, 0x02, 0x03, 0x04, 0x05, 0x41)
Elrendezés: 1 bájt: műveleti kód. 1 bájt: RVA-szám (N). 4N bájt: N RVA (uint32 LE mindegyik)
Minden RVA egy IP-minta találatszámát jelenti, ahol a találatszám = 1 + ismétlésszám.
SPT_OP_LBR (0x10)
Elrendezés: 1 bájt: opcode 0x10. 1 bájt: eseményszám (N). 8N bájt: N LBR-pár, mindegyik pár a következőkből áll: 4 bájt: cél-RVA (uint32 LE), 4 bájt: forrás-RVA (uint32 LE)
Minden pár egy elágazási ívet jelöl, amelynek találatszáma = 1 + ismétlésszám.
SPT_OP_ETW_CALLSTACK (0x42)
Elrendezés: 1 bájt: opcode 0x42. 1 bájt: RVA-szám (N). 4N bájt: N RVA(uint32 LE mindegyik, veremkereteket jelöl).
Időpont:
- N = 2: Két RVA egyetlen veremívet alkot (RVA[0], RVA[1])
- N > 2: N-1 íveket hoz létre egymást követő párokból: (RVA[0]->RVA[1]), (RVA[1]->RVA[2]), ..., (RVA[N-2]->RVA[N-1]) Minden sorozat, akár egyetlen ívről, akár egymást követő párról van szó, a találatok száma = 1 + ismétlésszám.
SPT_OP_BINARY_ID (0x81)
Elrendezés: 1 bájt: opcode 0x81. 1 bájt: kitöltés. 2 bájt: programazonosító (uint16 LE). 4 bájt: teljes adathossz ebben a szegmensben (uint32 LE).
Az indexazonosító által megadott adott bináris adatrekordok kezdetét jelöli. Az indexazonosító visszautal az SPT-fejlécben található RSDSKey-re és a binárisnév-karakterlánctáblára.
Az adathossz magában foglalja magát a 4 bájt hosszúságú mezőt. Ez az opcode többször is előfordulhat egy adatfolyamban.
Lásd még
Oktatóanyag: A mintavételes profilvezérelt optimalizálás (SPGO) használata a teljesítmény javításához
SPDConvert
SPDDump
SPTAggregate