Windows memóriakezelés - Méréstechnika és Információs
Download
Report
Transcript Windows memóriakezelés - Méréstechnika és Információs
Operációs rendszerek alapjai (vimia024)
Memóriakezelés a Windowsban
Micskei Zoltán
Előadások: http://www.mit.bme.hu/~micskeiz
dr. Kovácsházy Tamás kiegészítéseivel az Operációs
Rendszerek (vimia219) tárgy fóliái alapján
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 (4KB / 2MB 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)
x64
64-bit
32 biten max 4 GB
x86
címezhető meg
(gyakorlati határ kevesebb!)
Windows 7 Basic
4
Windows 7 Prof
Server 2008
Standard
Server 2008
Enterprise
Itanium
8
IA-64
64-bit
64 bit:n/a
lényegesen
nagyobb memória
4
192
n/a
4
32
n/a
64
2048
n/a
n/a
n/a
2048
Physical Address Extension (PAE)
36 címbit: CPU + OS támogatás
5
Itanium: Intel szerver
architektúra,
nem lett annyira elterjedt
32-bites x86 címtartomány
Alapesetben
/3GB kapcsoló
2 GB
felhasználói
folyamatnak
3 GB
felhasználói
folyamatnak
2 GB
Rendszer
tartomány
1 GB
Rendszer
6
64-bites címtartomány
64-bit = 17,179,869,184 GB
o x64-en jelenleg 48 bites cím támogatott = 262,144 GB
x64
8192 GB
(8 TB)
Felhasználói
folyamat tartománya
6657 GB
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 Executive heap-ek (pools)
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 a
folyamatnak
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
Kiegészítő
anyag
x86 PAE címfordítás
Forrás: Intel 64 and IA-32 Architectures Software Developers Manual, Vol. 3A
13
Kiegészítő
anyag
x86 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
WinDbg, kernel debugging
o folyamat kikeresése
o BaseDir címének kikeresése
o !vtop: címfordítás
o !pte: laptábla elemeinek megnézése
17
Kiegészítő
anyag
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
Kiegészítő
anyag
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ória használat
Egyszerűnek tűnő kérdés:
Mi mennyi memóriát foglal a gépen?
22
Folyamat memória használat - 0
Feladatkezelő oszlopai
Frissítés gyakorisága
23
Folyamat memória használat - 1
2
1
1
2
3
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ória használat - 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
3
~ Aktív memórialapok száma
4
1
4
Szabad memória kevés, inkább
gyorsítótárban tartja
27
2
DEMO Windows 7 – Resource Monitor
Memórialapok állapotának gyors áttekintése:
Sysinternals RamMap:
részletek
28
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”: \Windows\Prefetch
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
30
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
31
DEMO Prefetch
Process Monitor: betöltéskor használt fájlok
Prefetch file-ok
o C:\Windows\Prefetch
Layout.ini
Prefetch fájl tartalma:
o strings.exe
32
Kiegészítő
anyag
Olvasnivaló
Soczó Zsolt, Windows memóriakezelés, MS
Technet HUN, 4 részes cikksorozat
Windows XP Kernel Improvements: Prefetch
mechanizmus
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