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

24
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Memória és perifériák virtualizációja Tóth Dániel Virtualizációs Technológiák és Alkalmazásaik

description

Virtualizációs Technológiák és Alkalmazásaik. Memória és perifériák virtualizációja. Tóth Dániel. Tartalom. Előző rész tartalmából: 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 - PowerPoint PPT Presentation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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