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

Upload: dyani

Post on 24-Feb-2016

25 views

Category:

Documents


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

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