新容器中运行npu-smi或hccn_tool等命令提示设备被占用
2025/05/16
163
问题信息
问题来源 | 产品大类 | 产品子类 | 关键字 |
---|---|---|---|
现网 | 安装部署 | 驱动固件 | npu-smi、hccn_tool、被占用 |
问题现象描述
在Atlas 300T 训练卡(型号:9000)、Atlas 300T Pro 训练卡(型号:9000)、Atlas 800 训练服务器(型号:9000)、Atlas 800 训练服务器(型号:9010)、Atlas 900 计算节点、Atlas 900T RAK 计算节点、Atlas 200T A2 Box16 异构子框、Atlas 800T A2 训练服务器、Atlas 800I A2 推理服务器、Atlas 900 A2 PoD 集群基础单元产品中的一个新启动的容器中调用npu-smi或hccn_tool等命令时提示设备被占用,返回“dcmi model initialized failed, because the device is used. ret is -8020”等类似报错信息,如图1所示。
原因分析
- 存在另一个普通容器正在使用这些设备。
- 宿主机上存在与pid为1的进程“mount namespace”不同的进程正在使用这些设备。
- 存在一个曾使用非root用户运行过的特权容器。
解决措施
- 在宿主机上执行cat /proc/uda/namespace_node命令查询当前环境上的设备使用情况。在ns_id小于128的映射表中根据udevid找到在新容器中不能使用的设备,进一步在映射表中找到正在使用该设备的进程,即表中的root_tgid。如图2所示,表示device 0和device 1被tgid为1162687的进程使用。
- 若该进程是宿主机上的进程,退出该进程即可;若通过ps -ef命令查询,发现进程1162687运行在容器(进程号为1162668)中,如图3所示,则根据进程名中的container id找到对应的容器,如图4所示,将该容器退出后,新的容器即可正常使用。
若新的普通容器中映射的设备分别被多个其他普通容器占用,则需要将这些普通容器全部退出,新的普通容器才能使用这些设备。