昇腾社区首页
中文
注册

新容器中运行npu-smi或hccn_tool等命令提示设备被占用

问题描述

在一个新启动的容器中调用npu-smihccn_tool等命令时提示设备被占用,返回“dcmi model initialized failed, because the device is used. ret is -8020”等类似报错信息,如图1所示。

图1 报错信息

可能原因

  • 存在另一个普通容器正在使用这些设备。
  • 宿主机上存在与pid为1的进程“mount namespace”不同的进程正在使用这些设备。
  • 存在一个曾使用非root用户运行过的特权容器。

解决方案

  1. 在宿主机上执行cat /proc/uda/namespace_node命令查询当前环境上的设备使用情况。在ns_id小于128的映射表中根据udevid找到在新容器中不能使用的设备,进一步在映射表中找到正在使用该设备的进程,即表中的root_tgid。如图2所示,表示device 0和device 1被tgid为1162687的进程使用。
    图2 查看设备使用情况
  2. 若该进程是宿主机上的进程,退出该进程即可;若通过ps -ef命令查询,发现进程1162687运行在容器(进程号为1162668)中,如图3所示,则根据进程名中的container id找到对应的容器,如图4所示,将该容器退出后,新的容器即可正常使用。
    图3 查看进程
    图4 查找对应容器

    若新的普通容器中映射的设备分别被多个其他普通容器占用,则需要将这些普通容器全部退出,新的普通容器才能使用这些设备。