msnpureport工具使用
工具介绍
- msnpureport工具仅适用于Ascend EP标准形态。
- msnpureport工具不支持算力切分容器场景,对于容器场景,msnpureport工具仅支持查询和设置日志级别。
- msnpureport工具在导出日志、查询和设置日志级别时支持多进程运行,建议不超过4个。
- msnpureport工具不支持增量导出日志,如果用户想避免老旧日志的影响,提高问题定位的效率,可以定期通过msnpureport工具获取Device侧日志,并自行制作脚本实现日志去重处理。
导出Device侧的相关日志和文件
- 登录Host侧服务器。
- 获取msnpureport工具。
msnpureport工具在驱动Driver的安装目录下,路径为“Driver安装目录/driver/tools/msnpureport”。
- 在某个有读、写、执行权限的目录(如“/var/log/npu/report”,下文以此路径为例)下执行如下命令,运行msnpureport工具。
执行方式一(推荐):Driver安装目录/driver/tools/msnpureport report [options]
执行方式二:Driver安装目录/driver/tools/msnpureport [options]
在加锁的目录下(使用lsattr命令查看目录属性,有“i”选项的为加锁目录),用户没有权限运行msnpureport工具。如果用户想在该目录下运行msnpureport工具,可以通过chattr -i <加锁的目录>命令,将目录的“i”选项撤销。工具运行完后建议通过chattr +i <加锁的目录>命令,将目录的“i”选项加上。为了安全起见,不建议在加锁目录中运行工具。
其中[options]支持的参数及解释请参见表1。
表1 参数说明 参数
说明
举例
不指定任何参数
导出所有日志和文件,包括:
- slog日志。
- syslog日志。
- Stackcore文件。
- 黑匣子日志。
- 事件调度模块的维测信息。
- 模块日志。
Driver安装目录/driver/tools/msnpureport report
-a或--all
导出所有日志、文件以及黑匣子设备事件信息,包括:
- slog日志。
- syslog日志。
- Stackcore文件。
- 黑匣子日志、黑匣子设备事件信息。
- 事件调度模块的维测信息。
- 模块日志。
- Host侧驱动日志。
Driver安装目录/driver/tools/msnpureport report -a
-f或--force
导出所有日志、文件以及黑匣子相关信息,包括:
- slog日志。
- syslog日志。
- Stackcore文件。
- 黑匣子日志、黑匣子设备事件信息、黑匣子存储空间中的历史维测信息。
- 事件调度模块的维测信息。
- 模块日志。
- Host侧驱动日志。
Driver安装目录/driver/tools/msnpureport report -f
-t或--type
指定导出的日志类型,取值为:
- 0:导出所有类型日志,包括slog日志、syslog日志、Stackcore文件、黑匣子日志、事件调度模块的维测信息、模块日志。
- 1:slog日志、syslog日志和事件调度模块的维测信息、模块日志。
- 2:黑匣子日志、黑匣子设备事件信息、黑匣子存储空间中的历史维测信息、硬件寄存器信息
- 3:Stackcore文件。
Driver安装目录/driver/tools/msnpureport report -t 1
- 执行-t 2后,需要执行npu-smi set -t reset device_id进行Device热复位。
- 执行-a或-f导出黑匣子相关信息时,如何存在卡住或导出慢的情况,可以执行npu-smi set -t reset device_id进行Device热复位后重新导出。
导出日志文件说明
- slog日志:“/var/log/npu/report/*/slog”,“*”为时间戳,其具体日志目录如下:
存储目录
说明
dev-os-id/debug/device-os/device-os_*.log
Device侧系统进程产生的调试日志,包括用户态日志和内核态日志。
dev-os-id/run/device-os/device-os_*.log
Device侧系统进程产生的运行日志。
dev-os-id/run/event/event_*.log
Device侧系统进程产生的EVENT日志。
dev-os-id/security/device-os/device-os_*.log
Device侧系统进程产生的安全日志。
dev-os-id/run/device-app-pid/device-app-pid_*.log
Device侧应用进程产生的运行日志。仅当Device侧回传到Host侧失败时,才会在Device侧存储该日志。
dev-os-id/debug/device-app-pid/device-app-pid_*.log
Device侧应用进程产生的调试日志。仅当Device侧回传到Host侧失败时,才会在Device侧存储该日志。
dev-os-id/security/device-app-pid/device-app-pid_*.log
Device侧应用进程产生的安全日志。仅当Device侧回传到Host侧失败时,才会在Device侧存储该日志。
dev-os-id/debug/device-id/device-id_*.log
Device侧非Control CPU上的系统类日志。
dev-os-id/slogd/slogdlog
维测日志。记录日志工具自身的运行信息,用于日志工具自身问题定位。
注:上述日志中id和pid分别代表Device ID和进程ID,请以实际为准;日志文件中的“*”表示该日志文件创建时的时间戳。
- 对于Atlas 训练系列产品,根据不同形态,dev-os-id目录形式不同,具体如下:
- 对于Atlas A2训练系列产品/Atlas 800I A2推理产品,根据不同形态,dev-os-id目录形式不同,具体如下:
- syslog日志:“/var/log/npu/report/*/message”
syslog日志表示调用syslog接口记录Device侧其他组件产生的日志,“*”为时间戳。
- 黑匣子:“/var/log/npu/report/*/hisi_logs”
导出的黑匣子日志、黑匣子的设备事件信息和黑匣子存储空间中的历史维测信息均保存在该目录下,“*”为时间戳。
- Stackcore文件:“/var/log/npu/report/*/stackcore”
Stackcore文件主要是用来保存链接了libstackcore.so的进程(例如slogd、adda、tsdaemon、aicpu_scheduler进程)的堆栈信息,用于定位进程异常。
通过msnpureport工具导出Stackcore文件后,可以参考“Stackcore文件解析定位”章节对Stackcore文件进行后续的分析处理,“*”为时间戳。
- 事件调度模块的维测信息:“/var/log/npu/report/*/system_info/event_sched”,“*”为时间戳。
- 模块日志: “/var/log/npu/report/*/system_info”,“*”为时间戳。
- Host侧驱动日志: “/var/log/npu/report/*/slog/host/host_kernel.log”,“*”为时间戳。
查询和设置Device侧系统类日志级别
- 登录Host侧服务器。
- 获取msnpureport工具。
msnpureport工具在驱动Driver的安装目录下,路径为“Driver安装目录/driver/tools/msnpureport”。
- 在某个有读、写、执行权限的目录(如“/var/log/npu/report”)下,执行如下命令查询和设置日志级别。
- 方式一(推荐):
设置日志级别:Driver安装目录/driver/tools/msnpureport config --set --log [set_options] -d 1
查询日志级别:Driver安装目录/driver/tools/msnpureport config --get --log -d 1
- 方式二:
设置日志级别:Driver安装目录/driver/tools/msnpureport [set_options] -d 1
查询日志级别:Driver安装目录/driver/tools/msnpureport -r -d 1
非算力切分容器场景下,执行命令行时,需增加--docker参数标识为容器内执行命令。例如:
Driver安装目录/driver/tools/msnpureport --docker -r
表2 set_options参数说明 参数
说明
举例
-g <level>或
--global <level>
设置全局级的日志级别。- debug:表示DEBUG级别。
- info:表示INFO级别。
- warning:表示WARNING级别。
- error:表示ERROR级别。
- null:表示NULL级别,不输出日志。
Driver安装目录/driver/tools/msnpureport config --set --log -g info
-m <module:level>或
--module <module:level>
设置模块级的日志级别。
- module:模块名称。例如SLOG等。
- level:模块级别。取值为:
- debug:表示DEBUG级别。
- info:表示INFO级别。
- warning:表示WARNING级别。
- error:表示ERROR级别。
- null:表示NULL级别,不输出日志。
Driver安装目录/driver/tools/msnpureport config --set --log -m SLOG:error
-e <level>或
--event <level>
设置是否开启Event日志。- enable:开启Event日志。
- disable:不开启Event日志。
Driver安装目录/driver/tools/msnpureport config --set --log -e enable
表3 其他参数说明 参数
说明
举例
-d <device-id>或
--device <device-id>
指定Device ID(逻辑ID),默认为0。通过指定Device ID设置对应Device的日志级别。
指定的Device ID是指逻辑上的Device ID而不是物理上的Device ID。须先判断逻辑ID后再设置对应的日志级别,详细步骤请参见SMP形态日志级别设置特殊说明。
Driver安装目录/driver/tools/msnpureport config --set --log -g warning -d 1
-r或--request
查询Device侧slog系统类日志的级别,包括全局级、模块级和是否开启Event日志。如果不指定Device ID,默认查询Device 0的日志级别。
Driver安装目录/driver/tools/msnpureport -r
查询后的显示示例如下:
The system log level of device_id:0 is as follows: [global] INFO [event] ENABLE [module] SLOG:INFO IDEDD:INFO DVPP:INFO CCE:INFO HDC:INFO DRV:INFO MDCDEFAULT:INFO DEVMM:INFO KERNEL:INFO LIBMEDIA:INFO ASCENDDK:INFO ROS:INFO HCCP:INFO ROCE:INFO PROFILING:INFO APP:INFO TDT:INFO MD:INFO MB:INFO ME:INFO BBOX:INFO TS:INFO TSDUMP:INFO LP:INFO
-h或--help
用于打印帮助信息。
Driver安装目录/driver/tools/msnpureport -h
- 方式一(推荐):
SMP形态日志级别设置特殊说明
SMP形态下,多个Device共用一个OS组成一组,OS上部署Device共用的进程模块,各个Device小核上部署各自独有的模块,如TS、LP、IMP和IMU模块。此时通过-g设置日志级别,有以下特殊情况:
-g -d:修改OS上共用进程模块及-d指定Device小核上所有模块的日志级别。
关于物理ID与逻辑ID:
使用npu-smi info命令查看到的设备上的NPU Device ID即为物理ID。假设物理ID的取值范围是0~7,Device0~Device3四个为一组Device4~Device7四个为一组。物理ID的分组情况请以设备实际情况为准。
查询到的物理ID会按照数字大小从小到大自上而下排列,那么对应的逻辑ID则从0开始按顺序为0~n。假设查询到的物理ID为“0,1,4,5”,那么对应逻辑ID则为“0,1,2,3”。根据上一步的分组情况可判断物理ID“0,1”为一组,“4,5”为一组,那么可以推断出逻辑ID“0,1”为一组,“2,3”为一组。