进程异常退出后重新执行任务失败
内存未释放
现象描述
测试用例长稳运行时,出现内存泄漏的现象,内存占用持续上升。如图1所示。
图1 内存占用持续上升

可能原因
分析上述日志信息,可能存在以下故障原因:
系统存在只申请内存不释放内存的问题,正常情况下,内存申请与释放必须成对出现。
处理步骤
针对分析的故障可能原因,可以参考下面步骤处理:
排查所有的内存申请和释放的地方,保证申请与释放一一对应。例如aclrtMalloc与aclrtFree,aclrtMallocHost与aclrtFreeHost、aclrtCreateStream与aclrtDestroyStream等。
父主题: FAQ
Event数量超过上限导致aclrtRecordEvent接口返回失败
现象描述
调用aclrtRecordEvent接口在Stream中记录一个Event时,日志中的报错如下,红框中是关键日志信息,提示Event ID申请失败:

可能原因
分析上述日志信息,可能存在以下故障原因:Event ID的数量超过上限。
处理步骤
多Stream之间同步等待的场景下,Event ID的资源时可以复用的,复用Event ID的流程是:在调用aclrtRecordEvent接口+aclrtStreamWaitEvent接口后,若指定的Event已完成,则需要及时调用aclrtResetEvent接口释放Event资源。
需要用户按照复用Event ID的流程优化代码逻辑。
父主题: FAQ
进程异常退出后重新执行任务失败
现象描述
进程异常退出时,包括强行终止任务(如ctrl + c或者kill命令终止进程)的场景,然后重新启动任务失败。
可能原因
进程异常退出时,只能依赖系统检测到程序退出后才进行资源释放,释放资源最长需要一分钟的执行时间。如果在未执行完资源释放前执行新的任务,可能导致新执行的任务失败。
处理步骤
进程异常退出后需要等待一分钟,才能保证下一次重新执行任务成功。
父主题: FAQ
进程异常时资源清理的处理建议
现象描述
用户捕获异常退出信号,并在信号处理函数中释放已申请资源,下一次执行时会报执行失败。此时查看日志,会发现如图1所示报错。
图1 unbind model stream failed
可能原因
进程异常时,host侧内核态驱动会自动检测并发起对应进程device侧资源释放的流程,不需要用户捕获进程异常的信号并主动完成清理。若用户主动释放,会影响到系统的资源释放流程。
处理步骤
用户无需关注进程异常退出信号。
父主题: FAQ
用户进程异常退出后重启进程失败
现象描述
用户进程卡住或者用户强制退出进程后,再次重启,重启后发现进程无法正常启动。类似的日志信息如下:
AscendCL日志信息:aclrtProcessReport failed
aclrtProcessReport failed, ret = 107012
aclrtProcessReport failed, ret = 107012
Runtime日志信息:halResourceIdAlloc xxx failed
[ERROR] DRV(2086,rtstest_host):2021-06-09-02:14:46.034.368 [ascend][curpid: 2086, 2086][drv][tsdrv][halResourceIdAlloc 477]id is exhausted, type(0 stream), range[0, 1024), dev_id(0), tsid(0).
[ERROR] RUNTIME(2086,rtstest_host):2021-06-09-02:14:46.034.380 [npu_driver.cc:285]2086 StreamIdAlloc:[driver interface] halResourceIdAlloc streamid failed: device_id=0, tsId=0, drvRetCode=48!
[ERROR] RUNTIME(2086,rtstest_host):2021-06-09-02:14:46.034.401 [stream.cc:448]2086 Setup:Failed to alloc stream id, retCode=0x702001a.
[ERROR] RUNTIME(2086,rtstest_host):2021-06-09-02:14:46.034.416 [context.cc:1251]2086 StreamCreate:Setup stream failed, retCode=0x702001a.
[ERROR] RUNTIME(2086,rtstest_host):2021-06-09-02:14:46.034.440 [logger.cc:211]2086 StreamCreate:Create stream failed, priority=7 ,flags=0.
[ERROR] RUNTIME(2086,rtstest_host):2021-06-09-02:14:46.034.458 [api_c.cc:461]2086 rtStreamCreateWithFlags:ErrCode=207008, desc=[driver error:no stream resource], InnerCode=0x702001a
[ERROR] RUNTIME(2086,rtstest_host):2021-06-09-02:14:46.034.469 [error_message_manage.cc:26]2086 ReportFuncErrorReason:rtStreamCreateWithFlags execute failed, reason=[driver error:no stream resource]
可能原因
通过日志分析无法正常重启的原因可能是public taskid、stream id、eventid等资源申请不到引起的:
- 资源已经被其他进程占用完。
- 上一个进程退出时还未完全释放完资源。
处理步骤
针对上述可能原因,可以按以下方式处理:
- 等待一分钟后再重新启动进程,保证上一个进程资源释放完成。
- 停止其他进程或者等其他进程执行完成后再启动进程。
- 如果通过上述方式处理后仍然申请失败,建议检查是否超过了可用的资源上限,如果未超上限,则需要重启环境强行释放资源、恢复环境。
父主题: FAQ
在线提单