Download - Memória és perifériák virtualizációja
![Page 1: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/1.jpg)
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
![Page 2: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/2.jpg)
2
Mi történt az elmúlt egy hétben?
Forrás: http://blog.xen.org
![Page 3: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/3.jpg)
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
![Page 4: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/4.jpg)
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)
![Page 5: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/5.jpg)
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
![Page 6: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/6.jpg)
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)
![Page 7: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/7.jpg)
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.
![Page 8: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/8.jpg)
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
![Page 9: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/9.jpg)
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
![Page 10: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/10.jpg)
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
![Page 11: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/11.jpg)
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
![Page 12: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/12.jpg)
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
![Page 13: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/13.jpg)
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
![Page 14: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/14.jpg)
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
![Page 15: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/15.jpg)
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)
![Page 16: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/16.jpg)
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
![Page 17: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/17.jpg)
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
![Page 18: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/18.jpg)
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
![Page 19: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/19.jpg)
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
![Page 20: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/20.jpg)
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
![Page 21: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/21.jpg)
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)
![Page 22: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/22.jpg)
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
![Page 23: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/23.jpg)
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
![Page 24: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/24.jpg)
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
![Page 25: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/25.jpg)
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):
![Page 26: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/26.jpg)
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
![Page 27: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/27.jpg)
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
![Page 28: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/28.jpg)
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ú
![Page 29: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/29.jpg)
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!
![Page 30: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/30.jpg)
31
Paravirtualizált I/O eszközök
(VMware Tools, Hyper-V Integration Components kell)
![Page 31: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/31.jpg)
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
![Page 32: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/32.jpg)
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
![Page 33: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/33.jpg)
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…)
![Page 34: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/34.jpg)
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.
![Page 35: Memória és perifériák virtualizációja](https://reader035.vdocuments.pub/reader035/viewer/2022070422/568163a2550346895dd4a212/html5/thumbnails/35.jpg)
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