Co to jest IOMMU i czy poprawi to wydajność mojej maszyny wirtualnej?

28

Chipset mojej płyty głównej obsługuje tę funkcję IOMMU , przeczytałem (ale nie rozumiem), że poprawia ona wydajność maszyny wirtualnej, pozwalając maszynie wirtualnej korzystać z rzeczywistego sprzętu fizycznego zamiast sprzętu wirtualnego.

Czy to naprawdę przynosi poprawę wydajności maszyny wirtualnej? a jeśli tak, to w jaki sposób mogę skorzystać z Virtualbox?

Uri Herrera
źródło

Odpowiedzi:

21

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.

ppetraki
źródło
Przeczytałem to w Przewodniku użytkownika mojej płyty głównej, mówiąc, że jeśli chipset je obsługuje, może zapewnić jakiś fizyczny dostęp do sprzętu hosta.
Uri Herrera,
Właśnie przeczytałem Wiki Xen, IOMMU wydaje się robić to, co robi SR-IOV, ale nie używam Xen i najwyraźniej Virtualbox nie robi z tego dobrego użytku.
Uri Herrera,
Nie, większość komputerów nie ma IOMMU. Może myślisz o IO-APIC?
psusi
1
Właściwie ten artykuł w Wikipedii wyjaśnia to całkiem dobrze: en.wikipedia.org/wiki/X86_virtualization . Wielką wygraną dla wsparcia IOMMU jest to, że możemy zmienić urządzenia, przez które przechodzimy w czasie wykonywania. Wcześniej musieliśmy określić zakres urządzeń na liście argumentów jądra i tylko te urządzenia peryferyjne kwalifikowały się do przejścia. IOMMU umożliwia mapowanie urządzeń według własnego uznania. Ponownie jest to wyłączny dostęp, albo używa go Twój host, albo jedna z maszyn wirtualnych. To jest naprawdę funkcja skoncentrowana na serwerze.
ppetraki
1
@UriHerrera Polecam używać KVM, który obsługuje również rozszerzenia wirtualizacyjne Intela i AMD. Jest bardziej elastyczny i ma więcej funkcji, w tym te znajdujące się w VirtualBox.
Oxwivi,