Upload
herbert-booker
View
265
Download
6
Embed Size (px)
Citation preview
计算机系•信息处理实验室
Lecture 14 Cache Manager
xlanchen@05/27/2005
xlanchen@05/27/2005 Understanding the Inside of Windows2000
2计算机系信息处理实验室
Cache Manager
Key Features of the Windows 2000 Cache Manager
Cache Structure
Cache Size
Cache Data Structures
Cache Operation
Cache Support Routines
xlanchen@05/27/2005 Understanding the Inside of Windows2000
3计算机系信息处理实验室
Cache Manager
A set of kernel-mode functions and system threads
Provide data caching for all 2K FS drivers
Both local and network
Cooperate with the memory manager
Cache
the purpose of a cache is to keep a subset of frequently accessed data in physical memory as a way to improve I/O performance
xlanchen@05/27/2005 Understanding the Inside of Windows2000
4计算机系信息处理实验室
Key Features of 2K Cache Manager
Supports all file system types (both local and network)
Uses the memory manager to control what parts of what files are in physical memory
Caches data on a virtual block basis
Supports "hints" passed by applications at file open time (such as random versus sequential access, temporary file creation, and so on)
Supports recoverable file systems
xlanchen@05/27/2005 Understanding the Inside of Windows2000
5计算机系信息处理实验室
Single, Centralized System Cache
Some operating systems rely on each individual file system to cache data
2K offers a centralized caching facility
caches all externally stored data
local hard disks, floppy disks, network file servers, or CD-ROMs
user data streams or file system metadata
xlanchen@05/27/2005 Understanding the Inside of Windows2000
6计算机系信息处理实验室
The memory manager
Cache held in virtual (no phys) memory
Cache manager can’t tell what’s in phys mem
Files mapped by Section Objects
Cc copies data to/from Section Object (ref I/O system)
MM pages data in and flushes it out
Each section logically n * (256-byte) views
Maintained until all handles for file x closed
xlanchen@05/27/2005 Understanding the Inside of Windows2000
7计算机系信息处理实验室
The memory manager
Cache manager
Memory manager
Physical pages
Virtual memory
xlanchen@05/27/2005 Understanding the Inside of Windows2000
8计算机系信息处理实验室
Cache coherency
Must ensure that any process accessing cached data will get the most recent version of that data
Example:
Process 1, open/read/write
Process 2, map into its address space
xlanchen@05/27/2005 Understanding the Inside of Windows2000
9计算机系信息处理实验室
Coherent caching scheme
xlanchen@05/27/2005 Understanding the Inside of Windows2000
10计算机系信息处理实验室
Virtual Block Caching
Logical blocks
Keeps track of which blocks of a disk partition are in the cache
Novell NetWare, OpenVMS, OS/2, and older UNIX systems
Virtual block caching
Keeps track of which parts of which files are in the cache
xlanchen@05/27/2005 Understanding the Inside of Windows2000
11计算机系信息处理实验室
Virtual block caching
Benefits
Opens up the possibility of doing intelligent read-ahead
Allows the I/O system to bypass going to the file system for requests for data that is already in the cache (fast I/O)
xlanchen@05/27/2005 Understanding the Inside of Windows2000
12计算机系信息处理实验室
Stream-Based Caching
Stream caching vs. file caching
A stream is a sequence of bytes within a file
Some file systems allow a file to contain more than one stream
NTFS
Stream caching: caching each stream independently
xlanchen@05/27/2005 Understanding the Inside of Windows2000
13计算机系信息处理实验室
Recoverable File System Support
Recoverable file systems
Can reconstruct the disk volume structure after a system failure
A log file is maintained
NTFS
xlanchen@05/27/2005 Understanding the Inside of Windows2000
14计算机系信息处理实验室
Recoverable File System Support
The cache manager and the file system must work together
The file system writes a log file record documenting the volume update it intends to make.
The file system calls the cache manager to flush the log file record to disk.
The file system writes the volume update to the cache; that is, it modifies its cached metadata.
The cache manager flushes the altered metadata to disk, updating the volume structure. (Actually, log file records are batched before being flushed to disk, as are volume modifications.)
xlanchen@05/27/2005 Understanding the Inside of Windows2000
15计算机系信息处理实验室
Cache structure
Cache manager caches data on a virtual basis
A region of system virtual address spaces is divided into views
View: 256KB slots
See System cache address space
xlanchen@05/27/2005 Understanding the Inside of Windows2000
16计算机系信息处理实验室
System cache address space
xlanchen@05/27/2005 Understanding the Inside of Windows2000
17计算机系信息处理实验室
Round-robin
xlanchen@05/27/2005 Understanding the Inside of Windows2000
18计算机系信息处理实验室
Cache Size how Windows 2000 computes the size of the system cache ?
Cache Virtual Size ?
Cache Physical Size ?
xlanchen@05/27/2005 Understanding the Inside of Windows2000
19计算机系信息处理实验室
Cache Virtual Size
Default size : 64 MB
If physical memory is more than 16 MB :
128 MB + (64 MB - 16 MB) / 4 MB * PMEM = 896 MB
Size and Location of System Data Cache
Platform Address Range Min/Max
Virtual Size
x86 2-GB system space
0xC1000000-E0FFFFFF, 0xA4000000-BFFFFFFF
64-960 MB
x86 1-GB system space
0xC1000000-DBFFFFFF 64-432 MB
x86 1-GB system space with Terminal
Services 0xC1000000-DCFFFFFF 64-448 MB
xlanchen@05/27/2005 Understanding the Inside of Windows2000
20计算机系信息处理实验室
Cache Physical Size
The Windows 2000 Task Manager doesn't report the size of the system cache
xlanchen@05/27/2005 Understanding the Inside of Windows2000
21计算机系信息处理实验室
Some Confused conceptssystem cache
system cache working set
system working set
Some System VariablesMemory: System Cache Resident Bytes
MmSystemCachePage
Memory: Cache Bytes
MmSystemCacheWs.WorkingSetSize
Memory: Cache Bytes Peak
MmSystemCacheWs.Peak
Memory: Cache Faults/Sec
MmSystemCacheWs.PageFaultCount
A part
xlanchen@05/27/2005 Understanding the Inside of Windows2000
22计算机系信息处理实验室
Cache data structure
to keep track of cached files
A virtual address control block
For each 256-KB slot in the system cache
A private cache map
For each separately opened cached file
A single shared cache map structure
For mapped views of the cached file
xlanchen@05/27/2005 Understanding the Inside of Windows2000
23计算机系信息处理实验室
Systemwide Cache Data Structures
system cache and virtual address control blocks (VACBs)
VACB structure 256KB
xlanchen@05/27/2005 Understanding the Inside of Windows2000
24计算机系信息处理实验室
Per-File Cache Data Structures File Handle
xlanchen@05/27/2005 Understanding the Inside of Windows2000
25计算机系信息处理实验室
If read fileIs the file in the cache?
If so, which VACB, if any, refers to the requested location?
VACB index arrays
xlanchen@05/27/2005 Understanding the Inside of Windows2000
26计算机系信息处理实验室
Cache Operation
Write-Back Caching and Lazy Writing
Intelligent Read-Ahead
xlanchen@05/27/2005 Understanding the Inside of Windows2000
27计算机系信息处理实验室
Write-Back Caching and Lazy Writing
Data written to files is first stored in memory in cache pages and then written to disk later
Flush timing
Cache manager Memory manager
Demand for physical memory exceeds supply
System thread—the lazy writer
Created once per second
1/8 of the dirty pages in the system cache or more to be written to disk
xlanchen@05/27/2005 Understanding the Inside of Windows2000
28计算机系信息处理实验室
Dirty Page Threshold
The number of pages that the system cache keeps in memory before waking up the lazy writer
Calculating the Dirty Page Threshold
System Memory Size Dirty Page ThresholdSmall Physical pages/8Medium Physical pages/4Large Sum of the above two
xlanchen@05/27/2005 Understanding the Inside of Windows2000
29计算机系信息处理实验室
Disabling Lazy Writing for a File
Win32 CreateFile function
Specifies FILE_ATTRIBUTE_TEMPORARY to create a temporary file
The lazy writer won't write dirty pages to the disk unless there is a severe shortage of physical memory or the file is closed
To improve system performance
xlanchen@05/27/2005 Understanding the Inside of Windows2000
30计算机系信息处理实验室
Write Through Caching
Win32 CreateFile function
Specifies FILE_FLAG_WRITE_THROUGH flag
Or, Win32 FlushFileBuffers function
xlanchen@05/27/2005 Understanding the Inside of Windows2000
31计算机系信息处理实验室
Flushing Mapped Files
xlanchen@05/27/2005 Understanding the Inside of Windows2000
32计算机系信息处理实验室
xlanchen@05/27/2005 Understanding the Inside of Windows2000
33计算机系信息处理实验室
xlanchen@05/27/2005 Understanding the Inside of Windows2000
34计算机系信息处理实验室
xlanchen@05/27/2005 Understanding the Inside of Windows2000
35计算机系信息处理实验室
xlanchen@05/27/2005 Understanding the Inside of Windows2000
36计算机系信息处理实验室
Cache support routines
File map
Cache manager
System cache
Copy read
data
Process
User space
Map
Pin
Phys. Mem. access
File System Driver
Cached file read
Noncached file read
File write
File read/write
Device Driver
Device
I/O
Memory Manager
Page fault
Per file structure
CcInitializeCacheMap
xlanchen@05/27/2005 Understanding the Inside of Windows2000
37计算机系信息处理实验室
Copying to and from the Cache
Process address space
User space
Process address space
User space
…
System address space System cache
O
Kernel-Mode Functions for Copying to and from the Cache
CcCopyRead
CcFastCopyRead
CcCopyWrite
CcFastCopyWrite
xlanchen@05/27/2005 Understanding the Inside of Windows2000
38计算机系信息处理实验室
Mapping and Pinning
File system driver
Kernel mode
System cache
metadata
Functions for Finding Metadata Locations
CcMapData
CcPinRead
CcPreparePinWrite
CcPinMappedData
CcSetDirtyPinnedData
CcUnpinData
xlanchen@05/27/2005 Understanding the Inside of Windows2000
39计算机系信息处理实验室
DMA
Functions That Create the DMA Interface
CcMdlRead
CcMdlReadComplete
CcMdlWrite
CcMdlWriteComplete
Network file system
Network deviceSystem
cache
Kernel mode
DMA
DMA
Phys. Mem.
VMà PM
MDL
MDL:Memory descriptor list
xlanchen@05/27/2005 Understanding the Inside of Windows2000
40计算机系信息处理实验室
Write Throttling
Write throttling: cache manager’s lazy writer
Upgrade system performance for large write operation
Useful for network redirectors transmitting data over slow communication line
Example: writes a large amount of data to a remote file system over a 9600-baud line