A Videoton Automatika Közös Vállalat rövid története, Videoton perifériák
Memória és perifériák virtualizációja
description
Transcript of Memória és perifériák virtualizációja
![Page 1: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/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
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://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/2.jpg)
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 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 3: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/3.jpg)
3
Emlékeztető: virtuális CPU feltételei Popek és Goldberg* követelményei egy virtualizált rendszerrel
szembeno VMM – virtual machine monitor:
olyan komponens, ami a virtuális gépek számára az absztrakciót biztosítja
Ekvivalenciao A VMM felett futó program mindig pontosan ugyanazt az eredményt
adja futás közben, mint ha fizikai CPU-n közvetlenül futna Erőforrás kezelés
o A VMM minden virtualizált erőforrást teljes egészében maga felügyel Hatékonyság
o A virtuális gépben futó program utasításainak nagy része változtatás és VMM beavatkozás nélkül fut a fizikai CPU-n
![Page 4: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/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 and Emulate + bináris
fordítás)o Hardveres virtualizáció (Trap and Emulate, teljesen
hardveres támogatással)o Paravirtualizáció
![Page 5: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/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://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/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 Az alkalmazások 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://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/7.jpg)
7
Virtuális memóriakezelés
Fizikai memória
Alkalmazás memóriája
Cím: 0
Cím: 0
Cím: N-1
Cím: M-1 Az alkalmazás 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://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/8.jpg)
8
Virtuális memóriakezelés
Fizikai memória
1. Alkalmazás memóriája
Cím: 0
Cím: 0
Cím: N-1
Cím: M-1
Ez minden alkalmazásra igaz
2. Alkalmazás memóriája
Cím: 0 Cím: K-1
![Page 9: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/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://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/10.jpg)
10
Virtuális memória megvalósítása lapokkal A laptáblák is a fizikai memóriában foglalnak helyet
o Csak az operációs rendszer kernel módosíthatja őketo Minden alkalmazáshoz másik táblakészlet tartozik, a kernel ütemezéskor
cseréli ki mindig a megfelelőreo Az MMU a CPU laptábla regisztere alapján tudja, hogy hol kell keresni
legfelső szintű lap könyvtárato Automatikusan feloldja a virtuális címeket fizikaira, a virtuális címeket
használó kód módosítás nélkül futo A virtuális címtartományból kicímzés vagy read-only bittel jelölt lapra írás
trap-et vált ki a CPU-ban
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 11: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/11.jpg)
11
Memória virtualizálása A Ring 0-tól eltérő szinteken futó folyamatok virtuális memóriát
látnako 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 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.o Lapszervezés kombinálható a szegmens szervezéssel („gányolás” de x86
szoftveres virtualizációnál néhány helyen jól jön)o 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ó alkalmazások „virtuális” címeire. A másik a VMM (és a CPU) számára látható ún. árnyék laptábla (Shadow page table) és a futtató gép „igazi fizikai” címeit képezi le a VM-en belül futó alkalmazások virtuális címére.
![Page 12: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/12.jpg)
12
Memória virtualizálásaVM allokációs laptábla:
Virtuális gép „fizikai” memóriacímei-> Fizikai gép fizikai memóriacímei
Guest laptáblaVirtuális gép virtuális címei
-> Virtuális gép „fizikai” címei
Árnyék laptáblaVirtuális gép virtuális címei-> Fizikai gép fizikai címei
Guest OS azt „hiszi”, hogy ezt használja. A kernele ezt próbálja módosítani
A fizikai processzor valójában ezt használja. A guest ennek létezéséről nem tud. Ha módosítja a guest a saját laptábláját,
ezt is frissíteni kell.
![Page 13: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/13.jpg)
13
Memória virtualizálása Másik nézetben:
Fizikai memória a hardverben
A virtuális gép„fizikai” memóriája
App.A virtuális gépbenfutó alkalmazásvirtuális memóriája
Guest laptábla
VM allokációs laptábla
Árnyéklaptábla
![Page 14: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/14.jpg)
14
Memória virtualizálása De mi van, ha guest kernel módosítani akarja a laptábláját?
o Megfelelően frissíteni kell az árnyék táblát iso -> 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
az 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
Második megoldás: hardveres kiegészítés több szintű laptáblák kezelésére o Core i7 és Phenom processzoroktól kezdve vano Az egész árnyék tábla frissítési problémát hardveresen lekezeli
Harmadik megoldás: „természetesen?! trap and emulate?”o A guest kernel egyszerűen ne maga akarja módosítani a laptáblát,
kérje meg a VMM-et erre
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 host 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 15: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/15.jpg)
15
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 Megvalósítása
o gyors hash számítás, ez alapján egyezés kereséso 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 16: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/16.jpg)
16
Extra memória virtualizálási lehetőségek Dinamikus allokáció
o ami memóriát nem használ ki a vendég, arra ne is tartsunk fenn lapokato 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
Tanulságok:• Figyelni kell a memóriafoglalást, nagyot esik a teljesítmény, ha diszkre 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 17: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/17.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 18: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/18.jpg)
18
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á
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
A periféria kezelése a „driver” felelőssége, ami többé kevésbé
része az OS kernelnek
![Page 19: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/19.jpg)
19
Perifériákról általában Az adapter modell
o Napjainkban igen gyakori
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
Adapter 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 20: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/20.jpg)
20
Perifériák virtualizációja Emuláció
o Trap and emulate -> az I/O műveleteket kell elfogni• Ez adódik a CPU futási szintjéből, Ring1-3-ban az I/O
műveleteket elfogja• Ha a periféria memóriatartományba illesztett, akkor read-only
memórialappal fogható el a felprogramozásao Valamilyen létező fajta hardver működését (regiszterek,
megszakítás, DMA) emulálni kell egy szoftveres komponenssel• Egyfajta „anti-driver”, általános elnevezése Backend• A vendégben futó meghajtóprogram valójában ezzel beszélget.
oMinden I/O művelet egy kör VMM-ben -> lassú
![Page 21: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/21.jpg)
21
Perifériák virtualizációja Paravirtualizáció
o Egyszerűsítsük az emulált hardvert, tervezzünk „nem létező fajta” hardvert, amit a legkevesebb művelettel lehet vezérelni
o Egy összetett művelet akár csak egy VMM hívást igényelo Saját „hardverek”, amik magas szintű művelteket végeznek, pl hoszt
fájlrendszerhez hozzáférés. Itt kezd keveredni a virtualizáció az operációs rendszerekkel…
Hardveres virtualizációo Valamilyen hardvert közvetlenül elérhetővé teszünk a vendég számárao Tipikusan olyan esetekben működik, ahol a periféria valami emulált vezérlő
adapter felett futó magasabb protokoll rétegben érhető el. Pl.: SCSI merevlemez, USB eszközök
o Á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), használata terjed• Léteznek olyan hardverek, amik képesek több guest felől is függetlenül, belső állapot
konzisztens megtartással kéréseket fogadni (SR-IOV)
Tanulságok:• I/O intenzív alkalmazásoknál számolni kell 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 22: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/22.jpg)
22
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
A Backend nem feltétlenül létező hardverfajtát emulál! Paravirtualizációnál fizikailag
nem létező eszközöket valósít meg.
![Page 23: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/23.jpg)
23
Hardveres periféria virtualizáció
HardverHDD====
Virtualizációsréteg
Meghajtó
Virtuális gépMeghajtó Meghajtó
Backend
Meghajtó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)
Lehet olyan hardver, ami közvetlenül I/O
műveletekkel vezérelhető egyszerre több virtuális
gépből is. (SR-IOV)
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
![Page 24: Memória és perifériák virtualizációja](https://reader036.fdocument.pub/reader036/viewer/2022070423/568166d7550346895ddaf0db/html5/thumbnails/24.jpg)
24
Ö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