[310P1][ARM64] 宿主机无法创建 vNPU,报错 create vnpu failed,Hugepages 始终显示 0/0
收藏回复举报
[310P1][ARM64] 宿主机无法创建 vNPU,报错 create vnpu failed,Hugepages 始终显示 0/0
t('forum.solved') 已解决
发表于2026-01-12 23:19:36
0 查看

【问题描述】 在 ARM64 + OpenEuler 环境下,使用 Ascend 310P1 推理卡尝试切分 vNPU 失败。 尽管已经在 OS 层面开启了 HugePages 并且配置了 iommu.passthrough=1,但 npu-smi info 中显示的 Hugepages-Usage 分母始终为 0,且驱动日志报错 ret(-22)

【环境信息】

  • 硬件型号:Ascend 310P1 (NPU ID 0 和 32)

  • CPU 架构:Aarch64 (Phytium 飞腾)

  • 操作系统:OpenEuler 22.03 LTS (Kernel 5.10.0-136.108.0.188.oe2203sp1.aarch64)

  • NPU 驱动/固件版本:24.1.t35

  • 容器环境:操作均在宿主机 Root 下执行,确认未在 Docker 内。

  • cke_66642.png

  • 【操作步骤与报错】

  1. 确认设备空闲(无进程占用)。

  2. 执行切分命令:

    Bash
    bash-5.1# npu-smi set -t vnpu-mode -d 0
            Status                         : OK
            Message                        : Set vnpu docker mode success
    bash-5.1# npu-smi set -t create-vnpu -i 32 -c 0 -f vir02
    create vnpu failed.

【关键日志信息】

1. dmesg 驱动报错日志: 系统日志显示创建虚拟设备时参数无效 (ret(-22) -> EINVAL),且无法发送消息给设备管理。

[ascend] [devdrv] [ERROR] [dev_mnt_create_vdevice_single 543] create vfid failed, phy_id:2, core_num:2, vfid:1, ret:-1
[ascend] [devdrv] [ERROR] [devdrv_manager_ioctl_create_vdev 1406] create_vdevice_single fail, devid(1) ret(-22).
[ascend] [vmng_host] [ERROR] [vmngh_vdev_msg_send 98] Send message failed. (dev_id=2; vfid=1; ret=0; len=976; error_code=-1)
# 完整驱动日志输出
bash-5.1# dmesg | grep -i "npu" | tail -n 20

[38440.786696] [ascend] [devdrv] [ERROR] [dev_mnt_create_vdevice_single 543] <npu-smi:1843738,1843738> create vfid failed, phy_id:0, core_num:1, vfid:1, ret:-1

[38440.786722] [ascend] [devdrv] [ERROR] [devdrv_manager_ioctl_create_vdev 1406] <npu-smi:1843738,1843738> create_vdevice_single fail, devid(0) ret(-22).

[38466.954153] [ascend] [ts_agent] [create_vf_worker 193] <npu-smi:1845216,1845216> create vf worker end, dev_id=0, vf_id=1, ts_id=0, vsq_num=102

[38466.954282] [ascend] [ts_agent] [get_vf_info 35] <npu-smi:1845216,1845216> get vf info end, dev_id=0, vf_id=1, aicore_num=2, vfg_id=0, vf_aicpu_bitmap=6, vfg_aicpu_bitmap=6.

[38466.954368] [ascend] [ts_agent] [send_create_vf_to_ts 148] <npu-smi:1845216,1845216> send create vf to ts success, dev_id=0, ts_id=0, vf_id=1, vfg_id=0, cmd_type=30

[38466.954372] [ascend] [ts_agent] [ts_agent_vf_create 222] <npu-smi:1845216,1845216> create vf worker success, dev_id=0, vf_id=1, vfg_id=0, aic_num=2, vfg_aicpu_bitmap=6.

[38466.954787] [ascend] [vmng_host] [ERROR] [vmngh_vdev_msg_send 98] <npu-smi:1845216> Send message failed. (dev_id=0; vfid=1; ret=0; len=976; error_code=-1)

