linux下检查项目是否启动,Linux 下检查 VT-d / IOMMU 是否开启

介绍

VT-d 和 IOMMU 其实都是指的 I/O 虚拟化,只不过前者是 Intel 的叫法,后者是 AMD 的叫法:

VT-d 全称为 Intel® Virtualization Technology for Directed I/O

IOMMU 全称为 Input/Output Memory Management Unit

这项技术是可以让PCI-e设备的资源直接分配给虚拟机,即 PCI直通。

举个例子,在虚拟客户机里可以直接访问到物理显卡,性能比使用由 VMM/Hypervisor 虚拟出来的显卡好很多,并且还支持 显卡加速。

在 Linux 下检查是否开启

一般来说,在主板的 BIOS/UEFI 里,能找到 VT-d / IOMMU 的设置项,设为开启即可。

但是也有特殊情况,某些主板里是找不到该项设置的,这里分两种情况:

主板硬件或固件不支持 I/O 虚拟化

主板刷入了阉割版的固件,但是实际上 VT-d / IOMMU 是被启用的

那如果在 Linux 下如何检查是否开启呢?

如果 VT-d / IOMMU 被启用,Linux 在启动过程中会配置 DMA重映射,所以简单的方法是在 dmesg 里查找 DMAR 相关项。

在已开启的机子上:

# dmesg | grep DMAR

[ 0.000000] ACPI: DMAR 0x00000000BBECB000 0000A8 (v01 LENOVO TP-R0D 00000930 PTEC 00000002)

[ 0.001000] DMAR: Host address width 39

[ 0.001000] DMAR: DRHD base: 0x000000fed90000 flags: 0x0

[ 0.001000] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e

[ 0.001000] DMAR: DRHD base: 0x000000fed91000 flags: 0x1

[ 0.001000] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da

[ 0.001000] DMAR: RMRR base: 0x000000bbdd8000 end: 0x000000bbdf7fff

[ 0.001000] DMAR: RMRR base: 0x000000bd000000 end: 0x000000bf7fffff

[ 0.001000] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1

[ 0.001000] DMAR-IR: HPET id 0 under DRHD base 0xfed91000

[ 0.001000] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.

[ 0.002000] DMAR-IR: Enabled IRQ remapping in x2apic mode

复制代码

观察最后一行,可以看到类似 DMAR-IR: Enabled IRQ remapping in xxxxx mode 的输出

在未开启的机子上:

# dmesg | grep DMAR

#

复制代码

什么输出都没有,即没有找到任何与 DMAR 相关的项

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值