考虑到NVMe SSD是一个通用的PCI设备,VFIO的PCI设备实现层(vfio-pci模块)提供了和普通设备驱动类似的作用,可高效地穿过内核若干抽象层,在/dev/vfio目录下为设备所在的IOMMU group生成相关文件,继而将设备暴露出来。 UIO和VFIO两种方式各有优势,也在不断地完善和演进中。如果想要更安全可控地操作硬件设备,笔者推荐通过...
考虑到NVMe SSD是一个通用的PCI设备,VFIO的PCI设备实现层(vfio-pci模块)提供了和普通设备驱动类似的作用,可高效地穿过内核若干抽象层,在/dev/vfio目录下为设备所在的IOMMU group生成相关文件,继而将设备暴露出来。 UIO和VFIO两种方式各有优势,也在不断地完善和演进中。如果想要更安全可控地操作硬件设备,笔者推荐通过...
Iommu.passthrough:如果 IOMMU 可用,SPDK 建议使用 vfio-pci 驱动程序。否则,请使用 uio_pci_generic 或 igb_uio。要使用 uio_pci_generic 或 igb_uio 驱动程序,应禁用 IOMMU 或将其设为直通模式。如果未设置 iommu.passthrough,vfio-pci 驱动程序将对 DMA 使用 I/O 虚拟地址 (IOVA)。这对于 IOMMU ...
我们强烈建议使用 vfio 部署应用程序并启用 IOMMU,目前完全支持 IOMMU SPDK 默认情况下加载使用 uio_pci_generic 内核驱动 IOMMU 可能存在于许多平台上并启用。当 IOMMU 存在并启用时, SPDK 预配置脚本 scripts/setup.sh 将自动选择加载 vfio-pci 驱动; 但是,某些设备在绑定到 vfio-pci uio_pci_generic 内核驱动程...
用户空间驱动程序利用 uio 或 vfio 中的功能将设备的 PCI BAR 映射到当前进程,从而允许驱动程序直接执行 MMIO。例如,SPDK NVMe 驱动程序映射 NVMe 设备的 BAR,然后按照 NVMe 规范初始化设备、创建队列对并最终发送 I/O。 ...
在了解了SPDK的IO栈之后,我们进一步来分析一下vhost进程的线程模型,如下图所示。图中示例场景为,一台服务器上插了一张NVMe SSD卡,卡上划分了三个namespace;三个namespace分别配给了三台虚拟机的vhost-user-blk-pci设备。 vhost进程启动时可以配置多个轮循线程(reactor),每个线程绑定一个物理CPU。在示例场景下,我...
接下来,运行位于SPDK目录下的scripts/setup.sh脚本,将VMD设备(即RAID bus controller)的BDF绑定到uio_pci_generic或vfio-pci,通过PCI_WHITELIST参数来实现。绑定命令如下:$PCI_WHITELIST=”若要继续操作,请确保已正确绑定VMD设备到uio_pci_generic或vfio-pci,并使用PCI_WHITELIST参数进行指定。接下来,可以尝试...
0000:80:04.0 1 vfio-pci ... virtio BDF Numa Node Driver Name Device Name MMIO(memory-mapped I/O) MMIO和PMIO(port-mapped I/O)作为互补的解决方案实现了CPU和外围设备的IO互通。IO和内存使用相同的地址空间,即CPU指令中的地址既可以指向内存,也可以指向特定的IO设备。每个IO设备监控CPU的地址总线并对CP...
通过UIO或VFIO把PCI设备的BAR(Base Address Register)地址映射到应用进程的空间,这样SPDK用户态驱动就可以遵循NVMe的规范来初始化NVMe SSD,创建出最基本的I/O发送和完成队列,最终实现对NVMe SSD设备的I/O读或写操作。 3.SPDK NVMe驱动性能 SPDK用户态驱动是专门为NVMe SSD优化的,尤其是对高速NVMe SSD,比如基于3D...
According to the [SPDK System Configuration User Guide](https://spdk.io/doc/system_configuration.html), neither uio_pci_generic nor vfio_pci is universally suitable for all devices and environments. Therefore, the preflight installation enables both uio_pci_generic and vfio_pci kernel modules, al...