更新时间:2025-07-17 GMT+08:00
Pod实例异常,显示无法找到设备文件
问题现象
Pod实例创建失败,报错信息如下:
Error: failed to generate container "af736..." spec: failed to apply OCI options: lstat /dev/davinci4: no such file or directory
同时,执行以下命令,查看PCIE总线的数量。
lspci | grep -i accelerator | wc -l
当回显结果小于预期数目时,可以判断发生了PCIE断链。
问题原因
昇腾Snt9设备发生PCIE断链后,设备驱动未能上报准确的掉卡信息,导致任务仍被调度至断链的卡。
您可以执行以下命令,进一步验证PCIE是否断链:
npu-smi info -m
回显结果如下:
NPU ID Chip ID Chip Logic ID Chip Name 0 0 0 Ascend xxx 0 1 - Mcu 1 0 1 Ascend xxx 1 1 - Mcu 2 0 2 Ascend xxx 2 1 - Mcu 3 0 3 Ascend xxx 3 1 - Mcu 5 0 4 Ascend xxx 5 1 - Mcu 6 0 5 Ascend xxx 6 1 - Mcu 7 0 6 Ascend xxx 7 1 - Mcu
由NPU ID可知,昇腾Snt9设备中的第4张丢失,即发生PCIE断链。在此过程中,设备驱动对NPU卡的Chip Logic ID进行了重排,Chip Logic ID 7丢失。CCE AI套件(Ascend NPU)插件上报信息时只会更新Chip Logic ID,不会更新Chip Logic ID与NPU ID的对应关系,因此Kubernetes会认为原有的Chip Logic ID 7对应的第7张NPU卡发生故障,无法参与调度,而原Chip Logic ID 4所对应的第4张NPU卡依然被调度器识别为可用资源。
解决方案
升级Snt9设备的驱动版本到24.1.rc2及以上版本即可。新版本的驱动不会在PCIE断链后进行Chip Logic ID重排,可以上报正确的掉卡情况。
升级驱动后,执行以下命令,验证以上结论。
npu-smi info -m
回显结果如下,可以发现在PCIE断链后,新版本驱动在PCIE断链后没有对Chip Logic ID进行重排。
NPU ID Chip ID Chip Logic ID Chip Name -1 0 - Mcu 0 0 0 Ascend xxx 0 1 - Mcu 1 0 1 Ascend xxx 1 1 - Mcu 2 0 2 Ascend xxx 2 1 - Mcu 3 0 3 Ascend xxx 3 1 - Mcu 5 0 5 Ascend xxx 5 1 - Mcu 6 0 6 Ascend xxx 6 1 - Mcu 7 0 7 Ascend xxx 7 1 - Mcu