Opercis rendszerek vimia 219 Memriakezels a Windowsban dr
Operációs rendszerek (vimia 219) Memóriakezelés a Windowsban dr. Micskei Zoltán http: //mit. bme. hu/~micskeiz Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék
Copyright Notice § These materials are part of the Windows Operating System Internals Curriculum Development Kit, developed by David A. Solomon and Mark E. Russinovich with Andreas Polze § Microsoft has licensed these materials from David Solomon Expert Seminars, Inc. for distribution to academic organizations solely for use in academic environments (and not for commercial use) § http: //www. academicresourcecenter. net/curriculum/pfv. aspx? ID=6191 § © 2000 -2005 David A. Solomon and Mark Russinovich 2
Rejtvény Mennyi szabad memória van most a gépemen? 3
A Windows memóriakezelésének alapelvei § Virtuális tárkezelés o Lapszervezés (4 KB / 2 MB méretű lapok, 2/3/4 szintű) o Lapozófájl használata § Hatékonyság o Igény szerinti lapozás + clustering + prefetch o Memória megosztás, copy-on-write o Fájl cachelés memóriában (memory mapped file) § Biztonság o Minden folyamatnak külön címtartomány o Elérés leírókon keresztül (hozzáférési token) 4
Maximális fizikai memória (GB) 32 biten max 4 GB címezhető meg (gyakorlati határ kevesebb!) x 86 x 64 (64 -bit) Windows 8 4 128 Windows 8 Pro 4 512 Server 2008 Enterprise Server 2012 Enterprise 64 2048 -- 4096 Physical Address Extension (PAE) 36 címbit: CPU + OS támogatás 5 64 bit: lényegesen nagyobb memória
32 -bites x 86 címtartomány Alapesetben 2 GB felhasználói folyamatnak 2 GB Rendszer tartomány 6
64 -bites címtartomány 64 -bit => 16 777 216 TB (jelenleg 48 bites címek => 256 TB) 8192 GB (8 TB) Felhasználói folyamat tartománya 8 TB Rendszer tartomány 7
Virtual Address Space (V. A. S. ) Felhasználó címtartomány: o A futó alkalmazás (. EXE és. DLL-ek) o Felhasználói módú verem minden szálnak o Alkalmazás adatstruktúrái Felhasználói módból is elérhető Csak védett módból érhető el 8 } } Egyedi minden folyamatra Rendszerszinten közös 8
Virtual Address Space (V. A. S. ) Rendszer tartomány: Felhasználói módból is elérhető o Executive, kernel és a HAL o Rendszerszintű adatstruktúrák o Laptáblák (virtuális → fizikai leképezés, folyamatonként különböző) o Védett módú eszköz meghajtók o Védett módú verem minden folyamat minden szálának Csak védett módból érhető el 9 } } Egyedi minden folyamatra Rendszerszinten közös 9
Folyamatok memóriafoglalása Két lépésben: § Reserve: virtuális címtartomány lefoglalása § Commit: virtuális memória lefoglalása Előny: § Csak annyit foglal, amennyi ténylegesen kell 10
Logikai és fizikai címek közötti leképzés (ism. ) Folyamat 1 Laptáblák Fizikai memória Lapozófájl Folyamat 2 11
x 86 címfordítás (PAE nélkül) 12
x 86 PAE címfordítás Forrás: Intel 64 and IA-32 Architectures Software Developers Manual, Vol. 3 A 13
x 86 PAE esetén a PTE § 64 bites, 24 bit a lap címének § Flagek: o P – present, A – access, D – dirty, U/S – user/system, R/W – read/write… 14
DEMO Címfordítás megfigyelése § Win. Dbg, kernel debugging o folyamat kikeresése o Base. Dir címének kikeresése o !vtop: címfordítás o !pte: laptábla elemeinek megnézése 17
Munkakészlet (Working Set) § Working Set: o Egy folyamathoz tartozó fizikai memóriában lévő lapok o Ezeket éri el laphiba nélkül § Working set limit: o Ennyi fizikai memóriát birtokolhat egyszerre o Ha eléri, lapcsere kell • NT 4. 0: módosított FIFO algoritmus • Windows 2000: Least Recently Used (UP rendszereknél) o Ha a szabad memória lecsökken: trimming 18
Fizikai memórialapok életciklusa demand zero page faults page read from disk or kernel allocations Standby Page List Process Working Sets (Active) “soft” page faults working set replacement Free Page List modified page writer Modified Page List Private pages at process exit 19 zero page thread Zero Page List Bad Page List
Lapozófájl (page file) § Mi kerül bele? o Csak a módosított adat, kód nem § Mikor kerül bele? o Ha van szabad memória, akkor is lehet o Folyamatok nem foglalhatnak bármennyi memóriát o Tartalék az új/többi folyamatnak § Meghajtónként egy darab o Ajánlott nem a rendszerlemezre rakni o De maradjon egy kicsi ott is a memory dumpnak § Ajánlott méret o 1 vagy 1, 5 -szer a fizikai memória (? ), Fix méret (? ) 20
DEMO Fizikai memória, lapozófájl § Process Explorer / System information o Paging Lists o Page Fault Delta § Lapozófájl méretének állítása o GUI o regedit § Perfmon: Lapozófájl kihasználtság (%) 21
Memóriahasználat megfigyelése Egyszerűnek tűnő kérdés: Mi mennyi memóriát foglal a gépen? 22
Folyamat memóriahasználata - 0 § Feladatkezelő oszlopai ¡Frissítés gyakorisága 23
Folyamat memóriahasználata - 1 1 1 2 3 Fizikai memória használat = munkakészlet (working set) • megosztott lapok is • megosztott lapok nélkül Privát, lefoglalt virtuális memória (committed) • megosztott lapok nélkül • ez kerül bele a lapozófájlba 24
Folyamat memóriahasználata - 2 § Process Explorer: o Folyamat részletes adatai § Private Bytes § Working Set o Ebből mennyi a megosztott 25
DEMO Folyamat memóriaterülete § Sysinternals VMMap 26
A teljes rendszer memóriahasználata 1 • Összes lefoglalt virtuális memória • Ennyit kéne kiírni a lapozófájlba, de nem biztos, hogy ennyi van kiírva 2 Előjegyzési küszöb: összes fizikai memória + lapozófájlok aktuális mérete 3 1 3 ~ Aktív memórialapok száma 27 2
DEMO Resource Monitor § Memórialapok állapotának gyors áttekintése: § Sysinternals Ram. Map: részletek 28
További optimalizációk 29
Windows 8: memóriahasználat csökkentése § Memory combining o azonos tartalom keresése a háttérben § Szolgáltatások csökkentése o + „Start on demand” indítási mód § „Hot” és „cold” adatstruktúrák szétválasztása Lásd: Reducing runtime memory in Windows 8, http: //blogs. msdn. com/b/b 8/archive/2011/10/07/reducing-runtimememory-in-windows-8. aspx 30
Egy optimalizáció: Prefetch (Windows XP) § Egy program indulásakor sok laphiba van § Mindig ugyanazokat kell betölteni § Prefetch: első tíz másodperc hozzáféréseit megjegyzi § Prefetch “trace file”: WindowsPrefetch o Elnevezés: . EXE-<teljes elérés hash-e>. pf § Alkalmazás következő indulásakor o Hivatkozott lapok betöltése aszinkron módon § Bootolás figyelése is 31
Egy újabb: Superfetch (Vista) § 8 Prioritás a memórialapokhoz o Standby listából 8 darab ennek megfelelően § Lapok használatának követése § Memória felhasználása esetén lassan visszahoz lapokat a standby listára, amik kellhetnek még 32
DEMO Prefetch § Process Monitor: betöltéskor használt fájlok § Prefetch file-ok o C: WindowsPrefetch § Layout. ini § Prefetch fájl tartalma: o strings. exe 33
Olvasnivaló § Soczó Zsolt, Windows memóriakezelés, MS Technet HUN, 4 részes cikksorozat § Inside the Windows Vista Kernel: o 1. rész: Multimedia Class Scheduler o 2. rész: Superfetch, Ready* 34
Összefoglalás § Virtuális tárkezelés, lapszervezés § Többszintű optimalizáció § Memóriahasználat vizsgálata o Feladatkezelő: gyors áttekintés o Process Explorer, Perfmon, VMMap stb. : részletek 35
- Slides: 33