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

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

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