SPDConvert

Utilize SPDConvert para preparar e gerir dados de perfil de amostras para a Otimização guiada por perfis de amostras (SPGO).

Esta ferramenta correlaciona as amostras de hardware brutas nos ficheiros SPT com a estrutura de código no SPD. Esta etapa realiza decisões de correlação de amostras, suavização de fluxo e tamanho/velocidade, e produz um ficheiro SPD enriquecido com contagens de execuções anotadas no gráfico de fluxo.

Pode combinar dados de múltiplas fontes, como benchmarks laboratoriais, monitorização interna e telemetria de produção, numa única conversão. Para enfatizar a importância de um determinado cenário, pode especificar o respetivo ficheiro SPT várias vezes. Indicar três vezes um benchmark crítico SPT triplica efetivamente a sua ponderação.

Esta ferramenta opera em três modos:

  • importar dados .SPT para um ficheiro .SPD para compilações /SPGO
  • extrair um ficheiro .SPD incorporado de um ficheiro .PDB
  • combinar vários ficheiros .SPD de execuções de criação de perfil separadas

SPDConvert Funciona com três tipos de ficheiros:

  • ETL (Event Trace Log) Eventos brutos de desempenho de hardware registados por xperf
  • SPT (Sample Profile Trace) Eventos de exemplo em pacote produzidos por SPTAggregate a partir de ficheiros ETL
  • SPD (Sample Profile Database) Processava dados de perfil usados pelo compilador durante uma compilação otimizada. Também podes incorporar ficheiros SPD em ficheiros de símbolos PDB durante uma /spdembed build

Syntax

Importar dados SPT para um ficheiro SPD existente:

SPDConvert [opções] Spdfilesptfile(s)

Extrair um ficheiro SPD embutido de um PDB:

SPDConvert /extractpdbfilespdfile

Junte vários ficheiros SPD num só:

SPDConvert /mergeoutputspdfilespdfile(s)

Parâmetros

MODO DE IMPORTAÇÃO

Opções
Especifique as seguintes opções no modo de importação:

  • /modo:<IP|LBR> Seleciona o modo perfil. Utilize IP para dados de criação de perfil do ponteiro de instrução (por defeito) ou LBR para dados de criação de perfil do registo do último desvio.
  • /reset: Reinicia a contagem para 0. Esta ação ignora os SPTs. Use esta opção para reiniciar um ficheiro SPD antes de importar novos dados, ou para criar um ficheiro SPD vazio se o ficheiro especificado não existir.
  • /sptlist:<ficheiro> Especifique nomes de ficheiros SPT num ficheiro de texto, com um nome de ficheiro por linha.
  • /resumo Imprima um resumo do ficheiro SPD.
  • /ajuda Mostre informações de ajuda.

spdfile
O ficheiro SPD para importar dados de amostra.

sptfiles
Um ou mais ficheiros SPT para importar. Os ficheiros SPT são produzidos pelo SPTAggregate.

MODO DE EXTRAÇÃO (/EXTRACT)

pdbfile
O ficheiro PDB que contém um SPD incorporado.

spdfile
O ficheiro SPD de saída a criar.

MODO DE FUSÃO (/MERGE)

outputspdfile
O ficheiro SPD de saída a criar.

/retire:<N> Defina a taxa de retirada dos dados do perfil para N/16, em que 0 ≤ N ≤ 16. O padrão é 8. Este valor controla quanto dos dados existentes num SPD deve ser eliminado ao adicionar novos dados SPT. Por exemplo, /retire:8 elimina 8/16 (metade) dos dados existentes antes de adicionar novos dados de SPT. Esta definição valoriza mais os dados de perfil mais recentes porque descarta metade dos dados mais antigos. As duas utilizações mais comuns são /retire:0, que dá o mesmo peso a todas as execuções do perfil, ou /retire:16, para que apenas os dados mais recentes contem, porque apaga todos os dados antigos. Utilize /retire:N para controlar quão agressivamente SPDConvert atribui menos importância a dados de perfil mais antigos. Este conceito de "carry forward" permite atualizar um perfil usando dados SPD existentes sem começar de novo com novos dados de perfil, o que consome muito tempo. Este conceito é discutido mais no tutorial SPGO - Reutilização de informação SPD entre builds.

spdfiles
Um ou mais ficheiros SPD para fundir.

Remarks

Note

Execute esta ferramenta a partir de um prompt de comandos para programador do Visual Studio.

SPDConvert é a principal ferramenta de conversão no fluxo de trabalho SPGO. Após recolher um traço usando xperf e convertendo-o num ficheiro SPT usando SPTAggregate, use SPDConvert para importar os dados da amostra para um ficheiro SPD. Passe o ficheiro SPD resultante para o compilador usando a /SPGO flag para construir um binário otimizado.

Use /extract para recuperar um ficheiro SPD que estava embutido num PDB durante uma /SPGO compilação. Utilize /merge para combinar ficheiros SPD de várias sessões de criação de perfis antes de reconstruir.

O GUID e a idade de um binário devem coincidir entre os ficheiros SPT e SPD. Se não coincidirem, SPDConvert reporta um erro de "versão SPD incompatível". SPTDump /progid Use para verificar os identificadores binários no ficheiro SPT e SPDDump /header para verificar o ficheiro SPD.

O GUID e a idade do binário registado no ficheiro SPD devem corresponder ao ficheiro SPT. Para diagnosticar este erro, utilize-se SPTDump /progid para inspecionar os identificadores binários no ficheiro SPT e SPDDump /header para inspecionar o ficheiro SPD. Um ficheiro SPD válido é usado na medida do possível. Pequenas atualizações ao código que não alteram o fluxo de controlo do programa são toleradas. As funções inalteradas também utilizam os dados para otimização. Se fornecer um SPD válido, mas que, de resto, não esteja relacionado, o processo funciona, mas provavelmente nenhum dado pode ser utilizado para otimização.

Example

Este exemplo importa dados de perfil LBR de um ficheiro SPT para um ficheiro SPD:

SPDConvert /mode:LBR sample.spd sample.spt

Este exemplo importa dados de perfil IP utilizando uma lista de ficheiros SPT:

SPDConvert /mode:IP /sptlist:mysptfiles.txt sample.spd

Este exemplo imprime um resumo dos dados do perfil num ficheiro SPD:

SPDConvert /summary sample.spd

Este exemplo extrai o SPD embutido de um ficheiro PDB:

SPDConvert /extract sample.pdb sample_extracted.spd

Este exemplo combina dois ficheiros SPD de diferentes execuções de criação de perfil:

SPDConvert /merge combined.spd run1.spd run2.spd

Ver também

Tutorial: Usar a Otimização Guiada por Perfis de Amostragem (SPGO) para melhorar o desempenho
SPDDump
SPTAggregate
SPTDump