什么是 IOMMU PT
IOMMU PT(Input/Output Memory Management Unit - Pass-Through)是一种技术,主要用于虚拟化环境中,特别是在使用直接设备分配(也称为设备直通)的情况下。这项技术允许虚拟机直接访问物理硬件,如网络适配器,不需要通过主机操作系统进行额外的数据传输层,从而提高性能并减少延迟。
在没有IOMMU PT的情况下,当一个虚拟机尝试与外部设备通信时,数据通常需要先从虚拟机传递到宿主机的内存空间,然后由宿主机处理后再发送给目标设备。这个过程增加了额外的开销,并可能限制了某些对延迟敏感或高性能要求的应用程序的表现。
启用IOMMU PT后,虚拟机可以直接与指定的物理硬件通信,就像它运行在裸金属上一样。这样做的好处:
- 提高性能,降低延迟:减少了不必要的数据复制步骤;减少了中间环节带来的延迟,例如内存地址翻译;
- 开启后,虚拟机内存页可以直接映射到物理内存,大大提高了 DMA 请求的性能,能更好地支持硬件虚拟化特性。
不过需要注意的是,为了支持IOMMU PT功能,你的系统(包括CPU、主板BIOS设置以及使用的虚拟化软件)都需要兼容和支持这一特性。此外,在配置和使用过程中还需要考虑到安全性方面的问题,确保不会因为直接访问权限而暴露于潜在的安全风险中。
如何查看是否开启IOMMU PT
cat /proc/cmdline | grep 'iommu=pt'
‘/proc/cmdline’ 是Bootloader(例如uboot、grub)引导内核启动时传递给内核的,作用是指导内核启动。内核启动阶段会去解析cmdline,并根据cmdline去指导内核启动。其实就是传参。