Memória és perifériák virtualizációja

Slides:



Advertisements
Hasonló előadás
Tamás Kincső, OSZK, Analitikus Feldolgozó Osztály, osztályvezető A részdokumentumok szolgáltatása az ELDORADO-ban ELDORADO konferencia a partnerkönyvtárakkal.
Advertisements

A hálózat működése 1. A DHCP és az APIPA
Virtualizációs technikák
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Virtualizált Biztonságos BOINC Németh Dénes Deák Szabolcs Szeberényi Imre.
© Neeraj Suri EU-NSF ICT March 2006 Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék V IRTUALIZÁCIÓ Micskei.
A számítógép műszaki, fizikai része
1 Számítógépek felépítése 9. előadás I/O rendszerek.
Licencelés virtualizált környezetben
Memóriák típusai, jellemzői
A számítógép felépítése
A számítógép felépítése
Virtualizáció Micskei Zoltán Operációs rendszerek alapjai (vimia024)
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Virtualizáció dr. Micskei Zoltán
1 Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Szolgáltatásbiztonsági kérdések virtualizált környezetben.
Szerver oldali virtualizáció
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék CPU virtualizációs technológiák Micskei Zoltán, Tóth Dániel.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék CPU és memória virtualizáció Tóth Dániel Virtualizációs.
Kiszolgáló oldali virtualizáció
Kiszolgáló oldali virtualizáció
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Kiszolgáló oldali virtualizáció Tóth Dániel, Micskei Zoltán,
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Memória és perifériák virtualizációja Micskei Zoltán, Tóth.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Alkalmazás és megjelenítés virtualizáció Micskei Zoltán.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Kliens oldali virtualizáció Micskei Zoltán
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Memória és perifériák virtualizációja Tóth Dániel Virtualizációs.
Virtualizáció Korszerű Adatbázisok Ferenci László
A számítógép alapegységei
A számítógép felépítése
A számítógép felépítése
4. Gyires Béla Informatikai Nap május 6.1 Márton Ágnes Debreceni Egyetem Informatikai Kar Informatikai Rendszerek és Hálózatok Tanszék A Virtual.
Utasítás végrehajtás lépései
Storage Virtualization Presentation Virtualization Server Virtualization Desktop Virtualization Application Virtualization SYSTEM CENTER.
PIC processzor és környezete
CISC - RISC processzor jellemzők
Számítógép memória jellemzői
Virtualizáció Számítógép architektúrák I. Gyakorlat Radó János.
Virtualizáció Számítógép architektúrák I. Gyakorlat Radó János.
Felkészítő tanár: Széki Tibor tanár úr
A memóriák típusai, jellemzői
1 Operációs rendszerek Az NT folyamatok kezelése.
1 Operációs rendszerek Az ütemezés megvalósítása.
1 Operációs rendszerek A Windows NT memóriakezelése.
Demo/teszt környezetek Szerver konszolidáció Adatközpontok alapja.
szakmérnök hallgatók számára
Kölcsönös kizárás (bináris és nembináris szemaforok)
SZÁMÍTÓGÉP ARCHITEKTÚRÁK - 4
1 Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Modellezés gyakorlat Micskei Zoltán
PIO és DMA Zeke Éva Anita Készült a Számítógép rendszerek és perifériák tantárgyhoz.
Prímrekord, 2005 Csajbók Tímea, Farkas Gábor, Kasza János.
A Neumann-elvű gépek A Neumann elvek:
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék CPU virtualizáció Micskei Zoltán, Tóth Dániel Virtualizációs.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Alkalmazás és megjelenítés virtualizáció Micskei Zoltán.
Magas rendelkezésre állású Hyper-V rendszer építése
Egy második generációs gép (az IBM 7094) felépítése
CUDA C/C++ programozás
Óravázlat Készítette: Toldi Miklós
Ismerkedjünk tovább a számítógéppel
Írja fel a tizes számrendszerbeli
2. Operációs rendszerek.
Mikroprocesszorok (Microprocessors, CPU-s)
A számítógép felépítése
Desktop virtualizáció Microsoft VDI használatával Háló Gyula.
Memória példák Feladat Egy számítógép rendszermemóriája egycsatornás, 64 bites adategységekkel rendelkező DDR1-DRAM-ra épül, melyben a burst.
ifin811/ea1 C Programozás: Hardver alapok áttekintése
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Modellek a számítógép megismeréshez Takács Béla
A ROM ÉS A BIOS. K ÉSZÍTETTE R ELL P ATRIK A ROM A ROM egy olyan elektrotechnikai eszköz, amely csak olvasható adatok tárolására alkalmas memória. Tartalma.
Sz&p prof.
A számítógép működésének alapjai
Memória példák 2019.
Előadás másolata:

