Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
SPTDump is een opdrachtregelprogramma voor het inspecteren van SPT-bestanden (Sample Profile Trace) die worden gebruikt in SPGO-werkstromen (Sample Profile-Guided Optimization). Gebruik deze om SPT-metagegevens en voorbeeldgegevens weer te geven. Valideer traceringsinhoud vóór conversie naar SPD en los problemen op, zoals niet-overeenkomende SPD-versies.
Een SPT-bestand bevat onbewerkte voorbeeldgebeurtenissen voor hardwareprestaties die zijn verzameld uit een toepassingsworkload.
Syntax
SPTDump[opties] sptfile
Parameters
Opties
Geef de volgende opties op voor SPTDump:
- /Alle Voer het hele SPT-bestand uit. Dit is de standaardoptie.
- /Header Voer de SPT-bestandsheader uit.
- /Progid Uitvoerprogramma-id's (GUID en leeftijd voor elk binair bestand).
- /strtab Voer de tekenreekstabel uit.
- /Gebeurtenis Voorbeeldgebeurtenissen uitvoeren.
- /Help Help-informatie weergeven.
sptfile
Het pad naar het SPT-bestand dat moet worden gecontroleerd.
Opmerkingen
Note
Start dit hulpprogramma vanaf een Visual Studio opdrachtprompt voor ontwikkelaars.
Hiermee SPTDump inspecteert u de inhoud van een SPT-bestand (Sample Profile Trace).
SPTAggregate genereert SPT-bestanden uit ETL-logboeken met gebeurtenistraceringen die zijn verzameld door xperf. Importeer SPT-bestanden in een SPD-bestand (Sample Profile Database) met behulp van SPDConvert.
Als u een fout met de melding 'SPD-versie incompatibel' wilt diagnosticeren, gebruikt u /progid om de GUID en leeftijd van elk binair bestand in het SPT-bestand weer te geven en vergelijkt u die waarden vervolgens met het SPD-bestand met behulp van SPDDump /header.
Example
In dit voorbeeld wordt de volledige inhoud van een SPT-bestand uitgevoerd:
SPTDump sample.spt
In dit voorbeeld worden alleen de programma-id's (GUID en leeftijd) uitgevoerd voor binaire bestanden in een SPT-bestand:
SPTDump /progid sample.spt
SPT-headerindeling
Het SPT-bestand is een binaire indeling met een header van 32 byte, een stringtabel, een programma-id-tabel en een gegevensstroom van samplegebeurtenissen. In dit document wordt versie 1 van de indeling beschreven. Het versieveld wordt bijgewerkt als de indeling in de toekomst verandert.
De SPT-koptekst is 32 bytes:
-
[0x00-0x03]Handtekening (uint32 LE) = 0x5350543A ("SPT:") -
[0x04-0x07]Versie (uint32 LE) = 1 -
[0x08-0x0B]RawDataId (uint32 LE) = 0 (ongebruikt/gereserveerd) -
[0x0C-0x0F]TargetArch (uint32 LE) = 0 (ongebruikt/gereserveerd) -
[0x10-0x13]StringTableOffset (uint32 LE) = verschuiving naar tabel met binaire naamtekenreeks (meestal 0x20) -
[0x14-0x17]ProgramIdTableOffset (uint32 LE) = offset van de RSDSKEY-tabel (meestal StringTableOffset+StringTableCapacity) -
[0x18-0x19]StringTableUsed (uint16 LE) = aantal gebruikte bytes in de stringtabel -
[0x1A-0x1B]StringTableCapacity (uint16 LE) = bytes gereserveerd voor de stringtabel (meestal 0x4000) -
[0x1C-0x1D]ProgramIdsUsed (uint16 LE) = aantal programma-id's (vaak slechts 1) -
[0x1E-0x1F]ProgramIdCapacity (uint16 LE) = capaciteit in aantal (geen bytes) voor programma-id's (meestal 0x100)
De StringTable volgt direct op de header bij de opgegeven offset. Het bevat een door null beëindigde UTF-8 binaire bestandsnaam.
De ProgramIdTable volgt op de StringTable bij de opgegeven offset. Elke vermelding is 24 bytes: 16-byte Rich Signature Data Stream (RSDS)-GUID + 4-byte ouderdom + 4-byte stringindex naar StringTable.
De gegevensstroom begint bij ProgramIdTableOffset + (ProgramIdCapacity * 24)en begint met een SPT_OP_BINARY_ID opcode.
SPT Opcodes
In de volgende beschrijvingen:
- RVA betekent het 32-bits relatieve virtuele adres van een instructie in het binaire bestand, dat wil zeggen dat het in de module wordt verschoven.
- LE betekent de little-endian-bytevolgorde.
SPT_OP_REPEAT (0x82)
Herhaal het volgende record het opgegeven aantal keer. Een herhalingsaantal van 2 betekent dat er in totaal 3 identieke records zijn. Het aantal herhalingen wordt opnieuw ingesteld na verwerking.
Indeling: 1 byte: opcode 0x82. 1 byte: opvulling. 8 bytes: aantal herhalingen (uint64 LE)
SPT_OP_UNHALT_CYCLE, SPT_OP_RETIRE_INSTR, SPT_OP_RETIRE_BR_INSTR, SPT_OP_L1_ICACHE_MISS, SPT_OP_L1_DCACHE_MISS, SPT_OP_ETW_INSTR (0x01, 0x02, 0x03, 0x04, 0x05, 0x41)
Indeling: 1 byte: opcode. 1 byte: aantal RVA's (N). 4N bytes: N RVAs (uint32 LE elk)
Elke RVA vertegenwoordigt een IP-sampletrefferaantal = 1 + herhalingsaantal.
SPT_OP_LBR (0x10)
Indeling: 1 byte: opcode 0x10. 1 byte: aantal gebeurtenissen (N). 8N bytes: N LBR-paren, elk paar bestaat uit: 4 bytes: Naar RVA (uint32 LE), 4 bytes: Van RVA (uint32 LE)
Elk paar vertegenwoordigt een vertakkingsboog met het aantal treffers = 1 + aantal herhalingen.
SPT_OP_ETW_CALLSTACK (0x42)
Indeling: 1 byte: opcode 0x42. 1 byte: aantal RVA's (N). 4N bytes: N RVA's (uint32 LE elk, die stackframes vertegenwoordigen).
Wanneer:
- N = 2: Twee RVA's vormen één stapelboog (RVA[0], RVA[1])
- N > 2: Maakt N-1 boogs van opeenvolgende paren: (RVA[0]->RVA[1]), (RVA[1]->RVA[2]), ..., (RVA[N-2]->RVA[N-1]) Elke reeks, ongeacht of het een enkele boog of opeenvolgende paren is, heeft hit count = 1 + repeat count.
SPT_OP_BINARY_ID (0x81)
Indeling: 1 byte: opcode 0x81. 1 byte: opvulling. 2 bytes: programma-id (uint16 LE). 4 bytes: totale gegevenslengte in dit segment (uint32 LE).
Hiermee markeert u het begin van gegevensrecords voor een specifiek binair bestand dat is opgegeven door een index-id. De index-ID verwijst terug naar RSDSKey en de tekenreekstabel met binaire namen in de SPT-header.
De gegevenslengte omvat het lengteveld van 4 bytes zelf. Deze opcode kan meerdere keren voorkomen in een gegevensstroom.
Zie ook
Zelfstudie: Voorbeeld Profile-Guided Optimization (SPGO) gebruiken om de prestaties te verbeteren
SPDConvert
SPDDump
SPTAggregate