Elegantní virtualizační řešení s IOMMU

Možná si neuvědomujete, jak nepříjemný problém při virtualizaci obnášejí ovladače zařízení a jak nepěkná j...



Možná si neuvědomujete, jak nepříjemný problém při virtualizaci obnášejí
ovladače zařízení a jak nepěkná jsou jeho dnešní řešení. Pak si asi nedokážete
představit ani to, jak elegantní by být mohla. Nejprve se podívejme na to
dnešní a nepěkné. Při bootování je v X86 systému každému ovladači periferií
přiřazen rozsah paměťových adres v jádru OS. Toto přidělení je stálé, a ovladač
zařízení tak má výhradní přístup danému paměťovému rozpětí. Poté už probíhá jen
oboustranná komunikace mezi ovladačem a zařízením, mezi něž nelze vložit nějaké
virtualizační řešení tak, aby bylo možno sdílet i periferie. Obyčejně mezi
zařízením a jeho ovladačem totiž neprobíhá žádný patrný provoz, pouze čtení a
zápisy do paměti, které software ovlivnit nedokáže. Dnes jsou virtualizační
hostitelé nuceni převzít kontrolu nad všemi systémovými zařízeními, a
hostujícím OS jen poskytovat jejich nepravé a emulované napodobeniny. To sice
úlohu sdílení plní, ale pouze se zvýšenými náklady a omezeními. Představte si,
že provozujete server se špičkovým ovladačem diskového pole. Při bootu
hostujícího OS hostitel ze špičkového ovladače však "udělá" jednoduché zařízení
jako Adaptec PCI SCSI nebo paralelní ATA adaptér od Intelu. Hostitel předstírá
staré a jednoduché ovladače u všech komponent, neboť se starší zařízení snáze
emulují, využívají méně zdrojů a většina OS k nim bude mít odpovídající
ovladače. V nejhorším případě, což je zároveň běžná situace, je každý diskový
vstupně-výstupní požadavek hostujícího OS hostitelem převeden na systémové
volání uživatelské úrovně (usel-level), které potom projde dalšími dvěma či
třemi vrstvami, než se dostane k opravdovému ovladači zařízení, takže se
výsledek k hostujícímu OS dostává poté, co jsou data několikrát zkopírována z
jednoho umístění na jiné. Během celého procesu navíc hostující ovladač udržuje
jádro hostitelského OS uzamčené v čekání na odpověď. Nejenže tedy musí každý
požadavek pro blok diskového pole cestovat sem a tam celým
hostitelsko-hostujícím polem, ale musí být také rozložen na mnohem více
požadavků, na mnohem menší kousky. A nyní k elegantnímu řešení. Specifikace
IOMMU (I/O Memory Management Unit) od AMD ukazuje, že na náš problém existuje
poměrně jednoduchý lék. S IOMMU může hostitel vytvořit pravé a prosté mapování
mezi periferiemi a ovladači, které bude jedinečné pro každého hosta a bude
spravováno výhradně CPU. Procesor se vloží mezi ovladače a periferie, bude
sledovat paměťové přenosy a převodem adres, který x86 architektura nevztahuje
na I/O, vyvolá v každém hostovi dojem, že komunikuje přímo se zařízením.
Veškeré hardwarové vybavení a OS, které implementujeme pro podporu
virtualizace, učiní i nevirtualizované systémy a aplikace flexibilnějšími,
spolehlivějšími a efektivnějšími.(pat) 6 0555
Dnes jsou virtualizační hostitelé nuceni převzít kontrolu nade všemi
systémovými zařízeními, a hostujícím OS jen poskytovat jejich nepravé a
emulované napodobeniny.








Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.