2020-05-20T09:02:00Z

What is IOMMU?

8777

Can you explain what an IOMMU is? How does it improve VM performance?

ITCS user
Guest
77 Answers

author avatar
User

IOMMU stands for Input-Output Memory Management Unit. It connects i/o devices to the DMA bus the same way processor is connected to the memory via the DMA bus - https://en.wikipedia.org/wiki/Input%E2%80%93output_memory_management_unit. To me although I am not an expert the advantages are speed and security.

2020-07-26T19:08:54Z
author avatar
User

The only way IOMMU will help is if you start assigning HW resources directly to the VM. Just having it available doesn't make things faster.

It would help to know exactly what Motherboard/CPU is advertising this feature. IOMMU is a system specific IO mapping mechanism and can be used with most devices.

IOMMU sounds like a generic name for Intel VT-d and AMD IOV. In which case I don't think you can multiplex devices, it's a lot like PCI passthrough before all these fancy virtualization instructions existed :). SR-IOV is different, the peripheral itself must carry the support. The HW knows it's being virtualized and can delegate a HW slice of itself to the VM. Many VMs can talk to an SR-IOV device concurrently with very low overhead.

The only thing faster than SR-IOV is PCI passthrough though in that case only one VM can make use of that device, not even the host operating system can use it. PCI passthrough would be useful for say a VM that runs an intense database that would benefit from being attached to a FiberChannel SAN.

Getting closer to the HW does have limitations however, it makes your VMs less portable for deployments that require live migration for example. This applies to both SR-IOV and PCI passthrough.

Default virtualized Linux deployments usually use VirtIO which is pretty fast to begin with

2020-05-27T02:49:08Z
author avatar
Top 5Real User

IOMMU is a component in a memory controller that translates device virtual addresses into physical addresses. 


The IOMMU’s DMA re-mapping functionality is necessary in order for VMDirectPath I/O to work. DMA transactions sent by the passthrough PCI function carry guest OS physical addresses which must be translated into
host physical addresses by the IOMMU.


Hardware-assisted I/O MMU virtualization called Intel Virtualization Technology for Directed I/O (VT-d) in
Intel processors and AMD I/O Virtualization (AMD-Vi or IOMMU) in AMD processors, is an I/O memory
management feature that remaps I/O DMA transfers and device interrupts. This feature (strictly speaking, is a
function of the chipset, rather than the CPU) can allow virtual machines to have direct access to hardware I/O
devices, such as network cards, storage controllers (HBAs), and GPUs.

2021-07-28T07:16:27Z
author avatar
Consultant

DEEPEN DHULLA did explain well IOMMU. IOMMU has to be activated at the bios level. It exists on Intel and AMD platforms. It is used a lot inside virtualization platforms like VMware VSphere. It provides direct access to the underlayer hardware for a VM.


https://docs.vmware.com/en/VMw...

2020-05-27T00:44:25Z
author avatar
Top 5Real User

In virtualization, guest operating systems can use hardware that is not specifically made for virtualization. Higher performance hardware such as graphics cards use DMA to access memory directly; in a virtual environment, all memory addresses are re-mapped by the virtual machine software, which causes DMA devices to fail. The IOMMU handles this re-mapping, allowing the native device drivers to be used in a guest operating system.


Read more technical :


https://en.wikipedia.org/wiki/... and also


https://wiki.archlinux.org/ind...


https://www.linux-kvm.org/page...


In plain language, it helps in using hardware resources in VM, as good as it had direct hardware full access., thus you use the original driver and code in VM too and are able to get the best performance.

2020-05-26T10:08:49Z
author avatar
Top 5User

The easy way to understand is: whatever device you plug into the host hardware it's going to be able for the VM. 


The idea is to share resources and minimize the hardware cost.

2021-08-11T20:07:26Z
author avatar
Top 5Real User

input–output memory management unit (IOMMU) is a memory management unit(MMU) that connects a direct-memory-access–capable (DMA-capable) I/O bus to the main memory. Like a traditional MMU, which translates CPU-visible virtual addresses to physical addresses, the IOMMU maps device-visible virtual addresses (also called device addresses or I/O addresses in this context) to physical addresses. 


The advantages of having an IOMMU, compared to direct physical addressing of the memory (DMA), include:



  • Large regions of memory can be allocated without the need to be contiguous in physical memory – the IOMMU maps contiguous virtual addresses to the underlying fragmented physical addresses. Thus, the use of vectored I/O (scatter-gather lists) can sometimes be avoided.

  • Devices that do not support memory addresses long enough to address the entire physical memory can still address the entire memory through the IOMMU, avoiding overheads associated with copying buffers to and from the peripheral's addressable memory space.

  • It also helps a guest Virtualized operating System to Remap memory and Share a memory. 

2021-07-30T00:48:15Z
Find out what your peers are saying about VMware, KVM, Proxmox and others in Server Virtualization Software. Updated: September 2021.
536,053 professionals have used our research since 2012.