Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Memória és perifériák virtualizációja Micskei Zoltán, Tóth.

Hasonló előadás


Az előadások a következő témára: "Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Memória és perifériák virtualizációja Micskei Zoltán, Tóth."— Előadás másolata:

1 Budapesti Műszaki és Gazdaságtudományi Egyetem Mé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

2 Mi történt az elmúlt egy hétben? 2 Forrás:

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 rendszerekben o Virtuális memória a platform virtualizációban o 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ában o Periféria virtualizációs architektúrák 3

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 kezdeni o 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) 4

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 rendszerekben o Virtuális memória a platform virtualizációban o 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ában o Periféria virtualizációs architektúrák 5

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

7 Virtuális memóriakezelés Fizikai memória Folyamat memóriája 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. 7

8 Virtuális memóriakezelés Fizikai memória Folyamat 1 memóriája Cím: 0 Cím: N-1 Cím: M-1 Ez minden folyamatra igaz Folyamat 2 memóriája Cím: 0Cím: K-1 8

9 Virtuális memória megvalósítása lapokkal  Memória lapok (pages) o Virtuális → fizikai memória cím hozzárendelés o Tipikusan (x86) 4 kB méretű allokációs egységekben o A cím utolsó 12 bitje a lapon belüli cím o 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ány Pozíció a lapon belül – 12 bit 9

10 Virtuális memória megvalósítása lapokkal Tová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 10

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 rendszerekben o Virtuális memória a platform virtualizációban o 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ában o Periféria virtualizációs architektúrák 11

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ásokhoz o De a CPU ilyet nem támogat 12 VM1VM2 Vendég: virtuális memória Vendég: „fizikai” memória Gazda: fizikai memória

13 Memória virtualizálása Fizikai memória a hardverben A virtuális gép „fizikai” memóriája Folyamat A virtuális gépben futó folyamat virtuális memóriája Vendég laptábla VM allokációs laptábla Árnyék laptábla 13

14 Memória virtualizálása VM allokációs laptábla: Virtuális gép „fizikai” memóriacímei -> Fizikai gép fizikai memóriacímei Vendég laptábla Virtuális gép virtuális címei -> Virtuális gép „fizikai” címei Árnyék laptábla Virtuális gép virtuális címei -> Fizikai gép fizikai címei Vendég OS azt „hiszi”, hogy ezt használja. A kernele ezt próbálja módosítani 14 A fizikai processzor valójában ezt használja. A vendég ennek létezéséről nem tud. Ha módosítja a vendég a saját laptábláját, ezt is frissíteni kell.

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 15

16 Memória virtualizálása 16 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) 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)

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 rendszerekben o Virtuális memória a platform virtualizációban o 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ában o Periféria virtualizációs architektúrák 17

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ől o 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és o 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él o 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 18

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 meg o Gyakorlati haszna önmagában elenyésző, a legtöbb OS az összes szabad memóriát disk cache-nek használja o 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ől o 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 19

20 Extra memória virtualizálási lehetőségek 20 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 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

21 Kitekintés: VMware ESXi memóriakezelés 21

22 Kitekintés: VMware ESXi memóriakezelés 22 Jelmagyarázat: granted (lila) active (kék) overhead (sárga) zero (piros) consumed (zöld) shared (szürkés-kék)

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 rendszerekben o Virtuális memória a platform virtualizációban o 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ában o Periféria virtualizációs architektúrák 23

24 Perifériákról általában  A perifériák kezelése jellegzetesen o CPU felprogramozza a perifériát, regiszterek átírása o 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ö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 24

25 Perifériákról általában Az adapter modell 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 25

26 Perifériákról általában Az adapter modell Adapter Cél periféria Adapter programozás Periféria protokollja Perifériának szánt konkrét utasítás, adat Rétegzett programozási modell (pl. USB, SCSI, SATA): 26

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 rendszerekben o Virtuális memória a platform virtualizációban o 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ában o Periféria virtualizációs architektúrák 27

28 Teljes periféria emuláció Hardver Virtualizációs réteg Virtualizációs réteg Meghajtó Virtuális gép Meghajtó Backend Ütemező Statikus Hozzárendelés Meghajtó Backend Távoli hozzáférés szerver 28

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 CPU o 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: backend o 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ú 29

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égeznek o Pl. hoszt fájlrendszerhez hozzáférés o Itt kezd keveredni a virtualizáció és az OS…  Speciális meghajtót kell telepíteni a VM-ben! 30

31 Paravirtualizált I/O eszközök (VMware Tools, Hyper-V Integration Components kell) 31

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ártya o 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 fogadnak o Hasznos pl.: 10 Gb/s Ethernet hálózati kártya 32

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! 33 Forrás: Intel

34 Hardveres periféria virtualizáció Hardver Virtualizációs réteg Virtualizációs réteg Meghajtó Virtuális gép 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 34

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

36 További információ  Carl Waldspurger and Mendel Rosenblum. I/O virtualization. Commun. ACM 55, 1 (January 2012), DOI= / I/O virtualization  Abramson, D. et al. "Intel® Virtualization Technology for Directed I/O." Intel Technology Journal. (August 2006).Intel® Virtualization Technology for Directed I/O.  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.Intel és AMD technológiák a hardveres virtualizáció megvalósítására  Garaczi Tamás. Intel VT-d (IOMMU) technológia részleteinek megismerése, virttech HF, 2010.Intel VT-d (IOMMU) technológia részleteinek megismerése 36

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 o Memó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-ballon o Perifériák virtualizációja Perifériák programozói felülete általában Periféria virtualizációs architektúrák 37


Letölteni ppt "Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Memória és perifériák virtualizációja Micskei Zoltán, Tóth."

Hasonló előadás


Google Hirdetések