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

Post on 24-Feb-2016

25 views 0 download

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

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

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

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

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ó

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 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)

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.

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

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 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

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.

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.

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

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)

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

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

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

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

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):

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ú

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…)

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.

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

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