linux性能優化基礎——iommu相關配置


此篇文檔介紹了IOMMU相關的信息:

https://blog.chaosjohn.com/Check-VT-D-or-IOMMU-under-Linux.html

iommu和vt-d都是io半虛擬化的一種技術,兩者很接近,只不過iommu是AMD的,vt-d是Intel的。

IO半虛擬化對比IO虛擬化,主要是虛擬機可直接和IO設備通信,而不必走VMM虛擬出來的虛擬IO設備。舉例來說,VMguest系統可以直接訪問物理顯卡並調用其資源,而不必通過VMM虛擬出來的顯卡調用資源。

linux中檢查IOMMU是否開啟

一般可以在主板BIOS/UEFI中可以找到,但是如果該硬件不支持虛擬化或者硬件固件被閹割但是實際上vt-d/iommu是被啟用的。所以通過BIOS/UEFI固件並不能保證一定可以看到IOMMU信息。

正確的方法是通過dmesg命令查看。因為如果vt-d或者ioMmu開啟並被使用,系統就會配置和啟動DMA重映射,所以通過觀察DMA是否啟動來得知iommu是否開啟。

執行以下命令:

dmesg | grep -i dmar

可以得到如下結果:

[    0.144034] DMAR: IOMMU enabled
[    0.779260] DMAR: Host address width 52
...

[    0.779305] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.781570] DMAR-IR: Enabled IRQ remapping in x2apic mode
...
[    3.776139] DMAR: Intel(R) Virtualization Technology for Directed I/O

可以看到有“IOMMU enabled”的信息,這說明此運行時系統打開了IOMMU。

除了用dmesg,還可以通過cat /proc/cmdline指令查看iommu是否打開。cmdline中的參數會被內核執行命令行時獲取並解析,但不代表該一定能夠起作用,也有發現cmdline中某配置被設置為enabling但是實際上系統卻並沒有打開它的情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM