DOCA 文档 v2.10.0

SNAP-4 服务版本说明

版本说明页面提供有关 NVIDIA® BlueField®-3 SNAP 软件的信息,例如变更和新功能、软件已知问题和缺陷修复。

NVIDIA SNAP 4.6.0 中的主要功能

  • 在使用 virtio-blk 协议时,改进了应用程序重启停机时间

  • 引入了新的插件概念

  • 用于 virtio-blk 协议的 SNAP 恢复 JSON 配置文件

  • 缺陷修复

参考编号

问题

4170472

描述:FIO 操作在 DPU 提供程序模式下挂起。

关键词:FIO

发现于版本:4.5.0

4161786

描述:当从 vhostd 重复添加或删除 VF 时,重置 vblk 设备失败。

关键词:VF

发现于版本:4.5.0

SNAP 问题

以下是此 NVMe/virtio-blk SNAP 软件版本的已知限制。

参考编号

问题

4110943

描述:除非事先为设备创建了 virtio-blk 控制器,否则不允许热移除热插拔 virtio-blk 设备。

解决方法:在需要执行热移除的设备上创建 virtio-blk 控制器。

关键词:热插拔,热移除

发现于版本:4.5.0

3631346

描述:当将动态 MSIX 与 NVMe 协议一起使用时,PF 控制器属性 free_queues(如“SR-IOV 动态 MSIX 管理”部分中所述)无效,并且始终显示 0

解决方法:忽略该值,并假定 free_queues 池足够大。

关键词:NVMe;MSIX

发现于版本:4.4.1

-

描述:不支持 SPDK bdev_uring。将在下一个版本中支持。

解决方法:不适用

关键词:NVMe

发现于版本:4.4.0

3817040

描述:当使用 --timeout 参数运行 nvme_controller_suspend RPC 时,如果超时到期,设备将不再运行且无法恢复。

解决方法:销毁并重新创建控制器。

关键词:NVMe

发现于版本:4.4.0

3809646

描述:当使用新的 DPA 提供程序时,在向 DPA 发送 DMA,然后发送中断时,它会在 DMA 写入缓冲区之前唤醒,从而导致 DPA 错过事件。

解决方法:添加基于软件的定期唤醒机制。

关键词:NVMe

发现于版本:4.4.0

3773346

描述:在 virtio-blk 控制器配置中,当使用 SPDK NVMe-oF 启动器作为后端时,未对齐的 size_max 值可能会导致内存损坏。

解决方法:size_maxseg_max 值必须是 2 的幂。

关键词:Virtio-blk;NVMe-oF;spdk

发现于版本:4.3.1

3745842

描述:当使用 NVMe/TCP SPDK 块设备作为后端运行时,SNAP 无法在超过 8 个内核上工作。

解决方法:使用仅使用 8 个内核的 Arm 内核掩码。

关键词:NVMe;TCP;SPDK

发现于版本:4.3.1

-

描述:容器镜像可能已损坏,导致容器状态显示为 exited,并显示错误消息 /usr/bin/supervisord: exec format error

解决方法:从 kubelet 中删除 YAML,使用 crictl images 列出镜像,并使用 crictl rmi <image-id> 删除镜像。运行 systemctl restart containerdsystemctl restart kubelet,然后再次将 YAML 文件复制到 kubelet。

关键词:NGC;容器镜像

发现于版本:4.3.1

3757171

描述:当使用大型 IO(>128K)和 SPDK 的 nvmf 启动器作为后端运行 virtio-blk 仿真时,IO 可能由于错误对齐而在 SPDK 层中失败。

解决方法:必须设置 virtio_blk_controller_create RPC 的 size_max 值,并且该值必须是 2 的幂。

关键词:SPDK,virtio-blk,size_max

发现于版本:4.3.1

3689918

3753637

描述:当配置大量仿真时,SNAP 容器启动需要很长时间,可能比默认 NVMe 驱动程序超时更长。

解决方法:将 NVMe 驱动程序 IO 超时增加到 300 秒(而不是 30 秒)。

关键词:NVMe;恢复;内核驱动程序

发现于版本:4.3.0

-

描述:当在 DPU Arm 内核上运行 64K 页面大小内核时(CentOS 8.x、Rocky 8.x 或 openEuler 20.x 就是这种情况),当前不支持 NVMeTCP XLIO。

解决方法:不适用

关键词:64K 页面大小;NVMeTCP XLIO

发现于版本:4.1.0

3264154

描述:当在 DPU Arm 内核上运行 64K 页面大小内核时(CentOS 8.x、Rocky 8.x 或 openEuler 20.x 就是这种情况),不支持 NVMeTCP XLIO。

解决方法:不适用

关键词:页面大小;NVMeTCP XLIO

发现于版本:4.1.0

-

描述:不支持 NVMe over RDMA 完全卸载。

解决方法:不适用

关键词:NVMe over RDMA;支持

发现于版本:4.0.0


操作系统/供应商问题

信息

以下不是 BlueField SNAP 限制。

参考编号

问题

4206444

描述:Linux 内核驱动程序不根据设备报告的最大 queue_size 强制执行 seg_max 限制。这可能会导致内核中触发 WARN_ON_ONCE(),从而导致驱动程序行为异常和潜在的系统挂起。

解决方法:确保所有 virtio-blk 控制器都配置了小于 (queue_size - 2)seg_max 值。

关键词:Virtio-blk;内核驱动程序;seg_maxqueue_size

报告于版本:4.6.0

-

描述:当使用热插拔 PCIe 设备时,在所有设备都插入后,必须重新启动主机,Windows 才能检测到所有设备(某些 Windows 版本将自动执行重新启动)。