Memória és perifériák virtualizációja Virtualizációs technológiák és alkalmazásaik Memória és perifériák virtualizációja Micskei Zoltán, Tóth Dániel Utolsó módosítás:2012. 09. 20.

Mi történt az elmúlt egy hétben? Forrás: http://blog.xen.org

Tartalom Előző rész tartalmából: Memória virtualizáció CPU virtualizáció A három alap virtualizációs megközelítés Memória virtualizáció Virtuális memória az operációs rendszerekben Virtuális memória a platform virtualizációban Virtuális memóriakezelés speciális képességei: megosztás, késleltetett allokáció, memória-ballon Perifériák virtualizációja Perifériák programozói felülete általában Periféria virtualizációs architektúrák

Emlékeztető: A három virtualizációs lehetőség Virtualizáció – az utasításokat (egy részüket) változatlanul hagyja végrehajtani, csak a problémás privilegizáltakkal kell valamit kezdeni Szoftveres virtualizáció (Trap & emulate + bináris fordítás) Paravirtualizáció (módosítjuk a vendég OS forrását) Hardveres virtualizáció (Trap & emulate, teljesen hardveres támogatással)

Tartalom Előző rész tartalmából: Memória virtualizáció CPU virtualizáció A három alap virtualizációs megközelítés Memória virtualizáció Virtuális memória az operációs rendszerekben Virtuális memória a platform virtualizációban Virtuális memóriakezelés speciális képességei: megosztás, késleltetett allokáció, memória-ballon Perifériák virtualizációja Perifériák programozói felülete általában Periféria virtualizációs architektúrák

Virtuális memóriakezelés Modern CPU-k tartalmaznak memóriakezelő egységet (MMU – memory management unit) Feladata „virtuális” memóriacímeket leképezni „fizikaira” Mi is az a virtuális memóriacím? Hol használható? CPU felhasználói (pl. ring 1-3) módjaiban virtuális címekkel dolgozik (nem feltétlenül, de a modern OS-eknél ez igaz) A folyamatok nem a fizikai memóriacímeket látják Cél: áthelyezhető legyen az oprendszer felett futó alkalmazások kódja, ne csak fix bedrótozott helyen tudjon futni (akár szoftveresen is megoldható lenne…) Cél2: eközben a teljesítmény ne romoljon számottevően (ehhez már hardver támogatás is kell) MMU != fizikai memóriaillesztő áramkör. Az utóbbinak a feladata a memória modulok elektromos alacsonyszintű vezérlése, ez sokáig a CPU-n kívül a chipset „északi hídban” foglalt helyet, csak a közelmúltban (Athlon64, Core i7) került be a processzorba. A memóriaillesztő áramkör is végez címfordítást, de ez már teljesen láthatatlan a CPU és a perifériák számára. A fizikai memóriacím alatt a továbbiakban azt értjük amit a CPU és/vagy perifériák kiadnak a buszokon. x86-ra jellemző, hogy kétféle virtuális memóriacím kezelési mechanizmus van: szegmens alapú és lapozott. A szegmens alapú 32 bites üzemmódban _mindig_ be van kapcsolva, de egy szegmens tartalmazhatja a teljes memóriát. 64 bites üzemmódban viszont szegmens alapú memóriaszervezés nincs. A lapozott üzemmód az aktuális ringtől függetlenül lehet ki vagy bekapcsolt állapotban, de átkapcsolni csak ring 0-ban lehet. Manapság tipikusan csak a kernel használ fizikai memóriacímeket (nem feltétlenül az összes funkciójához), az alkalmazások mindig lapozott memóriát használnak. Részletek: Intel® 64 and IA-32 Architectures Software Developer’s Manual http://www.intel.com/products/processor/manuals/

Virtuális memóriakezelés Fizikai memória Cím: 0 Cím: N-1 Cím: 0 Cím: M-1 A folyamat egy 0-tól induló összefüggő virtuális címtartományt lát. Tehát minden pointer a virtuális címtartományban értelmezett. Folyamat memóriája

