一、IOMMU简介
- IOMMU:input/output memory management unit。
- 连接DMA io bus和主存,完成从设备虚拟地址到物理地址的映射。
- 提供对故障设备的内存保护的功能。
优点
- 因为IOMMU的映射,能够将多个不连续的物理地址映射为大块连续的地址供设备使用,便于简化驱动设计
- 使旧设备(32bit设备)能够使用高位地址(能够改善内存使用,提高性能)
- 内存保护,避免设备使用不属于它的地址
- 提供硬件中断remapping功能
缺点
- 地址转换和管理开销带来的性能降级
- 消耗物理内存
虚拟化中的应用
一般来说,因为内存地址不同,虚拟机中的操作系统无法直接访问host上的设备。通过IOMMU,能够将设备地址在虚拟机中和host中映射为同样的支持,供虚拟机使用。这样的做法也能够缓解IO延时
iommu={off,force,noforce,soft}
通用IOMMU设置:参考文章:IOMMU - Linux 内核引导选项简介 - 开发