Moore Perf System 用户指南
Moore Perf System 是 Moore Threads SDK 中的关键性能分析工具,帮助开发者在开发和调试过程中识别系统级性能瓶颈,进行有针对性的分析和优化。Moore Perf System 不需要修改应用程序即可启用性能分析。
在同一 GPU 上使用 Moore Perf System 采集 GPU Metrics 前,请停止 MTDCGM 性能字段 2002、2003、2004 和 2005 的监控任务。性能分析结束后,再按原配置恢复监控。
- 命令行界面 (CLI)
- 图形界面 (GUI)
命令行界面 (CLI)
Moore Perf System CLI (msys) 提供了一种从命令行分析应用程序的方法,用于在不依赖图形用户界面 (GUI) 的情况下收集目标系统的数据。收集到的数据可以传输到其他系统上进行后续分析。
在目标系统上安装 CLI
如果您倾向于以非 root 模式运行 CLI(推荐),建议将其安装在您有完全访问权限的目录中。
注意:在 Windows 上,需要以管理员权限运行 CLI。
基本检查
安装完成后,建议先执行以下命令确认 CLI 可用:
msys --version
msys --help
示例输出:
Moore Perf System Version: 1.8.0-a2d42b1d5
在 Linux 环境中,未正确加载运行库或驱动依赖时,执行部分采集相关命令可能出现类似如下提示:
==PROF== Failed to load libmtperf_target.so and libdrm_mtgpu.so.
这通常表示目标环境尚未满足完整采集依赖。请优先检查 MT GPU 驱动、相关运行库,以及 LD_LIBRARY_PATH 等动态库搜索路径环境变量是否包含所需库路径并已在当前 shell 中生效。
命令行选项
Moore Perf System 支持两种形式的命令行:
msys [全局选项]
或者
msys <命令> [<命令参数>] [应用程序] [<应用参数>]
所有命令行选项都是区分大小写的。对于命令开关选项:
- 使用短选项时,参数应该在空格后跟随开关
- 使用长选项时,开关应该跟随一个等号,然后是参数
全局选项
| 短选项 | 长选项 | 描述 |
|---|---|---|
| -h | --help | 显示帮助菜单 |
| -v | --version | 显示版本 |
命令概览
Moore Perf System 命令行界面可以在两种模式下使用。您可以使用特定命令的选项启动应用程序并开始收集;或者,您可以使用交互式 CLI 命令控制应用程序的启动和数据收集。
| 命令 | 描述 |
|---|---|
| profile | 运行应用程序并收集事件 |
| launch | 在交互模式下启动一个准备进行收集的应用程序 |
| start | 在交互模式下开始配置会话 |
| stop | 在交互模式下停止配置会话 |
| cancel | 在交互模式下取消配置会话 |
| sessions list | 列出活动会话 |
| export | 将 msys-rep 文件导出为另一种格式 |
| stats | 从现有的 msys-rep 生成统计数据 |
| analyze | 在 msys-rep 中识别优化机会 |
profile 命令
运行应用程序并收集事件。
语法
msys profile [选项] <应用程序> [<应用参数>]
选项
| 短选项 | 长选项 | 可能的参数 | 默认 | 描述 |
|---|---|---|---|---|
| --capture-range | none、musaProfilerApi、hotkey | none | 设置采集触发方式。musaProfilerApi 表示仅在应用调用 musaProfilerStart 后开始采集;hotkey 表示按下 --hotkey-capture 指定的热键后开始采集,仅适用于图形应用;none 表示忽略 musaProfilerStart/Stop 与热键控制。 | |
| --capture-range-end | none、stop、stop-shutdown、repeat[:N]、repeat-shutdown:N | stop-shutdown | 设置采集区间结束后的行为。仅与 --capture-range 联合使用。 | |
| -d | --device | <设备索引> | 捕获所有设备 | 设置要采集的设备 ID。多个 ID 应由逗号分隔,无空格。选项参数必须是 --device=help 开关报告的 GPU ID 之一。 |
| --duration | <秒> | NA | 以秒为单位设置采集持续时间,必须大于 0。到达指定时长后,目标进程将被终止。 | |
| -e | --env-var | A=B[,C=D...] | NA | 设置环境变量,变量应由逗号分隔且不带空格,例如:-e a=b,c=d。 |
| --gpu-metrics-set | <指标 ID> 或 all | 默认不采集 | 指定 GPU Metrics 采样的指标集。多个 ID 应由逗号分隔,无空格。选项参数必须是 all 或 --gpu-metrics-set=help 报告的索引之一。 | |
| -h | --help | 显示 profile 帮助菜单 | ||
| --hotkey-capture | F1 到 F12 | F12 | 设置触发采 集的热键,仅在 --capture-range=hotkey 时生效。 | |
| --musa-graph-trace | graph、node | graph | 设置 MUSA Graph Trace 粒度。graph 表示整体追踪 graph;node 表示收集 node 活动,但可能带来明显运行时开销。 | |
| -o | --output | <文件名> | report#.msys-rep | 设置输出报告文件名。 |
| --osrt-threshold | <纳秒> | 1000 | 设置 OS Runtime (osrt) API 被追踪的最小执行时长。值远小于 1000 可能导致较大开销和超大结果文件。默认值为 1000(1 微秒)。 | |
| -t | --trace | musa、opengl、osrt、vulkan、none | musa,opengl | 选择要追踪的 API。多个 API 用逗号分隔,不能包含空格。none 表示不追踪任何 API。 |
| -y | --delay | <秒> | NA | 设置开始采集前的延迟时间,单位为秒。 |
示例
msys profile --trace=musa,osrt -o report.msys-rep ./my-application
msys profile --capture-range=musaProfilerApi ./my-application
msys profile --capture-range=hotkey --hotkey-capture=F12 ./my-application
launch 命令
在交互模式下启动一个准备进行收集的应用程序。
语法
msys launch [选项] <应用程序> [<应用参数>]
选项
| 短选项 | 长选项 | 可能的参数 | 默认 | 描述 |
|---|---|---|---|---|
| -e | --env-var | A=B[,C=D...] | NA | 设置环境变量,变量应由逗号分隔,无空格。 |
| -h | --help | 显示 launch 帮助菜单 | ||
| --session | [default] 或已有会话名 | [default] | 在指定会话中启动应用程序。 | |
| --osrt-threshold | <纳秒> | 1000 | 设置 OS Runtime (osrt) API 被追踪的最小执行时长。 | |
| -t | --trace | musa、opengl、osrt、vulkan、none | musa,opengl | 选择要追踪的 API。多个 API 用逗号分隔,不能包含空格。 |
start 命令
在交互模式下开始配置会话。
语法
msys start [选项]
选项
| 短选项 | 长选项 | 可能的参数 | 默认 | 描述 |
|---|---|---|---|---|
| -d | --device | <设备索引> | 捕获所有设备 | 设置要采集的设备 ID。多个 ID 应由逗号分隔,无空格。选项参数必须是 --device=help 开关报告的 GPU ID 之一。 |
| --gpu-metrics-set | <指标 ID> 或 all | 默认不采集 | 指定 GPU Metrics 采样的指标集。多个 ID 应由逗号分隔,无空格。选项参数必须是 all 或 --gpu-metrics-set=help 报告的索引之一。 | |
| -h | --help | 显示 start 帮助菜单 | ||
| -o | --output | <文件名> | report#.msys-rep | 设置输出报告文件名。 |
| --session | [default] 或已有会话名 | [default] | 在指定会话中开始采集。 |
执行 msys start 后,如果命令成功,通常会出现类似输出:
Session '[default]' started, use the 'launch' command to launch and profile a target app.
stop 命令
在交互模式下停止配置会话。
语法
msys stop [选项]
选项
| 短选项 | 长选项 | 可能的参数 | 默认 | 描述 |
|---|---|---|---|---|
| -h | --help | 显示 stop 帮助菜单 | ||
| -q | --quit | 无 | false | 停止采集后退出应用程序。 |
| --session | [default] 或已有会话名 | [default] | 停止指定会话中的采集。 |
执行 msys stop 后,通常会输出报告文件路径,例如:
Stopping...
Report file: /path/to/report1.msys-rep
Stop executed.
cancel 命令
在交互模式下取消配置会话。
语法
msys cancel [选项]
选项
| 短选项 | 长选项 | 可能的参数 | 默认 | 描述 |
|---|---|---|---|---|
| -h | --help | 显示 cancel 帮助菜单 | ||
| -q | --quit | 无 | false | 取消采集后退出应用程序。 |
| --session | [default] 或已有会话名 | [default] | 取消指定会话中的采集。 |
如果会话不存在,可能出现如下提示:
'[default]' is not active.
sessions list 命令
列出活动会话 。
语法
msys sessions list [选项]
选项
| 短选项 | 长选项 | 可能的参数 | 默认 | 描述 |
|---|---|---|---|---|
| -h | --help | 显示 sessions list 帮助菜单 |
示例输出:
NAME TIME STATE LAUNCH
[default] 00:29 CollectingGlobalOnly 0
如果当前没有活动会话,可能仅显示表头:
NAME TIME STATE LAUNCH
请注意,sessions 不是一级命令,必须使用完整形式 msys sessions list。
export 命令
将 .msys-rep 文件导出为其他格式。
语法
msys export [选项] <report file>
选项
| 短选项 | 长选项 | 可能的参数 | 默认 | 描述 |
|---|---|---|---|---|
| -h | --help | 显示 export 帮助菜单 | ||
| -f | --force-overwrite | on/off、yes/no、1/0、true/false | false | 如为 true,则覆盖同名输出文件。 |
| -o | --output | <文件名> | NA | 设置输出文件名。 |
| -t | --type | json、sqlite | json | 导出类型。json 可用于 chrome://tracing/,sqlite 导出为 sqlite schema。 |
stats 命令
从现有的 .msys-rep 生成统计数据。
语法
msys stats [选项] <input-file>
常用选项
| 短选项 | 长选项 | 可能的参数 | 默认 | 描述 |
|---|---|---|---|---|
| -f | --format | table、csv、json | 控制台默认 table,文件默认 csv | 指定输出格式;未指定 -o 时输出到控制台,若指定 -f json,控制台输出格式也为 JSON。 |
| -h | --help | 显示 stats 帮助菜单 | ||
| -o | --output | <输出路径或文件基名> | 打印到控制台 | 指定 输出方式;若写入文件,则使用 <basename>_<report>.<ext> 形式命名。 |
| -r | --report | <name[,name...]> | 默认报告集 | 指定要生成的报告,可使用逗号分隔多个报告。 |
默认报告集
musa_api_summusa_api_tracemusa_gpu_kern_summusa_gpu_kern_gb_summusa_gpu_mem_size_summusa_gpu_mem_time_summusa_gpu_summusa_kern_exec_summusa_api_gpu_sumopengl_api_sum
示例
msys stats report1.msys-rep
msys stats -r musa_gpu_trace report1.msys-rep
msys stats --report musa_gpu_trace,musa_gpu_kern_sum --format csv --output . report1.msys-rep
analyze 命令
从现有的 .msys-rep 中识别优化机会。
语法
msys analyze [选项] <input-file>
常用选项
| 短选项 | 长选项 | 可能的参数 | 默认 | 描述 |
|---|---|---|---|---|
| -f | --format | table、csv、json | 控制台默认 table,文件默认 csv | 指定输出格式;未指定 -o 时输出到控制台,若指定 -f json,控制台输出格式也为 JSON。 |
| -h | --help | 显示 analyze 帮助菜单 | ||
| -o | --output | <输出路径或文件基名> | 打印到控制台 | 指定输出方式。 |
| -r | --rule | <name[:args...][,name[:args...]...]> | 默认规则集 | 指定分析规则,可为规则附加参数。 |
| --help-formats | [<format_name>|ALL] | NA | 查看输出格式帮助。 | |
| --help-rules | [<rule_name>|ALL] | NA | 查看规则帮助。 | |
| --filter-time | [<start_time>]/[<end_time>] | 全时间范围 | 按时间范围过滤参与分析的事件和记录,时间单位支持 ns、us、ms、s。 |
默认规则集
musa_memcpy_syncmusa_memcpy_asyncmusa_memset_syncmusa_api_syncmusa_gpu_gapsmusa_gpu_time_util
示例
msys analyze report1.msys-rep
msys analyze -r musa_memcpy_async:rows=10:start=10ms,musa_gpu_gaps:rows=20 report1.msys-rep
msys analyze --rule musa_memcpy_sync,musa_gpu_gaps --format csv --output . report1.msys-rep