[38466.954798] [ascend] [vmng_host] [ERROR] [vmngh_init_instance_client_device 1502] <npu-smi:1845216> Send msg failed. (dev_id=0; vfid=1)

[38466.956185] [ascend] [vmng_host] [ERROR] [vmngh_container_client_online_mini_v2 162] <npu-smi:1845216> Init instance all client device failed. (dev_id=0; vfid=1)

[38466.956365] [ascend] [devdrv] [ERROR] [dev_mnt_create_vdevice_single 543] <npu-smi:1845216,1845216> create vfid failed, phy_id:0, core_num:2, vfid:1, ret:-1

[38466.956392] [ascend] [devdrv] [ERROR] [devdrv_manager_ioctl_create_vdev 1406] <npu-smi:1845216,1845216> create_vdevice_single fail, devid(0) ret(-22).

[38649.141530] [ascend] [ts_agent] [create_vf_worker 193] <npu-smi:1854189,1854189> create vf worker end, dev_id=2, vf_id=1, ts_id=0, vsq_num=102

[38649.141667] [ascend] [ts_agent] [get_vf_info 35] <npu-smi:1854189,1854189> get vf info end, dev_id=2, vf_id=1, aicore_num=2, vfg_id=0, vf_aicpu_bitmap=6, vfg_aicpu_bitmap=6.

[38649.141767] [ascend] [ts_agent] [send_create_vf_to_ts 148] <npu-smi:1854189,1854189> send create vf to ts success, dev_id=2, ts_id=0, vf_id=1, vfg_id=0, cmd_type=30

[38649.141772] [ascend] [ts_agent] [ts_agent_vf_create 222] <npu-smi:1854189,1854189> create vf worker success, dev_id=2, vf_id=1, vfg_id=0, aic_num=2, vfg_aicpu_bitmap=6.

[38649.142226] [ascend] [vmng_host] [ERROR] [vmngh_vdev_msg_send 98] <npu-smi:1854189> Send message failed. (dev_id=2; vfid=1; ret=0; len=976; error_code=-1)

[38649.142235] [ascend] [vmng_host] [ERROR] [vmngh_init_instance_client_device 1502] <npu-smi:1854189> Send msg failed. (dev_id=2; vfid=1)

[38649.143569] [ascend] [vmng_host] [ERROR] [vmngh_container_client_online_mini_v2 162] <npu-smi:1854189> Init instance all client device failed. (dev_id=2; vfid=1)

[38649.144115] [ascend] [devdrv] [ERROR] [dev_mnt_create_vdevice_single 543] <npu-smi:1854189,1854189> create vfid failed, phy_id:2, core_num:2, vfid:1, ret:-1

[38649.144142] [ascend] [devdrv] [ERROR] [devdrv_manager_ioctl_create_vdev 1406] <npu-smi:1854189,1854189> create_vdevice_single fail, devid(1) ret(-22).

2. npu-smi info 状态异常: Hugepages-Usage(page) 显示为 0 / 0,是否说明驱动未识别到大页内存。

+-------------------------------+-----------------+------------------------------------------------------+
| NPU     Name                  | Health          | Power(W)     Temp(C)           Hugepages-Usage(page) |
| Chip    Device                | Bus-Id          | AICore(%)    Memory-Usage(MB)                        |
+===============================+=================+======================================================+
| 0       310P1                 | OK              | NA           46                0      / 0            |
+-------------------------------+-----------------+------------------------------------------------------+

【已尝试的排查方案】

  1. 开启大页内存与 SMMU 直通: 已修改 /etc/default/grub 并重新生成引导文件(grub2-mkconfig),已重启生效。 cat /proc/cmdline 输出确认参数已加载:

    BOOT_IMAGE=... smmu.bypassdev=... iommu.passthrough=1 default_hugepagesz=2M hugepagesz=2M hugepages=2048
  2. 验证 OS 层面大页已开启grep Huge /proc/meminfo 显示系统已预留内存:

    HugePages_Total:     2048
    HugePages_Free:      2048
  3. 排除占用: 使用 fuser -v /dev/davinci*lsof 确认无任何业务进程占用 NPU。

我要发帖子