Virtuális memóriakezelés Fizikai memória Cím: 0 Cím: N-1 Cím: 0 Cím: M-1 Cím: 0 Cím: K-1 Folyamat 1 memóriája Folyamat 2 memóriája Ez minden folyamatra igaz

Virtuális memória megvalósítása lapokkal Memória lapok (pages) Virtuális → fizikai memória cím hozzárendelés Tipikusan (x86) 4 kB méretű allokációs egységekben A cím utolsó 12 bitje a lapon belüli cím A cím első 20 bitje kétszintű (10-10 bit) laptábla cím Létezik óriás lap üzemmód is, ilyenkor csak egyszintű laptábla van, ezen belül 22 bit (4MB) pozíciócím Megjegyzés: A felsorolt konkrét számadatok x86 architektúrán érvényesek, más architektúrán előfordul más beosztás is. (Például x64 esetén hosszabb címek vannak, jelenleg 48 címbitet használnak és 4 Kbyte-os lapok esetén 4 szintű leképezés van.) Az x86-on is léteznek még speciális üzemmódok (PAE – paging area extension, NX – no execute), amik 1-1 felső helyiértékű bitet saját célra használnak. Lap könyvtár (page directory) – első 10 bit Lap tábla (page table) – második 10 bit Pozíció a lapon belül – 12 bit Fizikai memória címtartomány

Virtuális memória megvalósítása lapokkal További jellegzetességek: A laptáblák is a fizikai memóriában foglalnak helyet Csak az operációs rendszer kernel módosíthatja őket Minden folyamathoz másik táblakészlet tartozik, a kernel kontextus váltáskor cseréli ki mindig a megfelelőre Az MMU a CPU laptábla regisztere alapján tudja, hogy hol kell keresni legfelső szintű lap könyvtárat Automatikusan feloldja a virtuális címeket fizikaira, a virtuális címeket használó kód módosítás nélkül fut A virtuális címtartományból kicímzés vagy read-only bittel jelölt lapra írás hibát (fault) vált ki a CPU-ban A page fault mechanizmus teszi lehetővé, hogy az éppen nem használt lapokat lemezre lehessen menteni majd vissza behúzni a memóriába akkor, amikor éppen hozzáférés történik. A hozzáférés a nem létező lapra fault-ot vált ki, ezt elfogja és ekkor teszi vissza a kernel a lapot a swap területről.

Tartalom Előző rész tartalmából: Memória virtualizáció CPU virtualizáció A három alap virtualizációs megközelítés Memória virtualizáció Virtuális memória az operációs rendszerekben Virtuális memória a platform virtualizációban Virtuális memóriakezelés speciális képességei: megosztás, késleltetett allokáció, memória-ballon Perifériák virtualizációja Perifériák programozói felülete általában Periféria virtualizációs architektúrák

Memória virtualizálása A Ring 0-tól eltérő szinteken futó folyamatok virtuális memóriát látnak A virtuális -> fizikai cím feloldása hardverben történik laptáblák alapján. Gyors, TLB cache-eli fizikai-virtuális cím hozzárendelést. Használhatjuk-e ezt a vendég gépek memóriájához? Több szint kell: a VM-ben is kell saját laptábla a saját alkalmazásokhoz De a CPU ilyet nem támogat VM1 VM2 Vendég: virtuális memória Innentől a fizikai memória fogalmánál meg kell különböztetni a hoszt gép szempontjából fizikai memóriacímeket és guest operációs rendszer által „fizikai” memóriának látott címeket, amik valójában a hoszt gép szempontjából már virtuálisak. Tehát az idézőjelnek itt most jelentésmegkülönböztető szerepe van. :) Érdekesség, hogy x86-on a szegmens szervezés teszi lehetővé, hogy a guest-tel azonos memóriatartományban, de mégis a guest beavatkozásától védett módon legyenek elhelyezhetőek a VMM kezelésében lévő memóriaterületek. Például a JIT fordított kódterületek ilyen elhelyezésével lehet gyors (trap és kontextusváltás nélküli) áthívás a kétféle memóriaterület között. Viszont 64 bites üzemmódban a szegmens alapú védelem nem működik, ez a legfőbb oka annak, hogy x86-64 bites üzemmódot bináris fordítással a legtöbb virtualizációs szoftverben nem építettek ki. Az AMD egyes processzoraiban éppen emiatt viszont korlátozottan mégis van szegmens alapú védelem 64 bites üzemmódban is, de ez nem túl széles körben támogatott. Vendég: „fizikai” memória Gazda: fizikai memória

