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?

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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.