Linux IOMMU 介绍
专栏文章
- QPS和TPS介绍
- Linux 清空缓存 drop caches
- Linux 使用 isolcpu 参数隔离 cpu
- Linux NUMA 介绍
- Linux hugepage 介绍和配置
- Linux IOMMU 介绍(当前)
IOMMU(Input/Output Memory Management Unit,输入输出的内存管理单元)是一种内存管理单元(MMU,Memory Management Unit),它将具有直接存储器访问(DMA)能力的I/O总线连接至主内存(Main Memory)。
介绍
说明:
MMU(Memory Management Unit,内存管理单元)支持多进程的虚拟地址共享同一个物理内存,以及对物理地址的访问进行权限检查的一个硬件单元- 传统的
MMU(内存管理单元)会把 CPU 访问的虚拟地址转化成为物理地址 IOMMU把设备(device)访问的虚拟地址转化成物理地址- 有些
IOMMU提供了访问内存保护机制防止错误地访问内存
使用场景:
- 在虚拟化技术(virtualization):
虚拟机操作系统(Guest OS)通常不知道它所访问的宿主机物理内存地址。如果对物理内存进行DMA(Direct Memory Access)操作,有可能破坏内存,因为硬件不知道给定Guest OS与宿主机物理地址之间的映射关系。IOMMU可以依靠将客户机物理地址映射到宿主机物理地址的相同或兼容转换表(translation table)映射(re-mapping)硬件访问地址,从而解决延迟问题。
配置方法
修改 /etc/default/grub,在字段 GRUB_CMDLINE_LINUX 后添加:
- 开启 IOMMU Pass-Through (iommu=pt)
# intel
GRUB_CMDLINE_LINUX="... intel_iommu=on iommu=pt"
# amd
GRUB_CMDLINE_LINUX="... amd_iommu=on iommu=pt"- 修改 grub
grub2-mkconfig -o /boot/grub2/grub.cfg
# or
grub-mkconfig -o /boot/grub/grub.cfg- 重启
rebootPS:
- 能解决
mlx5_core amd-vi event logged io_page_fault问题
- 上一页: Pause Pod 介绍
- 下一页: Go string 字符串
专栏文章
- QPS和TPS介绍
- Linux 清空缓存 drop caches
- Linux 使用 isolcpu 参数隔离 cpu
- Linux NUMA 介绍
- Linux hugepage 介绍和配置
- Linux IOMMU 介绍(当前)
最近更新
最新评论