【2023 · CANN训练营第一季】应用开发深入讲解——第三章应用调试
学习资源
日志主要用于记录系统的运行过程及异常信息,帮助快速定位系统运行过程中出现的问题以及开发过程中的程序调试问题。
日志分为如下两大类:
- 系统类日志:系统运行产生的日志。主要包括:
Control CPU上的系统类日志,包括用户态日志和内核态日志。
非Control CPU(例如TSDUMP/LP)上的系统类日志。 - 应用类日志:运行应用程序产生的日志。主要包括:
compiler中各组件(如GE、FE、AICPU、TBE、HCCL等)、runtime中各组件(如AscendCL、GE、Runtime等)打印的日志。
Device侧AICPU 、HCCP打印的日志。
日志处理机制介绍
Ascend EP场景(推理/训练)
启动日志进程
设备完成驱动安装后日志进程自动启动。Device侧包括slogd进程、sklogd进程和log-daemon进程;Host侧则通过libalog.so采集Host侧的应用类日志,libalog.so文件包含在compiler和runtime目录下。
采集日志
在Device侧,slogd进程采集Control CPU上的系统类日志和应用类日志;log-daemon进程采集非Control CPU上的系统类日志。
在Host侧,libalog.so采集Host侧的应用类日志。
记录日志
Device侧系统类日志:slogd进程将Control CPU上的系统类日志记录在Device侧以“device-os”为开头命名的日志文件中;log-daemon进程将非Control CPU上的系统类日志记录在Device侧以“device-id”为开头命名的日志文件中。
应用类日志:Device侧的slogd进程将Device侧应用类日志回传给Host侧的libalog.so,libalog.so将接收到的Device侧应用类日志与Host侧应用类日志分别记录在Host侧以“device-pid”和“plog-pid”为开头命名的日志文件中。
如果Device侧的应用类日志回传到Host侧失败,会在Device侧直接落盘,记录在以“device-app-pid”为开头命名的日志文件中。如果Device侧的应用类日志回传到Host侧成功,则不会在Device侧落盘。
传输日志
Device侧系统类日志可以通过部署在Host侧的msnpureport工具从Device侧传输给Host侧。
Ascend RC 场景(推理)
日志进程
设备完成驱动安装后日志进程自动启动。包括slogd进程、sklogd进程和log-daemon进程。
采集日志
log-daemon进程采集非Control CPU上的系统类日志;slogd进程采集Control CPU上的系统类日志和应用类日志。
将日志记录到文件中
slogd对接收的日志进行分类,应用类日志由slogd记录在以“device-app-pid”为开头命名的日志文件中;Control CPU上的系统类日志由slogd记录在以“device-os”为开头命名的日志文件中。
非Control CPU上的系统类日志由log-daemon进程记录在以“device-id”为开头命名的日志文件中。
日志类型及类别介绍
日志级别等级由低到高顺序:DEBUG < INFO < WARNING < ERROR,级别越低,输出日志越详细。
日志记录格式介绍
样例
[ERROR] TEFUSION(12940,atc):2021-10-17-05:54:07.599.074 [tensor_engine/te_fusion/pywrapper.cc:33]InitPyLogger Failed to import te.platform.log_util
日志格式
[Level] ModuleName(PID,PName):DateTimeMS [FileName:LineNumber]LogContent
日志字段说明
日志的默认输出方式为将日志保存在log文件中,也可以通过设置环境变量ASCEND_SLOG_PRINT_TO_STDOUT将日志打屏显示。
设置命令如下:
export ASCEND_SLOG_PRINT_TO_STDOUT=1
- 点赞
- 收藏
- 关注作者
评论(0)