使用 SPDConvert 准备和管理用于样本配置文件引导优化(SPGO)的样本配置文件数据。
此工具将 SPT 文件中的原始硬件示例与 SPD 中的代码结构相关联。 此步骤执行样本关联、流平滑以及大小/速度权衡决策,并生成一个在流图中标注了执行计数的增强型 SPD 文件。
可以在单个转换中合并来自多个源的数据,例如实验室基准、内部监视和生产遥测。 若要强调特定方案的重要性,可以多次指定其 SPT 文件。 将关键基准 SPT 列出三次,实际上等于将其权重增加到三倍。
此工具以三种模式运行:
- 将 .SPT 数据导入用于 /SPGO 构建的 .SPD 文件中
- 提取从 .PDB 中嵌入的 .SPD 文件
- 合并多个单独性能分析运行生成的 .SPD 文件
SPDConvert 适用于三种文件类型:
-
ETL(事件跟踪日志)由
xperf记录的原始硬件性能事件 -
SPT(示例性能分析跟踪)由
SPTAggregate从 ETL 文件生成的打包示例事件 -
SPD (示例配置文件数据库) 在优化生成期间处理了编译器使用的配置文件数据。 还可以在
/spdembed构建期间,将 SPD 文件嵌入 PDB 符号文件中
Syntax
将 SPT 数据导入到现有 SPD 文件中:
SPDConvert[options] spdfilesptfile(s)
从 PDB 中提取嵌入的 SPD 文件:
SPDConvert/extractpdbfilespdfile
将多个 SPD 文件合并为一个:
SPDConvert/mergeoutputspdfilespdfile(s)
参数
导入模式
选项
在导入模式下指定以下选项:
- /模式:<Ip|LBR> 选择配置文件模式。 使用 IP 获取指令指针分析数据(默认),或使用 LBR 获取末次分支记录分析数据。
- /重 置: 将计数重置为 0。 此操作会忽略 SPTs。 使用此选项在导入新数据之前重置 SPD 文件,或者创建一个空 SPD 文件(如果指定的文件不存在)。
- /sptlist:<文件> 在文本文件中指定 SPT 文件名,每行有一个文件名。
- /总结 打印 SPD 文件的摘要。
- /帮助 显示帮助信息。
spdfile
要导入示例数据的 SPD 文件。
sptfiles
要导入的一个或多个 SPT 文件。
SPT 文件由 SPTAggregate 生成。
提取模式(/提取)
pdbfile
包含嵌入式 SPD 的 PDB 文件。
spdfile
要创建的 SPD 输出文件。
合并模式(/merge)
outputspdfile
将要创建的输出 SPD 文件。
/退休:<N> 将配置文件数据停用率设置为 N/16,其中 0 ≤ N ≤ 16。 默认值为 8。 此值控制添加新 SPT 数据时要删除的 SPD 中的现有数据量。 例如,在添加新 SPT 数据之前, /retire:8 删除现有数据的 8/16(半)。 此设置会对较新的配置文件数据赋予更高的权重,因为它会丢弃一半的旧数据。 这两种最常见的用法是:/retire:0 对所有 profile 运行赋予相同的权重,或者 /retire:16 只计入最新的数据,因为它会删除所有旧数据。 使用 /retire:N 来控制 SPDConvert 在多大程度上降低较旧个人资料数据的重要性。 通过这种“沿用”概念,您可以使用现有的 SPD 数据更新配置文件,而不必使用新的分析数据从头开始,因为这一过程非常耗时。 这一概念在SPGO 教程 - 跨构建重用 SPD 信息中有更详细的讨论。
spdfiles
一个或多个待合并的 SPD 文件。
注解
注释
从Visual Studio开发人员命令提示符运行此工具。
SPDConvert 是 SPGO 工作流中的主要转换工具。 使用 xperf 收集跟踪并使用 SPTAggregate 将其转换为 SPT 文件后,再使用 SPDConvert 将示例数据导入 SPD 文件。 使用 /SPGO 标志生成优化的二进制文件,将生成的 SPD 文件传递给编译器。
使用 /extract 可恢复在 /SPGO 生成期间嵌入到 PDB 中的 SPD 文件。
使用 /merge 合并多个性能分析会话中的 SPD 文件,然后再重新生成。
二进制文件的 GUID 和年龄必须匹配 SPT 和 SPD 文件。 如果它们不匹配, SPDConvert 则报告“SPD 版本不兼容”错误。 用于 SPTDump /progid 检查 SPT 文件中的二进制标识符,以及 SPDDump /header 检查 SPD 文件。
SPD 文件中记录的二进制文件的 GUID 和年龄必须与 SPT 文件匹配。 若要诊断此错误,请使用 SPTDump /progid 检查 SPT 文件中的二进制标识符,并使用 SPDDump /header 检查 SPD 文件。 尽可能使用有效的 SPD 文件。 可以容忍对不更改程序控制流的代码进行次要更新。 未更改的函数也使用数据进行优化。 如果提供有效但其他不相关的 SPD,则该过程有效,但可能没有数据可用于优化。
Example
此示例将 LBR 配置文件数据从 SPT 文件导入 SPD 文件:
SPDConvert /mode:LBR sample.spd sample.spt
此示例使用 SPT 文件列表导入 IP 配置文件数据:
SPDConvert /mode:IP /sptlist:mysptfiles.txt sample.spd
此示例输出 SPD 文件中配置文件数据的摘要:
SPDConvert /summary sample.spd
此示例从 PDB 文件中提取嵌入的 SPD:
SPDConvert /extract sample.pdb sample_extracted.spd
此示例合并不同分析运行的两个 SPD 文件:
SPDConvert /merge combined.spd run1.spd run2.spd