解决方法:不适用

关键词:热插拔,Windows。

报告于版本:4.5.0

3748674

描述:在大多数现代 Linux 发行版上,当存在正在进行的 I/O 时,从主机上拔下 PCIe 功能可能会导致 virtio-blk 驱动程序挂起。

解决方法:不适用

关键词:热插拔,Linux。

报告于版本:4.5.0

4158322

描述:Windows 操作系统不支持在线 PCIe 重新扫描,因此每次 PCIe 热插拔操作后都需要重新启动系统。如果不重新启动,操作系统将无法检测到后续的热插拔操作,从而导致额外的热插拔尝试失败。

解决方法:在执行热插拔操作后,等待 Windows 操作系统完成重新启动过程,然后再提交另一个 virtio_blk_controller_hotplug RPC 以公开额外的热插拔设备。

关键词:Windows 操作系统,热插拔,响应超时

报告于版本:4.5.0

-

描述:一些旧的 Windows 操作系统 NVMe 驱动程序在使用 SGL 支持时存在错误。

解决方法:当使用 Windows 操作系统时,通过在 snap_rpc.py nvme_controller_create RPC 中将 --quirks 位 4 设置为 1 来禁用 SGL 支持。

关键词:Windows;NVMe

报告于版本:4.4.0

2879262

描述:当 virtio-blk 内核驱动程序找不到足够的 MSI-X 向量来满足其所有打开的 virtqueue 时,它会故障转移以将单个 MSI-X 向量分配给所有 virtqueue,这会对性能产生负面影响。此外,当大量(例如,64 个)virtqueue 与单个 MSI-X 关联时,内核可能会进入软锁死(内核错误),并且 IO 将挂起。

解决方法:始终保持 num_queues < num_msix。最佳实践是在创建 virtio-blk 控制器时完全不设置 --num_queues,并且最佳值会根据可用的 MSI-X 自动选择。

关键词:Virtio-blk;内核驱动程序;MSI-X

报告于版本:4.3.0

-

描述:如果在主机上加载热插拔驱动程序之前插入 PCIe 设备,则早于 4.19 的内核版本中的热插拔驱动程序不会启用插槽,即使插槽已占用(如插槽状态寄存器中检测到的存在所指示的那样)。这会导致固件更新 PCIe 插槽的存在状态,但内核在主机启动后不会启用 PCIe 插槽。因此

  • PCIe 设备不会在主机端的 lspci 中显示。

  • BDF 值在控制器上显示为 0

解决方法:将 pciehp.pciehp_force=1 添加到主机上的启动命令行。

关键词:Virtio-blk;内核驱动程序;热插拔

报告于版本:4.2.1

-

描述:RedHat/Centos 7.x 未正确处理“在线”(驱动程序探测后)命名空间添加/删除。

解决方法:在 snap_rpc.py nvme_controller_create 中使用 --quirks=0x2 选项。

关键词:NVMe;CentOS;RedHat;内核

报告于版本:4.1.0

-

描述:某些 Windows 驱动程序对“在线”(驱动程序探测后)命名空间添加/删除具有实验性支持,但此类支持未与设备通信。

解决方法:在 snap_rpc.py nvme_controller_create 中使用 --quirks=0x1 选项。

关键词:NVMe;Windows

报告于版本:4.1.0

-

描述:VMWare ESXi 仅当控制器支持“命名空间管理”时才支持“在线”(驱动程序探测后)命名空间添加/删除。

解决方法:在 snap_rpc.py nvme_controller_create 中使用 --quirks=0x8 选项。

关键词:NVMe,ESXi

报告于版本:4.1.0

-

描述:Ubuntu 22.04 不支持 500 个 VF。

解决方法:不适用

关键词:Virtio-blk;内核驱动程序;Ubuntu 22.04

报告于版本:4.1.0

-

描述:Virtio-blk Linux 内核驱动程序不处理 PCIe FLR 事件。

解决方法:不适用

关键词:Virtio-blk;内核驱动程序

报告于版本:4.0.0

3679373

描述:Virtio-blk spdk 驱动程序(基于 vfio-pci)不处理 PCIe FLR 事件。

解决方法:不适用

关键词:Virtio-blk;SPDK 驱动程序

报告于版本:4.3.0

-

描述:新的 virtio-blk Linux 内核驱动程序(从内核 4.18 开始)不支持在流量期间热移除。由于内核可能会自发生成 IO,因此在极少数情况下,即使在没有显式运行流量时也可能发生问题。

解决方法:不适用

关键词:Virtio-blk;内核驱动程序

报告于版本:4.0.0

描述:SPDK NVMf/RDMA 启动器无法连接到内核 NVMf/RDMA 远程目标。

解决方法:在 SPDK 配置上使用设置 spdk_rpc.py bdev_nvme_set_options --io-queue-requests=128

关键词:SPDK,NVMf,RDMA,内核

报告于版本:4.3.1

-

描述:Windows 操作系统 virtio-blk 驱动程序期望单个 IO 请求至少有 64K 数据可用

解决方法:使用 seg_maxsize_max 参数配置以满足要求 (`seg_max * size_max > 64K`)。

关键词:Windows,virtio-blk

报告于版本:4.3.1

-

描述:某些旧版本的 Windows 操作系统内置 virtio-blk 驱动程序存在故障,期望预安装第三方 virtio-blk 驱动程序才能正常运行。

解决方法:使用 fedora 发布的经过验证的第三方驱动程序(链接)。

关键词:Windows,virtio-blk

报告于版本:4.3.1


© 版权所有 2025,NVIDIA。 上次更新时间:2025 年 2 月 12 日。