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

35
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 Micskei Zoltán, Tóth Dániel Virtualizációs technológiák és alkalmazásaik

Upload: dwayne

Post on 23-Feb-2016

20 views

Category:

Documents


0 download

DESCRIPTION

Virtualizációs technológiák és alkalmazásaik. Memória és perifériák virtualizációja. Micskei Zoltán, Tóth Dániel. Mi történt az elmúlt egy hétben?. Forrás: http://blog.xen.org. Tartalom. Előző rész tartalmából: CPU virtualizáció A három alap virtualizációs megközelítés - 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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