memória és perifériák virtualizációja
DESCRIPTION
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. Mi történt az elmúlt egy hétben?. Forrás: http://blog.xen.org. Tartalom. Előző rész tartalmából: CPU virtualizáció A három alap virtualizációs megközelítés - PowerPoint PPT PresentationTRANSCRIPT
Budapesti Műszaki és Gazdaságtudományi EgyetemMéréstechnika és Információs Rendszerek Tanszék
Memória és perifériák virtualizációja
Micskei Zoltán, Tóth Dániel
Virtualizációs technológiák és alkalmazásaik
2
Mi történt az elmúlt egy hétben?
Forrás: http://blog.xen.org
3
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 rendszerekbeno Virtuális memória a platform virtualizációbano 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ábano Periféria virtualizációs architektúrák
4
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 kezdenio 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)
5
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 rendszerekbeno Virtuális memória a platform virtualizációbano 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ábano Periféria virtualizációs architektúrák
6
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él2: eközben a teljesítmény ne romoljon számottevően (ehhez már hardver támogatás is kell)
7
Virtuális memóriakezelés
Fizikai memória
Folyamat memóriája
Cím: 0
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.
8
Virtuális memóriakezelés
Fizikai memória
Folyamat 1 memóriája
Cím: 0
Cím: 0
Cím: N-1
Cím: M-1
Ez minden folyamatra igaz
Folyamat 2 memóriája
Cím: 0 Cím: K-1
9
Virtuális memória megvalósítása lapokkal Memória lapok (pages)
o Virtuális → fizikai memória cím hozzárendeléso Tipikusan (x86) 4 kB méretű allokációs egységekbeno A cím utolsó 12 bitje a lapon belüli címo 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
Lap könyvtár (page directory) – első 10 bit
Lap tábla (page table) – második 10 bit
Fizikai memória címtartományPozíció a lapon belül – 12 bit
10
Virtuális memória megvalósítása lapokkalTová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
11
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 rendszerekbeno Virtuális memória a platform virtualizációbano 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ábano Periféria virtualizációs architektúrák
12
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ásokhozo De a CPU ilyet nem támogat
VM1 VM2Vendég: virtuális memória
Vendég: „fizikai” memória
Gazda: fizikai memória
13
Memória virtualizálása
Fizikai memória a hardverben
A virtuális gép„fizikai” memóriája
FolyamatA virtuális gépbenfutó folyamatvirtuális memóriája
Vendéglaptábla
VM allokációs laptábla
Árnyéklaptábla
15
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 i7 és Phenom processzoroktól kezdve van (EPT / RVI)o Az egész árnyék tábla frissítési problémát hardveresen lekezeli
16
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)
17
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 rendszerekbeno Virtuális memória a platform virtualizációbano 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ábano Periféria virtualizációs architektúrák
18
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őlo 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éso 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élo 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
19
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 mego Gyakorlati haszna önmagában elenyésző, a legtöbb OS az összes
szabad memóriát disk cache-nek használjao 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őlo 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
20
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
21
Kitekintés: VMware ESXi memóriakezelés
Guest physical memory
Host swap fileHost machine memory
overhead
com
pres
sion
cach
e Shared with
others
com
pres
sed
ballooned zeroed swapped out
not touched
swap
Total memory size
zipped vmmemctl granted
zero
shared
swapped
overhead consumed *
active
22
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)
23
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 rendszerekbeno Virtuális memória a platform virtualizációbano 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ábano Periféria virtualizációs architektúrák
24
Perifériákról általában
A perifériák kezelése jellegzetesen o CPU felprogramozza a perifériát, regiszterek átírásao 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özvetlenmemó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
25
Perifériákról általábanAz adapter modell
HDD====
Adapter
Cél periféria
Ezt szeretném
programozni
Az adaptert kell megkérni, hogy adja át a perifériának az
üzenetet
Az üzenet egy saját (gyakran szabványos)
protokollon keresztül jut el a perifériához
26
Perifériákról általábanAz adapter modell
HDD====
Adapter
Cél perifériaAdapter programozás
Periféria protokollja
Perifériának szánt konkrét utasítás, adat
Rétegzett programozásimodell (pl. USB, SCSI, SATA):
27
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 rendszerekbeno Virtuális memória a platform virtualizációbano 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ábano Periféria virtualizációs architektúrák
28
Teljes periféria emuláció
Hardver
HDD====
Virtualizációs réteg
Meghajtó Meghajtó Meghajtó
Virtuális gépMeghajtó Meghajtó
Backend Backend
ÜtemezőStatikusHozzárendelés
Meghajtó
BackendTávoli
hozzáférés szerver
29
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 CPUo 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: backendo 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ú
30
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égezneko Pl. hoszt fájlrendszerhez hozzáféréso Itt kezd keveredni a virtualizáció és az OS…
Speciális meghajtót kell telepíteni a VM-ben!
31
Paravirtualizált I/O eszközök
(VMware Tools, Hyper-V Integration Components kell)
32
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.: 3D grafikus kártyao 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 fogadnako Hasznos pl.: 10 Gb/s Ethernet hálózati kártya
33
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
35
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…)
36
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.
37
Ö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
oMemó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-ballono Perifériák virtualizációja• Perifériák programozói felülete általában• Periféria virtualizációs architektúrák