Memória virtualizálása A virtuális gépben futó folyamat virtuális memóriája Folyamat Árnyék laptábla Vendég laptábla A virtuális gép „fizikai” memóriája VM allokációs laptábla Kell két példány a laptáblából: az egyik a vendég kernel számára látható és a vendég VM „fizikai” címeit képezi le a VM-en belül futó folyamatok „virtuális” címeire (vendég laptábla), a másik a VMM (és a CPU) számára látható ún. árnyék laptábla (Shadow page table), ez a futtató gép „igazi fizikai” címeit képezi le a VM-en belül futó folyamatok virtuális címére. Az árnyék laptábla szerepe, hogy az eredetileg kétszintű indirekcióból egyszintű indirekciót csináljon. Fizikai memória a hardverben

Memória virtualizálása Vendég OS azt „hiszi”, hogy ezt használja. A kernele ezt próbálja módosítani VM allokációs laptábla: Virtuális gép „fizikai” memóriacímei -> Fizikai gép fizikai memóriacímei Árnyék laptábla Virtuális gép virtuális címei -> Fizikai gép fizikai címei Vendég laptábla Virtuális gép virtuális címei -> Virtuális gép „fizikai” címei A fizikai processzor valójában ezt használja. A vendég ennek létezéséről nem tud. Ha módosítja a vendég a saját laptábláját, ezt is frissíteni kell.

Memória virtualizálása Mi van, ha vendég kernel módosítani akarja a laptábláját? Megfelelően frissíteni kell az árnyék táblát is 1. Természetesen Trap and emulate, de hogyan? Read-only-ra állítjuk a vendég kernel számára látható laptáblákat, ha azt módosítani akarja, akkor jön a kivétel, átkerül a vezérlés a VMM-hez ami biztonságosan elvégzi a módosítást az árnyék táblán is 2. „természetesen?! trap and emulate?” A vendég kernel egyszerűen ne maga akarja módosítani a laptáblát, kérje meg a VMM-et erre  3. Hardveres kiegészítés több szintű laptáblák kezelésére Core i7 és Phenom processzoroktól kezdve van (EPT / RVI) Az egész árnyék tábla frissítési problémát hardveresen lekezeli A 2. megoldást természetesen paravirtualizációs megközelítésnek nevezik. A hardveres laptábla kezelés elég sok előnnyel jár, ezzel már a hardveres virtualizáció egyértelműen gyorsabb lehet a bináris fordításnál. Elkerülhetőek vele a kontextusváltásnál a TLB ürítések, a VMM-ben tett körök a memória allokáció változtatásánál stb. Intel megvalósításának részletes leírása: Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3B: System Programming Guide, chapter 25.2

Memória virtualizálása Tanulságok: A memóriakezelésben is a háromféle fő megvalósítás megtalálható. A memóriakezeléshez extra laptáblák kellenek, tehát a VM több fizikai memóriát igényel, mint amennyi számára látható lesz A memória foglalása és felszabadítása extra feladatot jelenthet a VMM számára is (kivéve hardveresen virtualizált MMU-nál)

Tartalom Előző rész tartalmából: Memória virtualizáció CPU virtualizáció A három alap virtualizációs megközelítés Memória virtualizáció Virtuális memória az operációs rendszerekben Virtuális memória a platform virtualizációban Virtuális memóriakezelés speciális képességei: megosztás, késleltetett allokáció, memória-ballon Perifériák virtualizációja Perifériák programozói felülete általában Periféria virtualizációs architektúrák

Extra memória virtualizálási lehetőségek Memórialap deduplikáció azonos tartalmú memórialapok megosztása több vendég VM között hasonlóképpen azonos lapok megosztása egy vendégen belül is gyakorlati haszna főleg speciális alkalmazásokban (Virtual Desktop Infrastructure), tipikusan több példány fut azonos OS-ből Megvalósítása gyors hash számítás, ez alapján egyezés keresés közösített lapok megbontása beleíráskor, copy-on-write elv Hasonló: memória tömörítés Egészen új lehetőség VMM-ekben (az ötlet persze régi) CPU költsége nagyon nagy lenne, ezért: az inaktív, amúgy háttértárra kilapozásra ítélt lapokat szokás tömöríteni -> a ki/be tömörítés még így is gyorsabb a merevlemeznél Nem csodaszer… kompromisszumot kell kötni a tömörítetlen és tömörített lapoknak fenntartott memória mérete között, csak korlátozott méretben előnyös

Extra memória virtualizálási lehetőségek Dinamikus allokáció: Ami memóriát nem használ a vendég, azt ne is kapja meg Gyakorlati haszna önmagában elenyésző, a legtöbb OS az összes szabad memóriát disk cache-nek használja Háttértárra swappelhetők a lapok a vendég OS tudta nélkül Memória felfújás (memory ballooning) Ha kifogy a host memóriája, akkor „elvesz” a vendégtől Egy ágens vagy driver a vendég kernelben (paravirtualizációs szemléletmód) elkezd memóriát foglalni a VMM utasítására. A VMM az ágens által „foglalt” memórialapok mögé nem is allokál fizikai memóriát, így nyer vissza helyet Egyrészt a vendég fel fog adni a disk cache-ből, Másrészt el fog kezdeni kilapozni a saját swap területre, elkerüli, hogy a host is swappeljen Miért olyan rossz az, ha a hoszt swappel? Mert a vendég nem tudja, hogy a memóriatartományának egy része diszken van, tehát lassú, ezt a területet lemez cache-nek vagy alkalmazásoknak fogja használni, amivel még többet árt. Esetleg ha a fizikai és a vendég gép is swappel egyszerre, akkor lehet, hogy a vendég a saját swap területéről a (memóriának képzelt) fizikai gép swap területére fog mozgatni adatot és viszont -> mega trashelés. Ha csak a vendég gép swappel, akkor ez a helyzet nem fordulhat elő.

Extra memória virtualizálási lehetőségek Tanulságok: Sokféle extra lehetőség, nem triviális megállapítani az aktuális használatot Figyelni kell a memóriafoglalást, nagyot esik a teljesítmény, ha lemezre kell lapozni Ha van rá lehetőség, ki kell használni a vendégbe telepíthető ballooning drivert, elkerülhető vele a vergődés

Kitekintés: VMware ESXi memóriakezelés Figyelem: az ábra csak szemléltető jellegű, az egyes régiók nem ilyen egyenletesen vannak elosztva a valóságban! Részletes leírás az egyes metrikák jelentéséről: Micskei Zoltán. Memory metrics in VMware ESX 4.1, 2012.04.06., URL: http://micskeiz.wordpress.com/2012/04/06/memory-metrics-in-vmware-esx-4-1/ Egy másik áttekintő diagram a VMware vSphere 5 memóriakezeléséről: - VMware. VMware vSphere 5 Memory Management and Monitoring diagram, http://kb.vmware.com/kb/2017642

Kitekintés: VMware ESXi memóriakezelés A képernyőképen az látható, hogy az indítás után a vendég gép memóriáját fokozatosan pásztázza végig a VMM, megosztható memórialapokat keresve, így fokozatosan emelkedik a shared memória mennyisége. Jelmagyarázat: granted (lila) active (kék) overhead (sárga) zero (piros) consumed (zöld) shared (szürkés-kék)

Tartalom Előző rész tartalmából: Memória virtualizáció CPU virtualizáció A három alap virtualizációs megközelítés Memória virtualizáció Virtuális memória az operációs rendszerekben Virtuális memória a platform virtualizációban Virtuális memóriakezelés speciális képességei: megosztás, késleltetett allokáció, memória-ballon Perifériák virtualizációja Perifériák programozói felülete általában Periféria virtualizációs architektúrák

Perifériákról általában A perifériák kezelése jellegzetesen CPU felprogramozza a perifériát, regiszterek átírása Periféria eseményt jelez a CPU felé, megszakítás Ilyenkor valamilyen módon le kell kezelni az eseményt, valamit reagálni kell rá (driver felelőssége) Periféria maga elvégzi a feladatát, közvetlen memória hozzáférés Kiolvas elküldendő adatot, vagy berak beérkező adatot a memóriába Külön lefoglalt fizikai memóriaterület kell erre a célra

Perifériákról általában Az adapter modell Az üzenet egy saját (gyakran szabványos) protokollon keresztül jut el a perifériához HDD ==== Ezt szeretném programozni Cél periféria Az adaptert kell megkérni, hogy adja át a perifériának az üzenetet Adapter

Perifériákról általában Az adapter modell Perifériának szánt konkrét utasítás, adat Periféria protokollja Rétegzett programozási modell (pl. USB, SCSI, SATA): HDD ==== Adapter programozás Cél periféria Adapter

Tartalom Előző rész tartalmából: Memória virtualizáció CPU virtualizáció A három alap virtualizációs megközelítés Memória virtualizáció Virtuális memória az operációs rendszerekben Virtuális memória a platform virtualizációban Virtuális memóriakezelés speciális képességei: megosztás, késleltetett allokáció, memória-ballon Perifériák virtualizációja Perifériák programozói felülete általában Periféria virtualizációs architektúrák

Teljes periféria emuláció Virtuális gép Meghajtó Meghajtó Meghajtó Virtualizációs réteg Backend Backend Backend Ütemező Statikus Hozzárendelés Távoli hozzáférés szerver Meghajtó Meghajtó Meghajtó (Vigyázat: az ábra „csal”, természetesen azért érdekes a helyzet, mert több virtuális gépünk van, és azok mind ugyanahhoz a hardverhez szeretnének kapcsolódni.) Teljes periféria emulációnál a virtualizációs környezetben vannak a fizikai eszköz meghajtó programjai (driver), minden perifériát ilyenek kezelnek. A virtuális gép számára egy szoftveres „backend” emulálja a hardvert. Három jellegzetes eset lehetséges: Valamilyen többszörös hozzáférést biztosító erőforrás-megosztó vagy ütemező komponens osztja szét a backendek felé a fizikai hardver erőforrást (háttértár, hálózat, stb.) Statikusan valamelyik virtuális géphez hozzárendelünk egy-egy hardvert (Soros port, USB eszközök, esetleg háttértár, CD meghajtó) Távoli elérés szerver komponens hálózaton keresztül tesz elérhetővé valamilyen elemet a virtuális hardverből (Grafikus konzol, CD meghajtó) HDD ==== Hardver

Lehetőségek perifériák virtualizációjára I. Emuláció Trap and emulate -> az I/O műveleteket kell elfogni Adódik: ring 1-3-ban az I/O műveleteket elfogja a CPU Memóriatartományba illesztett periféria: read-only memórialappal fogható el Valamilyen létező hardver működését emuláljuk Szoftveres komponens segítségével: backend Hardver pontos emulálása (regiszterek, megszakítás, DMA) Vendégben használható a klasszikus meghajtó program Minden I/O művelet egy kör a VMM-ben -> lassú Tipikusan valami nagyon elterjedt hardvert emulálnak, amihez biztos van minden vendég OS-ben beépített driver (pl. Intel e1000 hálózati kártya, S3 Trio videókártya…).

Lehetőségek perifériák virtualizációjára II. Paravirtualizáció Egyszerűsítsük az emulált hardvert, tervezzünk „nem létező fajta” hardvert, amit a legkevesebb művelettel lehet vezérelni Egy összetett művelet akár csak egy VMM hívás Saját „hardverek”, amik magas szintű műveleteket végeznek Pl. hoszt fájlrendszerhez hozzáférés Itt kezd keveredni a virtualizáció és az OS… Speciális meghajtót kell telepíteni a VM-ben!

Paravirtualizált I/O eszközök Balra egy VMware ESXi-n futó virtuális Windows eszközkezelője látszik, jobbra egy Hyper-V szerveren futó. (VMware Tools, Hyper-V Integration Components kell)

Lehetőségek perifériák virtualizációjára III. Hardveres virtualizáció I/O eszköz közvetlenül elérhető a vendégből Általános esetben veszélyes… DMA-val a fizikai memória egésze elérhető Léteznek IOMMU megoldások is (pl.: Intel VT-d) Hasznos pl.: 3D grafikus kártya DE: elvesztjük a virtualizáció rugalmasságát! Hardver támogatás az I/O eszközben, hogy többen használják (pl. SR-IOV) Belső állapot konzisztens megtartással kéréseket fogadnak Hasznos pl.: 10 Gb/s Ethernet hálózati kártya I/O eszköz közvetlen hozzárendelése: VMware DirectPath I/O néven emlegeti Gond vele: nem tudjuk az I/O eszköz állapotát elmenteni, így a VM állapotmentése nem (vagy csak nagyon körülményesen) lehetséges. Továbbá a különböző live migration jellegű funkciók se működnek, hiszen a HW-t nem tudja „magával vinni” a VM.

Példa: Intel SR-IOV megvalósítás Physical Funtion, Virtual Function (PF és VF) Belső regiszterek, sorok, leírók többszörözése (tipikusan 16-64) VMM támogatás is kell! SR-IOV: Single Root I/O Virtualization, PCI-SIG csoport szabványa, hardver oldal specifikálása További információ: Intel. PCI-SIG SR-IOV Primer: An Introduction to SR-IOV Technology. 2011. URL: http://www.intel.com/content/www/us/en/pci-express/pci-sig-sr-iov-primer-sr-iov-technology-paper.html Szoftveres támogatás: Hyper-V: John Howard. Everything you wanted to know about SR-IOV in Hyper-V Part 3, 2012. URL: http://blogs.technet.com/b/jhoward/archive/2012/03/14/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-3.aspx (az első és második rész jó áttekintő az I/O virtualizációról meg az SR-IOV hardveres részéről, a következő részek meg az MS megvalósításról) ESXi 5.1: VMware. vSphere Networking Guide. 2012 URL: http://www.vmware.com/support/pubs/vsphere-esxi-vcenter-server-pubs.html (Chapter 4 Managing Network Resources) Forrás: Intel

Hardveres periféria virtualizáció Virtuális gép Réteges architektúrájú busz elérési protokollok esetén (SCSI, USB) lehetséges: a busz adapter emulált rendszeren keresztül érhető el, de a magasabb rétegekben már a virtuális gép közvetlenül a hardverrel beszél Lehet olyan hardver, ami közvetlenül I/O műveletekkel vezérelhető virtuális gépből. Manapság ez még nem elterjedt, hardveres feltételei hiányosak. (DMA veszély) Meghajtó Meghajtó Meghajtó Lehet olyan hardver, ami közvetlenül I/O műveletekkel vezérelhető egyszerre több virtuális gépből is. (SR-IOV) Virtualizációs réteg Backend Meghajtó Hardver HDD ====

Perifériák virtualizációja Tanulságok: I/O intenzív alkalmazásoknál számolni lehet jelentős teljesítményvesztéssel Ha van rá lehetőség, telepítsük fel a paravirtualizált eszközmeghajtókat a vendég operációs rendszerbe Lehet olyan feladat, amit közvetlenül a virtuális géphez rendelt hardverrel célszerű megoldani (backup szerver, 3D gyorsítás…) Fontos tanulság megint: amikor a paravirtualizációnál magas szintű erőforrásokat adunk át a guest OS-nek, akkor látható, hogy itt is - mint mindenhol máshol is – folytonos átmenet kezd kialakulni az operációs rendszerek és virtualizációs környezetek között. Tehát a szigorú taxonomizálás valójában megint csak egy „modell”, ami a megértést segíti, de a valóságot kicsit absztrahálja.

További információ Carl Waldspurger and Mendel Rosenblum. I/O virtualization. Commun. ACM 55, 1 (January 2012), 66-73. DOI=10.1145/2063176.2063194 Abramson, D. et al. "Intel® Virtualization Technology for Directed I/O." Intel Technology Journal. (August 2006). Darvas Dániel, Horányi Gergő. „Intel és AMD technológiák a hardveres virtualizáció megvalósítására”, virttech házi feladat, 2010. Garaczi Tamás. Intel VT-d (IOMMU) technológia részleteinek megismerése, virttech HF, 2010.

Összefoglaló A virtualizáció alapjai I-II CPU virtualizáció CPU utasításkészlet architektúra és szerepe A három alap virtualizációs megközelítés Memória virtualizáció Virtuális memória az operációs rendszerekben Virtuális memória a platform virtualizációban Virtuális memóriakezelés speciális képességei: megosztás, késleltetett allokáció, memória-ballon Perifériák virtualizációja Perifériák programozói felülete általában Periféria virtualizációs architektúrák