我读过这个。
但我正在使用 PCI UIO,因此我需要连续的物理内存。我说的是(除其他外)virtio,所以 IOMMU 的存在在这里无济于事。我同意 PCI-VFIO 有更好和更安全的方法,但据我了解,IOMMU 虚拟化技术并不成熟。
在客户机上运行的用户空间中编写 PCI-UIO virtio 驱动程序需要物理连续内存。另外,并不是所有的HW都有IOMMU,所以即使是这么简单的hosts系统,也不能使用VFIO,需要连续的物理内存……
因此,简而言之,只要 IOMMU 不是无处不在,并且没有在虚拟器上正确模拟,似乎就需要从用户空间分配连续的物理内存。
我知道用户可以从/proc/<pid>/
... 读取页面映射,并且允许 dpdk 正在使用的尝试和错误方法...
但是感觉连续的物理内存分配通常应该是内核模块的工作......而且我不能成为第一个面临这种情况的人......
这样的内核模块存在吗?