下载
中文
注册

如何通过Device日志确认Host进程的拉起与结束时间

问题定位时往往需要先初步定界到问题发生的大致时间点,再根据出错时间的详细日志继续定位。这时,可以通过查找Device日志的ringbuffer关键字,来判断业务进程的拉起与结束时间,定界到问题发生的时间点。

Ringbuffer是上报error信息的一片共享内存,任务拉起时会进行create ringbuffer操作,任务结束时会进行delete ringbuffer操作,所以可以通过ringbuffer日志确认任务的拉起和结束时间,详细操作如下:

Ascend EP标准形态

  1. 登录Host侧服务器。
  2. 通过msnpureport工具导出Device日志。
    在某个有读、写、执行权限的目录(如“/var/log/npu/report”,下文以此路径为例)下执行msnpureport工具,msnpureport工具命令示例如下,其中/usr/local/Ascend是驱动包的默认安装路径,请根据实际情况替换。
    /usr/local/Ascend/driver/tools/msnpureport -f
  3. 在导出的Device侧非Control CPU上的系统类日志根目录下,查询进程创建与销毁相关的日志。

    例如,在/var/log/npu/report/*/slog/device-os-0/[run|debug]/device-0目录下查询device-0上进程拉起与结束的日志信息,*表示该日志文件创建时的时间戳,命令示例如下:

    grep -rn ringbuffer

    日志片段举例如下:

    device-0_20231201062601524.log:23102:[EVENT] TSCH(-1,null):2023-12-02-14:29:25.780.720 17641 (dieid:0,cpuid:0) ringbuffer.c:177 delete_ringbuffer: pid=3299758, vf_id=0
    device-0_20231201062601524.log:23103:[EVENT] TSCH(-1,null):2023-12-02-14:29:25.780.756 17642 (dieid:0,cpuid:0) ringbuffer.c:134 create_ringbuffer: pid=3299758, vf_id=0, buffer_len=10, runtime ver=2, offset=276096, ringbuffer_addr=0x1f7dc00000.
    device-0_20231201062601524.log:23104:[EVENT] TSCH(-1,null):2023-12-02-14:29:25.780.774 17643 (dieid:0,cpuid:0) ringbuffer.c:163 create_ringbuffer: last_Id=21, vf_id=0, pid=3299758
    device-0_20231204114303693.log:23503:[EVENT] TSCH(-1,null):2023-12-04-11:44:15.752.017 47266 (dieid:0,cpuid:0) ringbuffer.c:177 delete_ringbuffer: pid=3299758, vf_id=0

    如上图所示:

    • 日志中“create_ringbuffer”关键字表示进程拉起,因此上图中device-0上ID为“3299758”的进程创建时间为“2023-12-02-14:29:25”。

      为了避免重复创建,每一次创建ringbuffer前都会进行ringbuffer删除操作,所以创建的日志包括“delete_ringbuffer”和“create_ringbuffer”。

      日志中,若对于同一个进程,有多个“create_ringbuffer”,则其中包含ringbuffer_addr关键字的日志时间表示该进程的拉起时间。

    • 日志中“delete_ringbuffer”关键字表示进程结束,因此上图中device-0上ID为“3299758”的进程销毁时间为“2023-12-04-11:44:15”。

      日志中,若对于同一个进程,有多个“delete_ringbuffer”,则最后一次“delete_ringbuffer”的日志时间表示该进程的结束时间。

Ascend RC形态

  1. 登录板端环境。
  2. 查看Device日志。

    例如,在“/var/log/npu/slog/[run|debug]/device-0”目录下查询device-0上进程拉起与结束的日志信息,命令示例如下:

    grep -rn ringbuffer

    日志举例如下:

    device-0_20231201062601524.log:23102:[EVENT] TSCH(-1,null):2023-12-02-14:29:25.780.720 17641 (dieid:0,cpuid:0) ringbuffer.c:177 delete_ringbuffer: pid=3299758, vf_id=0
    device-0_20231201062601524.log:23103:[EVENT] TSCH(-1,null):2023-12-02-14:29:25.780.756 17642 (dieid:0,cpuid:0) ringbuffer.c:134 create_ringbuffer: pid=3299758, vf_id=0, buffer_len=10, runtime ver=2, offset=276096, ringbuffer_addr=0x1f7dc00000.
    device-0_20231201062601524.log:23104:[EVENT] TSCH(-1,null):2023-12-02-14:29:25.780.774 17643 (dieid:0,cpuid:0) ringbuffer.c:163 create_ringbuffer: last_Id=21, vf_id=0, pid=3299758
    device-0_20231204114303693.log:23503:[EVENT] TSCH(-1,null):2023-12-04-11:44:15.752.017 47266 (dieid:0,cpuid:0) ringbuffer.c:177 delete_ringbuffer: pid=3299758, vf_id=0

    如上图所示: