Virtualizcis technolgik s alkalmazsaik Memria s perifrik virtualizcija
- Slides: 35
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 Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék
Mi történt az elmúlt egy hétben? Forrás: http: //blog. xen. org 2
Tartalom § Előző rész tartalmából: o CPU virtualizáció o A három alap virtualizációs megközelítés § Memória virtualizáció o Virtuális memória az operációs rendszerekben o Virtuális memória a platform virtualizációban o 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 o Perifériák programozói felülete általában o Periféria virtualizációs architektúrák 3
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 o Szoftveres virtualizáció (Trap & emulate + bináris fordítás) o Paravirtualizáció (módosítjuk a vendég OS forrását) o Hardveres virtualizáció (Trap & emulate, teljesen hardveres támogatással) 4
Tartalom § Előző rész tartalmából: o CPU virtualizáció o A három alap virtualizációs megközelítés § Memória virtualizáció o Virtuális memória az operációs rendszerekben o Virtuális memória a platform virtualizációban o 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 o Perifériák programozói felülete általában o Periféria virtualizációs architektúrák 5
Virtuális memóriakezelés § Modern CPU-k tartalmaznak memóriakezelő egységet (MMU – memory management unit) o Feladata „virtuális” memóriacímeket leképezni „fizikaira” o Mi is az a virtuális memóriacím? Hol használható? o 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) o 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él 2: eközben a teljesítmény ne romoljon számottevően (ehhez már hardver támogatás is kell) 6
Virtuális memóriakezelés Fizikai memória Cím: 0 Cím: N-1 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 7
Virtuális memóriakezelés Fizikai memória Cím: 0 Cím: N-1 Cím: M-1 Cím: 0 Folyamat 1 memóriája Cím: K-1 Folyamat 2 memóriája Ez minden folyamatra igaz 8
Virtuális memória megvalósítása lapokkal § Memória lapok (pages) o Virtuális → fizikai memória cím hozzárendelés o Tipikusan (x 86) 4 k. B méretű allokációs egységekben o A cím utolsó 12 bitje a lapon belüli cím o 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 (4 MB) pozíciócím 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 9
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 10
Tartalom § Előző rész tartalmából: o CPU virtualizáció o A három alap virtualizációs megközelítés § Memória virtualizáció o Virtuális memória az operációs rendszerekben o Virtuális memória a platform virtualizációban o 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 o Perifériák programozói felülete általában o Periféria virtualizációs architektúrák 11
Memória virtualizálása § A Ring 0 -tól eltérő szinteken futó folyamatok virtuális memóriát látnak o 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? o Több szint kell: a VM-ben is kell saját laptábla a saját alkalmazásokhoz o De a CPU ilyet nem támogat VM 1 VM 2 Vendég: virtuális memória Vendég: „fizikai” memória Gazda: fizikai memória 12
Memória virtualizálása Folyamat Árnyék laptábla Vendég laptábla A virtuális gépben futó folyamat virtuális memóriája A virtuális gép „fizikai” memóriája VM allokációs laptábla Fizikai memória a hardverben 13
Memória virtualizálása § Mi van, ha vendég kernel módosítani akarja a laptábláját? o Megfelelően frissíteni kell az árnyék táblát is § 1. Természetesen Trap and emulate, de hogyan? o 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? ” o 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 o Core i 7 és Phenom processzoroktól kezdve van (EPT / RVI) o Az egész árnyék tábla frissítési problémát hardveresen lekezeli 15
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) 16
Tartalom § Előző rész tartalmából: o CPU virtualizáció o A három alap virtualizációs megközelítés § Memória virtualizáció o Virtuális memória az operációs rendszerekben o Virtuális memória a platform virtualizációban o 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 o Perifériák programozói felülete általában o Periféria virtualizációs architektúrák 17
Extra memória virtualizálási lehetőségek § Memórialap deduplikáció o azonos tartalmú memórialapok megosztása több vendég VM között o hasonlóképpen azonos lapok megosztása egy vendégen belül is o gyakorlati haszna főleg speciális alkalmazásokban (Virtual Desktop Infrastructure), tipikusan több példány fut azonos OS-ből o 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 o Egészen új lehetőség VMM-ekben (az ötlet persze régi) o CPU költsége nagyon nagy lenne, ezért: o 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 o 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 18
Extra memória virtualizálási lehetőségek § Dinamikus allokáció: o Ami memóriát nem használ a vendég, azt ne is kapja meg o Gyakorlati haszna önmagában elenyésző, a legtöbb OS az összes szabad memóriát disk cache-nek használja o Háttértárra swappelhetők a lapok a vendég OS tudta nélkül § Memória felfújás (memory ballooning) o Ha kifogy a host memóriája, akkor „elvesz” a vendégtől o 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 o Egyrészt a vendég fel fog adni a disk cache-ből, o Másrészt el fog kezdeni kilapozni a saját swap területre, elkerüli, hogy a host is swappeljen 19
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 20
Kitekintés: VMware ESXi memóriakezelés 21
Kitekintés: VMware ESXi memóriakezelés Jelmagyarázat: granted (lila) active (kék) overhead (sárga) zero (piros) consumed (zöld) shared (szürkés-kék) 22
Tartalom § Előző rész tartalmából: o CPU virtualizáció o A három alap virtualizációs megközelítés § Memória virtualizáció o Virtuális memória az operációs rendszerekben o Virtuális memória a platform virtualizációban o 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 o Perifériák programozói felülete általában o Periféria virtualizációs architektúrák 23
Perifériákról általában § A perifériák kezelése jellegzetesen o CPU felprogramozza a perifériát, regiszterek átírása o 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) o 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 24
Perifériákról általában Az adapter modell HDD ==== Az üzenet egy saját (gyakran szabványos) protokollon keresztül jut el a perifériához Cél periféria Adapter Ezt szeretném programozni Az adaptert kell megkérni, hogy adja át a perifériának az üzenetet 25
Perifériákról általában Az adapter modell HDD ==== Perifériának szánt konkrét utasítás, adat Rétegzett programozási modell (pl. USB, SCSI, SATA): Periféria protokollja Adapter programozás Cél periféria Adapter 26
Tartalom § Előző rész tartalmából: o CPU virtualizáció o A három alap virtualizációs megközelítés § Memória virtualizáció o Virtuális memória az operációs rendszerekben o Virtuális memória a platform virtualizációban o 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 o Perifériák programozói felülete általában o Periféria virtualizációs architektúrák 27
Teljes periféria emuláció Meghajtó Virtuális gép Meghajtó Backend Ütemező Virtualizációs Távoli hozzáférés réteg szerver Meghajtó HDD ==== Hardver 28 Statikus Hozzárendelés Meghajtó
Lehetőségek perifériák virtualizációjára I. Emuláció § Trap and emulate -> az I/O műveleteket kell elfogni o Adódik: ring 1 -3 -ban az I/O műveleteket elfogja a CPU o Memóriatartományba illesztett periféria: read-only memórialappal fogható el § Valamilyen létező hardver működését emuláljuk o Szoftveres komponens segítségével: backend o Hardver pontos emulálása (regiszterek, megszakítás, DMA) o Vendégben használható a klasszikus meghajtó program § Minden I/O művelet egy kör a VMM-ben -> lassú 29
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 o Pl. hoszt fájlrendszerhez hozzáférés o Itt kezd keveredni a virtualizáció és az OS… § Speciális meghajtót kell telepíteni a VM-ben! 30
Paravirtualizált I/O eszközök (VMware Tools, Hyper-V Integration Components kell) 31
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 o Általános esetben veszélyes… DMA-val a fizikai memória egésze elérhető o Léteznek IOMMU megoldások is (pl. : Intel VT-d) o Hasznos pl. : 3 D grafikus kártya o 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) o Belső állapot konzisztens megtartással kéréseket fogadnak o Hasznos pl. : 10 Gb/s Ethernet hálózati kártya 32
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! Forrás: Intel 33
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, 3 D gyorsítás…) 35
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. 36
Összefoglaló § A virtualizáció alapjai I-II o CPU virtualizáció • CPU utasításkészlet architektúra és szerepe • A három alap virtualizációs megközelítés o 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 o Perifériák virtualizációja • Perifériák programozói felülete általában • Periféria virtualizációs architektúrák 37