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