Tak krótko mówiąc, jedynym sposobem, w jaki pomoże IOMMU, jest rozpoczęcie przydzielania zasobów sprzętowych bezpośrednio do maszyny wirtualnej. Samo to nie przyspiesza.
Pomoże to wiedzieć dokładnie, co płyta główna / procesor reklamuje tę funkcję. IOMMU jest specyficznym dla systemu mechanizmem mapowania IO i może być używany z większością urządzeń.
IOMMU brzmi jak ogólna nazwa dla Intel VT-d i AMD IOV. W takim przypadku nie sądzę, abyś mógł multipleksować urządzenia, to przypomina transmisję PCI zanim wszystkie te fantazyjne instrukcje wirtualizacji istniały :). SR-IOV jest inny, samo urządzenie peryferyjne musi nosić podporę. HW wie, że jest wirtualizowany i może przekazać swój kawałek HW na maszynę wirtualną. Wiele maszyn wirtualnych może komunikować się z urządzeniem SR-IOV jednocześnie z bardzo niskim narzutem.
Jedyną rzeczą szybszą niż SR-IOV jest przejście przez PCI, chociaż w takim przypadku tylko jedna maszyna wirtualna może korzystać z tego urządzenia, nawet system operacyjny hosta nie może go używać. Przekazywanie PCI byłoby przydatne na przykład w przypadku maszyny wirtualnej z intensywną bazą danych, która zyskałaby na dołączeniu do sieci SAN FibreChannel.
Zbliżanie się do HW ma jednak pewne ograniczenia, sprawia, że maszyny wirtualne są mniej przenośne w przypadku wdrożeń wymagających na przykład migracji na żywo. Dotyczy to zarówno przejścia SR-IOV, jak i PCI.
Domyślne zwirtualizowane wdrożenia Linuksa zwykle używają VirtIO, które jest dość szybkie na początek.