日志分类
日志主要用于记录系统的运行过程及异常信息,帮助用户快速定位系统运行过程中出现的问题以及开发过程中的程序调试问题。日志分为如下两大类:
- 系统类日志:系统运行产生的日志。主要包括:
- Control CPU上的系统类日志,包括用户态日志和内核态日志。
- 非Control CPU(例如TSDUMP/LP)上的系统类日志。
- 应用类日志:运行应用程序产生的日志。主要包括:
- compiler中各组件(如GE、FE、AI CPU、TBE、HCCL等)、runtime中各组件(如AscendCL、GE、Runtime等)打印的日志。
- Device侧AI CPU 、HCCP打印的日志。
本文中提到的各形态详细说明请参见《昇腾产品形态说明》。
本文中出现的日志文件名中的id和pid分别代表Device ID和进程ID,请以实际为准。
日志记录格式
日志样例如下:
[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
表1 日志字段说明
字段 |
说明 |
Level |
日志类型。运行日志存在5种日志类型: ERROR、WARNING、INFO、DEBUG、EVENT。 |
ModuleName |
产生日志的模块的名称。 |
PID |
进程ID。 |
PName |
进程名称。 |
DateTimeMS |
日志打印时间,格式为: yyyy-mm-dd-hh:mm:ss.SSS。 |
FileName:LineNumber |
调用日志打印接口的文件及对应的行号。 |
LogContent |
各模块具体的日志内容。 |
日志收集机制
表2 日志收集机制
场景 |
日志收集机制 |
Ascend EP 标准形态 |
- 启动日志进程
设备完成驱动安装后日志进程自动启动。Device侧包括slogd进程和sklogd进程;Host侧则通过libascendalog.so采集Host侧的应用类日志,libascendalog.so文件包含在compiler和runtime目录下。
- 采集日志
在Device侧,slogd进程采集Control CPU上的系统类日志和应用类日志、采集非Control CPU上的系统类日志;sklogd采集Control CPU上内核态系统日志并传递给slogd; 在Host侧,libascendalog.so采集Host侧的应用类日志。
- 记录日志
Device侧系统类日志: slogd进程将Control CPU上的系统类日志记录在Device侧以“device-os”为开头命名的日志文件中; slogd进程将非Control CPU上的系统类日志记录在Device侧以“device-id”为开头命名的日志文件中。 应用类日志: Device侧的slogd进程将Device侧应用类日志回传给Host侧的libascendalog.so、libplog.a; libascendalog.so、libplog.a将接收到的Device侧应用类日志与Host侧应用类日志分别记录在Host侧以“device-pid”和“plog-pid”为开头命名的日志文件中。 如果Device侧的应用类日志回传到Host侧失败,会在Device侧直接落盘,记录在以“device-app-pid”为开头命名的日志文件中。如果Device侧的应用类日志回传到Host侧成功,则不会在Device侧落盘。
- 传输日志
Device侧系统类日志可以通过部署在Host侧的msnpureport工具从Device侧传输给Host侧。
|
Ascend RC形态 |
|