ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CANN Runtime 日志查看指南:Ascend RC 形态下 Device 侧日志文件路径与配置详解

CANN Runtime 日志查看指南:Ascend RC 形态下 Device 侧日志文件路径与配置详解 CANN Runtime 日志查看指南Ascend RC 形态下 Device 侧日志文件路径与配置详解【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime导读本文面向 CANN/runtime 开源仓库的使用者系统讲解 Ascend RCReduced Config即 Atlas 200I/500 A2 推理产品等精简配置形态下 Device 侧日志的存储路径、日志分类与各文件记录的信息。读完本文你将掌握/var/log/npu/slog目录下 debug、run、security、slogd 等目录的日志布局理解slog.conf配置文件中日志级别、文件数量与大小、缓冲区等关键参数并能独立完成日志老化配置、Device 侧配置修改与日志进程重启的完整闭环。一、Ascend RC 形态概述与日志分类在 CANN 运行时组件中日志是定位 Device 侧异常的第一手资料。根据 日志简介 的说明Ascend RC 形态当前仅涉及 Atlas 200I/500 A2 推理产品。与 Ascend EP 标准形态不同RC 形态下用户拥有登录 Device 侧的权限可以直接在 Device 侧查看和修改日志无需像 EP 形态那样通过msnpureport工具将日志回传到 Host 侧查看见 查看日志Ascend EP。日志总体分为两类系统类日志系统运行时在 Device 侧产生的日志包括 Control CPU 上的内核态日志与系统进程用户态日志反映 AI 处理器整体运行情况以及非 Control CPU如低功耗上的系统类日志反映低功耗、Task Scheduler、ISP 等组件的运行情况。应用类日志AI 应用程序运行产生的日志包括 Host 侧 AscendCL、GE、Runtime、HCCP 等组件打印的日志以及 Device 侧 AI CPU 进程打印的日志。在 RC 形态下两类日志都统一落盘在 Device 侧的/var/log/npu/slog目录中并按照日志级别debug/run/security与进程归属系统进程/应用进程进一步分层组织。二、日志文件存储路径总览根据 查看日志Ascend RCRC 形态下日志文件存储路径及其记录的主要信息如下表| 存储路径 | 说明 | | -- | -- | |/var/log/npu/slog/debug/device-os/device-os_*.log| Control CPU 上系统进程产生的调试日志包括用户态日志和内核态日志。 | |/var/log/npu/slog/debug/device-app-pid/device-app-pid_*.log| Control CPU 上应用进程产生的调试日志。 | |/var/log/npu/slog/run/event/event_*.log| Control CPU 上系统进程产生的 EVENT 日志。 | |/var/log/npu/slog/run/device-os/device-os_*.log| Control CPU 上系统进程产生的运行日志。 | |/var/log/npu/slog/run/device-app-pid/device-app-pid_*.log| Control CPU 上应用进程产生的运行日志。 | |/var/log/npu/slog/security/device-os/device-os_*.log| Control CPU 上系统进程产生的安全日志。 | |/var/log/npu/slog/security/device-app-pid/device-app-pid_*.log| Control CPU 上应用进程产生的安全日志。 | |/var/log/npu/slog/debug/device-id/device-id_*.log| 非 Control CPU 上的系统类日志主要采集 TS/TSDUMP/LP 模块的日志。 | |/var/log/npu/slog/slogd/slogdlog| 维测日志。记录日志工具自身的运行信息用于日志工具自身问题定位。 |上表中id和pid分别代表 Device ID 和进程 ID请以实际为准日志文件名中的*表示该日志文件创建时的时间戳。2.1 目录结构解读device-ossystem 目录存放 Control CPU 上系统进程的日志按日志级别分为debug、run、security三个子目录分别对应调试日志、运行日志、安全日志。device-app-pid应用目录以进程 PID 为目录名每个应用进程一个目录存放该进程的调试/运行/安全日志。device-id存放非 Control CPUTS/TSDUMP/LP 模块的系统类日志这类日志只有调试级别。run/eventControl CPU 上系统进程产生的 EVENT 日志与 run 级别日志并列存放。slogd日志服务进程slogd自身的维测日志单独存放。2.2 日志老化机制所有日志均支持老化。当日志超过配置的存储限制文件数量或单个文件大小时系统会自动删除最早的日志目录或文件。日志目录/文件数量、单个日志文件大小等具体数值由 Device 侧日志配置文件slog.conf控制详见 查看日志配置文件。一个典型的例外是维测日志slogdlog当slogdlog文件达到规定大小1MB后名称变更为slogdlog.old进行备份若已有备份文件则删除最早的备份文件。这一机制在源码中有对应实现见 file_slogdlog_monitor.c其中定义了SLOGDLOG_FILE slogdlog与SLOGDLOG_OLD_FILE slogdlog.old并通过 inotify 事件IN_CREATE/IN_MOVED_TO监控日志滚动事件配合每 60 秒一次的定时扫描SLOGDLOG_SCAN_INTERVAL (60 * 1000)将 slogdlog 同步到slog/{masterId}/slogd/目录。三、Device 侧日志配置文件 slog.confRC 形态下 Device 侧日志的存储行为完全由配置文件控制该文件记录了 Device 侧系统类日志的日志级别、日志输出路径、日志数量、单个日志文件大小等配置信息。配置文件路径Atlas 200I/500 A2 推理产品/etc/slog.conf多用户场景下仅支持日志进程的运行用户修改配置文件。修改配置项时请严格按照配置项说明表格中的取值范围或建议值进行配置否则可能导致系统异常。手动修改配置文件后需要重启 slogd 进程使配置生效重启方法见 重启日志进程。3.1 配置项说明以下配置项及取值范围整理自 查看日志配置文件global_level设置全局日志级别仅支持调试日志。取值范围0DEBUG 级别。1INFO 级别。2WARNING 级别。3ERROR 级别。4NULL 级别不输出日志。其他值非法值。enableEvent设置是否开启 Event 日志。取值范围1开启 Event 日志。0不开启 Event 日志。SLOG、IDEDD、DVPP……设置 Control CPU 上各模块SLOG、IDEDD、DVPP、CCE、HDC、DRV、DEVMM、KERNEL、LIBMEDIA、ROS、HCCP、ROCE、PROFILING、APP、TDT、MD、MB、ME、BBOX、AUDIO、ASCENDCKERNEL 等的日志级别。取值范围0DEBUG 级别。1INFO 级别。2WARNING 级别。3ERROR 级别。4NULL 级别不输出日志。5无效值模块日志级别取global_level设置的级别。具体规则为模块日志级别为 5且全局日志级别为正常值0、1、2、3则模块跟随全局日志级别模块日志级别为 5且全局日志级别为 4则模块日志不打印模块日志级别为 5且全局日志级别为非法值则模块日志级别为 ERROR。TS、TSDUMP……设置非 Control CPU 上各模块TS、TSDUMP、LP 等的日志级别取值范围与上述 Control CPU 模块一致0~55 表示跟随global_level。DeviceOsMaxFileNumdebug/device-os目录下保存device-os_*.log日志文件的数量。当日志文件数目大于该数目时发生滚动新日志覆盖最早的日志。DeviceOsMaxFileSizedebug/device-os目录下单个device-os_*.log日志文件的大小。当日志文件大小超过该值时生成新的日志文件。可结合实际调整若设置值小于 1MB系统默认为 1MB。DeviceOsNdebugMaxFileNumrun或security的device-os目录下保存device-os_*.log日志文件的数量滚动规则同上。DeviceOsNdebugMaxFileSizerun或security的device-os目录下单个device-os_*.log日志文件的大小滚动规则同上设置值小于 1MB 时系统默认为 1MB。DeviceMaxFileNumdevice-id目录下保存device-id_*.log日志文件的数量滚动规则同上。DeviceMaxFileSizedevice-id目录下单个device-id_*.log日志文件的大小滚动规则同上设置值小于 1MB 时系统默认为 1MB。DeviceAppDirNums保存device-app-pid目录的数量。DeviceAppMaxFileNum每个device-app-pid目录下保存device-app-pid_*.log日志文件的数量。当日志文件数目大于该数目时发生滚动新日志覆盖最早的日志。DeviceAppMaxFileSize每个device-app-pid目录下单个device-app-pid_*.log日志文件的大小。超过该值时生成新的日志文件。SysLogBufSize系统日志device-os_*.log缓冲区大小。AppLogBufSize应用类日志device-app-pid_*.log缓冲区大小。logAgentFileDir日志文件路径根目录。如果修改该路径需确保运行日志进程的用户对该路径有读写权限。该路径最长支持 255 字节超过 255 字节时系统自动截断并在截断后的路径下保存日志。permission_for_all是否支持与 slogd 进程运行用户不同属组的其他用户启动 APP 后写日志。0不支持。1支持。3.2 仓库中的真实配置文件参考开源仓库的src/dfx/log/syslog/slog/etc/目录下保存了多种产品形态的默认配置模板其中与 RC 形态直接相关的是 milan_310rc/slog.conf 和 mini_rc/slog.conf。以 milan_310rc 为例其关键配置与注释明确给出了参数取值范围和默认值可直接作为配置参考# 0:debug, 1:info, 2:warning, 3:error, 4:null(no output log), 默认(3) # run日志级别为info、security日志级别为debug二者不可修改 # 该配置项仅对debug日志生效 global_level3 # Event类型日志开关0:关闭, 1:开启, 默认(1) enableEvent1 # 模块级别0:debug, 1:info, 2:warning, 3:error, 4:null, 5:无效(跟随global_level) SLOG5 IDEDD5 DVPP5 CCE5 HDC5 DRV5 DEVMM5 KERNEL5 LIBMEDIA5 ROS5 HCCP5 ROCE5 PROFILING5 APP5 TDT5 MD5 MB5 ME5 BBOX5 AUDIO5 ASCENDCKERNEL5 # 非Control CPU模块 TS5 TSDUMP5 LP5 # debug device-os_*.log文件数量范围[1, 1000]默认(3) DeviceOsMaxFileNum3 # debug device-os_*.log文件大小范围[1048576, 104857600]字节默认(2097152)字节 DeviceOsMaxFileSize2097152 # run device-os_*.log文件数量范围[1, 1000]默认(3) DeviceOsNdebugMaxFileNum3 # run device-os_*.log文件大小范围[1048576, 104857600]字节默认(2097152)字节 DeviceOsNdebugMaxFileSize2097152 # device-id_*.log文件数量范围[1, 1000]默认(10) DeviceMaxFileNum10 # device-id_*.log文件大小范围[1048576, 104857600]字节默认(2097152)字节 DeviceMaxFileSize2097152 # device-app-pid_*.log文件数量范围[1, 1000]默认(3) DeviceAppMaxFileNum3 # device-app-pid_*.log文件大小范围[524288, 104857600]字节默认(1048576)字节 DeviceAppMaxFileSize1048576 # device-app-pid目录数量范围[1, 96]默认(48) DeviceAppDirNums48 # 日志根路径 logAgentFileDir/var/log/npu/slog # 系统日志缓冲区大小范围[64*1024, 1024*1024]字节默认(256*1024)字节 SysLogBufSize262144 # 应用日志缓冲区大小范围[64*1024, 1024*1024]字节默认(256*1024)字节 AppLogBufSize65536该模板文件头部的注释还解释了配置项的取值兜底规则若配置项未设置或设置为非自然数如level-1、levela则取默认值若配置项有取值范围如[1, 1000]且设置超出范围则低于下限时取下限、高于上限时取上限若配置项为枚举值且超出枚举则取默认值。这与文档中不按配置要求可能导致系统异常的告诫相互印证同时说明非法取值通常会被安全收敛而非直接崩溃。从源码结构看配置项模块日志级别为 5 时跟随 global_level以及global_level 为非法值时模块级别回退到 ERROR的兜底逻辑由日志服务进程 slogd 的配置管理模块见 slogd_config_mgr.c在加载配置时统一处理最终映射到各模块的动态级别管理中见 slogd_dynamic_level.c。四、日志查看实操4.1 查看系统类日志RC 形态下用户拥有 Device 侧登录权限可直接登录 Device 查看/var/log/npu/slog下的系统类日志# 查看Control CPU上系统进程的调试日志 ls -l /var/log/npu/slog/debug/device-os/ cat /var/log/npu/slog/debug/device-os/device-os_*.log # 查看Control CPU上系统进程的运行日志 ls -l /var/log/npu/slog/run/device-os/ # 查看Event日志 ls -l /var/log/npu/slog/run/event/ # 查看非Control CPUTS/TSDUMP/LP的系统类日志 ls -l /var/log/npu/slog/debug/device-0/4.2 查看应用类日志应用类日志按进程存放于device-app-pid目录先用ps找到目标业务进程的 PID再进入对应目录查看ps -elf | grep 应用名 # 假设业务进程PID为1234 ls -l /var/log/npu/slog/debug/device-app-1234/ cat /var/log/npu/slog/debug/device-app-1234/device-app-pid_*.log4.3 查看维测日志日志工具自身的问题如日志滚动异常、回传失败需要查看维测日志cat /var/log/npu/slog/slogd/slogdlog当slogdlog达到 1MB 后会自动滚动为slogdlog.old可通过比较两个文件的修改时间来辅助判断 slogd 进程的运行状态。4.4 日志记录格式无论系统类还是应用类日志单条日志的记录格式统一为见 日志简介[Level] ModuleName(PID,PName):DateTimeMS [FileName:LineNumber]LogContent各字段含义如下| 字段 | 说明 | | -- | -- | | Level | 日志级别包括 ERROR、WARNING、INFO、DEBUG。 | | ModuleName | 产生日志的模块的名称。 | | PID | 模块进程 ID。 | | PName | 模块进程名称。 | | DateTimeMS | 日志打印时间格式为yyyy-mm-dd-hh:mm:ss.fff.zzz年-月-日-时:分:秒:毫秒:微秒。 | | FileName:LineNumber | 调用日志打印接口的文件及对应的行号。 | | LogContent | 各模块具体的日志内容。 |典型日志样例[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了解该格式后在排查问题时可以先用grep按级别或模块快速过滤例如grep ERROR device-os_*.log再结合FileName:LineNumber定位到具体的组件源码文件。五、修改配置并重启日志进程修改/etc/slog.conf后需要重启日志进程slogd、sklogd 或 log-daemon使配置生效具体步骤见 重启日志进程执行如下命令停止日志进程kill -15 进程ID进程 ID 可以通过ps -elf | grep log命令查询。请优先使用kill -15停止 slogd 进程这样 slogd 进程接收到结束信号时会清理共享内存如果kill -15反复执行失败再使用kill -9强制停止。重启日志进程。对于 Atlas 200I/500 A2 推理产品日志进程会自动重启无需手动启动进程。一段时间后建议使用ps -elf | grep log命令确认是否重启成功。注意事项进程重启后系统类日志会判断上一个日志文件的容量是否达到上限若未达到上限新生成的系统日志会继续写入上一个日志文件内应用类日志则会写入一个全新的日志文件即使之前的日志文件大小未达到限定值。如果重启日志进程失败很可能是/var目录所在磁盘使用率过高所致进入根目录运行df -h检查若/var目录所在磁盘使用率达到 100% 导致 slogd 启动失败可进入/var/log/npu/slog目录手动删除一些较大的、时间较早的日志文件删除完成后重新启动日志进程。六、常见问题与定位思路Device 侧日志不落盘或日志量异常少检查global_level与各模块级别配置。若模块级别为5且全局级别为4模块日志不会打印若全局级别配置为非法值模块日志级别将回退为 ERROR仅打印 ERROR 级日志。日志文件过多导致磁盘占满调小DeviceOsMaxFileNum、DeviceOsNdebugMaxFileNum、DeviceMaxFileNum、DeviceAppMaxFileNum等数量配置或调小对应MaxFileSize若/var磁盘已满参照第五章重启异常处理手动清理。需要排查日志工具自身是否异常查看/var/log/npu/slog/slogd/slogdlog维测日志该文件记录了 slogd 自身的运行信息与滚动备份行为。日志时间与文件名对应关系文件名中的*为日志文件创建时的时间戳device-app-pid目录名中的pid是业务进程 ID可通过ps -elf与实际进程一一对应避免拿错文件。七、关联资源日志体系总览日志简介Ascend EP 形态日志查看对照阅读查看日志Ascend EP配置文件完整说明查看日志配置文件日志进程重启与异常处理重启日志进程Trace 日志软件栈维测信息内存落盘机制查看trace日志仓库默认配置模板milan_310rc/slog.conf、mini_rc/slog.confslogdlog 维测日志滚动与同步实现file_slogdlog_monitor.c配置加载与校验实现slogd_config_mgr.c、log_config_common.h【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表