Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
SPTDump est un outil en ligne de commande permettant d’inspecter les fichiers SPT (Sample Profile Trace) utilisés dans les flux de travail SpGO (Sample Profile-Guided Optimization). Utilisez-le pour afficher les métadonnées SPT et les exemples de données. Validez le contenu de trace avant la conversion vers SPD et résolvez les problèmes tels que les incompatibilités de version SPD.
Un fichier SPT contient des exemples d’événements de performances matérielles bruts collectés à partir d’une charge de travail d’application.
Syntax
SPTDump[options] sptfile
Paramètres
Options
Spécifiez les options suivantes pour SPTDump:
- /Tous Affichez l’intégralité du fichier SPT. Cette option est la valeur par défaut.
- /header Affiche l’en-tête du fichier SPT.
- /Progid ID de programme de sortie (GUID et âge pour chaque binaire).
- /strtab Sortie de la table de chaînes.
- /Événement Exemples d’événements de sortie.
- /Aide Affichez les informations d’aide.
sptfile
Chemin d’accès au fichier SPT à inspecter.
Remarques
Note
Démarrez cet outil à partir d’une invite de commandes Visual Studio développeur.
Permet SPTDump d’inspecter le contenu d’un fichier SPT (Sample Profile Trace).
SPTAggregate produit des fichiers SPT à partir des journaux de suivi des événements ETL collectés par xperf. Importez des fichiers SPT dans un fichier SPD (exemple de base de données de profil) à l’aide de SPDConvert.
Pour diagnostiquer une erreur « SPD version incompatible », utilisez /progid pour afficher le GUID et l’âge pour chaque fichier binaire du fichier SPT, puis comparez ces valeurs à celles du fichier SPD à l’aide de SPDDump /header.
Example
Cet exemple génère le contenu complet d’un fichier SPT :
SPTDump sample.spt
Cet exemple génère uniquement les ID de programme (GUID et âge) pour les fichiers binaires dans un fichier SPT :
SPTDump /progid sample.spt
Format d’en-tête SPT
Le fichier SPT est un format binaire avec un en-tête de 32 octets, une table de chaînes, une table d’ID de programme et un flux de données d’événement d’exemple. Ce document décrit la version 1 du format. Le champ de version est mis à jour si la disposition change à l’avenir.
L’en-tête SPT est de 32 octets :
-
[0x00-0x03]Signature (uint32 LE) = 0x5350543A (« SPT : ») -
[0x04-0x07]Version (uint32 LE) = 1 -
[0x08-0x0B]RawDataId (uint32 LE) = 0 (inutilisé/réservé) -
[0x0C-0x0F]TargetArch (uint32 LE) = 0 (inutilisé/réservé) -
[0x10-0x13]StringTableOffset (uint32 LE) = décalage vers la table de chaînes de noms binaires (généralement 0x20) -
[0x14-0x17]ProgramIdTableOffset (uint32 LE) = décalage jusqu’à la table RSDSKEY (généralement StringTableOffset+StringTableCapacity) -
[0x18-0x19]StringTableUsed (uint16 LE) = octets utilisés dans la table de chaînes -
[0x1A-0x1B]StringTableCapacity (uint16 LE) = octets alloués dans la table de chaînes (généralement 0x4000) -
[0x1C-0x1D]ProgramIdsUsed (uint16 LE) = nombre d’ID de programme (souvent seulement 1) -
[0x1E-0x1F]ProgramIdCapacity (uint16 LE) = capacité en nombre (et non en octets) pour les ID de programme (généralement 0x100)
La StringTable se trouve immédiatement après l’en-tête, au décalage spécifié. Il contient un nom de fichier binaire UTF-8 terminé par null.
ProgramIdTable suit le StringTable au décalage spécifié. Chaque entrée fait 24 octets : GUID RSDS (Rich Signature Data Stream) de 16 octets + âge de 4 octets + index de chaîne de 4 octets dans la table de chaînes StringTable.
Le flux de données commence à ProgramIdTableOffset + (ProgramIdCapacity * 24), et commence par un SPT_OP_BINARY_ID opcode.
SPT Opcodes
Dans les descriptions suivantes :
- RVA désigne l’adresse virtuelle relative sur 32 bits d’une instruction dans le fichier binaire, autrement dit, son décalage dans le module.
- LE signifie ordre d’octet petit-endian.
SPT_OP_REPEAT (0x82)
Répétez l’enregistrement suivant pour le nombre de fois spécifié. Un nombre répété de 2 signifie qu’il y a 3 enregistrements identiques au total. Le nombre de répétitions est réinitialisé après le traitement.
Format : 1 octet : opcode 0x82. 1 octet : remplissage. 8 octets : nombre de répétitions (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)
Format : 1 octet : opcode. 1 octet : nombre de RVA (N). 4N octets : N RVA (uint32 LE chacun)
Chaque RVA représente le nombre d’occurrences d’un échantillon IP, égal à 1 + nombre de répétitions.
SPT_OP_LBR (0x10)
Format : 1 octet : opcode 0x10. 1 octet : nombre d’événements (N). 8N octets : paires N LBR, chaque paire est : 4 octets : Vers RVA (uint32 LE), 4 octets : À partir de RVA (uint32 LE)
Chaque paire représente un arc de branchement dont le nombre d’exécutions = 1 + nombre de répétitions.
SPT_OP_ETW_CALLSTACK (0x42)
Structure : 1 octet : opcode 0x42. 1 octet : nombre de RVA (N). 4N octets : N RVAs (uint32 LE chacun, représentant des trames de pile).
Quand :
- N = 2 : deux RVA forment un arc de pile unique (RVA[0], RVA[1])
- N > 2 : Crée des arcs N-1 à partir de paires consécutives : (RVA[0]->RVA[1]), (RVA[1]->RVA[2]), ..., (RVA[N-2]->RVA[N-1]) Chaque série, qu’il s’agisse d’un seul arc ou d’une paire consécutive, a un nombre d’accès = 1 + nombre de répétitions.
SPT_OP_BINARY_ID (0x81)
Structure : 1 octet : opcode 0x81. 1 octet : remplissage. 2 octets : ID de programme (uint16 LE). 4 octets : longueur totale des données dans ce segment (uint32 LE).
Marque le début des enregistrements de données pour un binaire spécifique spécifié par un ID d’index. L’ID d’index renvoie à la RSDSKey et à la table de chaînes des noms binaires dans l’en-tête SPT.
La longueur des données inclut le champ de longueur de 4 octets lui-même. Cet opcode peut apparaître plusieurs fois dans un flux de données.
Voir aussi
Tutoriel : utilisez l’optimisation guidée par échantillonnage (SPGO) pour améliorer les performances
SPDConvert
SPDDump
SPTAggregate