【2023 · CANN训练营第一季】关于调试日志的学习
文档参考:CANN文档社区版: 6.0.RC1.alpha001
一、概述
日志主要用于记录系统的运行过程及异常信息,帮助快速定位系统运行过程中出现的问题以及开发过程中的程序调试问题。
(资料图片)
日志分为如下两大类:
系统类日志:系统运行产生的日志。主要包括:
Control CPU上的系统类日志,包括用户态日志和内核态日志。
非Control CPU(例如TSDUMP/LP)上的系统类日志。
应用类日志:运行应用程序产生的日志。主要包括:
compiler中各组件(如GE、FE、AICPU、TBE、HCCL等)、runtime中各组件(如AscendCL、GE、Runtime等)打印的日志。
Device侧AICPU 、HCCP打印的日志。
二、日志格式
字段说明:
三、日志操作
1.环境变量操作
设置打屏:
export ASCEND_SLOG_PRINT_TO_STDOUT=1
应用类日志获取:
日志默认路径:$HOME/ascend/log/plog”
设置环境变量:
export ASCEND_PROCESS_LOG_PATH=/$HOME/xxx
1.上述日志中id和pid分别代表Device ID和进程ID,请以实际为准;日志文件中的"*"表示该日志文件创建时的时间戳。
2.以上目录是容器或物理机内所有应用程序共同使用的,会不断增加新的应用进程,日志会不断增多,因此需要用户定期清理该目录(可以使用系统自带的logrotate实现日志切分),否则可能导致磁盘空间不足,影响业务正常运行。
3.如果存储在只有emmc/flash等有写次数限制的介质下,建议将日志落盘路径设置到内存文件系统路径下,启动业务进程时通过环境变量(ASCEND_PROCESS_LOG_PATH)设置日志落盘路径,可以另起一个常驻进程定时定量将内存文件系统下的日志转储在emmc/flash。
Device侧应用类日志回传延时设置:
export ASCEND_LOG_DEVICE_FLUSH_TIMEOUT=5000
应用类日志目录存储单日志进程下日志文件数量设置:
export ASCEND_HOST_LOG_FILE_NUM=20
其他环境变量说明:
2.重启日志进程(仅考虑EP场景)
日志进程停止:
获取日志进程(slogd、sklogd或log-daemon)ID:可以通过ps -elf | grep log命令查询。
命令:kill -15 进程ID
重启日志进程:
如下命令需要在HwHiAiUser用户下运行:
设置完后可以通过ps -elf | grep log进行查询是否这三个进程有启动
重启异常问题:
slogd.pid属主异常:进入/usr/slog目录,执行ls -l命令查看slogd.pid属主是否为root,如果属主是root,建议删除该文件后重新手动启动日志进程。
/var目录所在磁盘使用率达100%:进入根目录,运行命令 df -h ,如果/var目录所在磁盘使用率达到100%导致slogd启动失败,则进入"/var/log/npu/slog"目录,手动删除一些较大的、时间较早的日志文件。删除完后重新手动启动日志进程。
日志其实是我们在调试过程中重要的问题分析工具,在我们遇到执行出错时,应当先进行运行日志的分析,针对进行修改。
那我的从模型转换->资源申请->数据预处理->模型加载与推理->后处理->日志分析就完成啦。
我这个小菜鸟的第一个项目结束了!再接再厉!
ps:该文仅是为了记录CANN训练营的学习过程所用,不参与任何商业用途,有任何代码问题可以和我一起讨论修改