VM Design Issues Vivek Pai / Kai Li Princeton University
Download
Report
Transcript VM Design Issues Vivek Pai / Kai Li Princeton University
VM Design Issues
Vivek Pai / Kai Li
Princeton University
Mini-Gedankenexperimenten
What’s the refresh rate of your monitor?
What is the access time of a hard drive?
What response time determines sluggishness
or speediness? What’s the relation?
What determines the running speed of a
program that’s paging heavily?
If you have a program that pages heavily,
what are your options to improve the
situation?
2
Mechanics
The midterm was probably too long
Almost lost a lecture – today’s
Haven’t looked closely at them
Grading based on mean, std deviation
Already had some post-midterm slack
I’ll adjust the web page appropriately
Project client updated – maybe use it
3
Where We Left Off Last Time
Various approaches to evicting pages
Some discussion about why doing even
“well” is hard to implement
Belady’s algorithm for off-line analysis
4
The Big Picture
We’ve talked about single evictions
Most computers are multiprogrammed
Single eviction decision still needed
New concern – allocating resources
How to be “fair enough” and achieve good
overall throughput
This is a competitive world – local and
global resource allocation decisions
5
x86 Page Table Entry
Page frame number U P Cw Gl L D A Cd Wt O W V
31
12
Reserved
Valid
Writable
Owner (user/kernel)
Write-through
Cache disabled
Accessed (referenced)
Dirty
PDE maps 4MB
Global
6
Program Behaviors
80/20 rule
Locality
> 80% memory references
are made by < 20% of
code
Spatial and temporal
# page faults
Working set
Working set
Keep a set of pages in
memory would avoid a lot
of page faults
# pages in memory
7
Observations re Working Set
Working set isn’t static
There often isn’t a single “working set”
Multiple plateaus in previous curve
Program coding style affects working set
Working set is hard to gauge
What’s the working set of an interactive
program?
8
Working Set
Main idea
Keep the working set in memory
An algorithm
On a page fault, scan through all pages of the
process
If the reference bit is 1, record the current time
for the page
If the reference bit is 0, check the “last use time”
If the page has not been used within d, replace the page
Otherwise, go to the next
Add the faulting page to the working set
9
WSClock Paging Algorithm
Follow the clock hand
If the reference bit is 1, set reference bit to 0,
set the current time for the page and go to
the next
If the reference bit is 0, check “last use time”
If page has been used within d, go to the next
If page hasn’t been used within d and modify bit is 1
Schedule the page for page out and go to the next
If page hasn’t been used within d and modified bit is 0
Replace this page
10
Simulating Modify Bit with
Access Bits
Set pages read-only if they are read-write
Use a reserved bit to remember if the page is
really read-only
On a read fault
If it is not really read-only, then record a modify in
the data structure and change it to read-write
Restart the instruction
11
Implementing LRU without
Reference Bit
Some machines have no reference bit
VAX, for example
Use the valid bit or access bit to simulate
Invalidate all valid bits (even they are valid)
Use a reserved bit to remember if a page is really
valid
On a page fault
If it is a valid reference, set the valid bit and place the
page in the LRU list
If it is a invalid reference, do the page replacement
Restart the faulting instruction
12
Demand Paging
Pure demand paging relies only on
faults to bring in pages
Problems?
Possibly lots of faults at startup
Ignores spatial locality
Remedies
Loading groups of pages per fault
Prefetching/preloading
13
Speed and Sluggishness
Slow is > .1 seconds (100 ms)
Speedy is << .1 seconds
Monitors tend to be 60+ Hz =
<16.7ms between screen paints
Disks have seek + rotational delay
Seek is somewhere between 7-16 ms
At 7200rpm, one rotation = 1/120 sec = 8ms.
Half-rotation is 4ms
Conclusion? One disk access OK, six are bad
14
Disk Address
Use physical
memory as a
cache for disk
Where to find
a page on a
page fault?
Virtual
address
space
invalid
Physical
memory
PPage# field is
a disk address
15
Imagine a Global LRU
Global – across all processes
Idea – when a page is needed, pick the
oldest page in the system
Problems? Process mixes?
Interactive processes
Active large-memory sweep processes
Mitigating damage?
16
Amdahl’s Law
Gene Amdahl (IBM, then Amdahl)
Noticed the bottlenecks to speedup
Assume speedup affects one
component
New time =
(1-not affected) + affected/speedup
In other words, diminishing returns
17
NT x86 Virtual Address Space Layouts
00000000
Application code
Globals
Per-thread stacks
DLL code
3-GB user space
7FFFFFFF
80000000
Kernel & exec
HAL
Boot drivers
C0000000 Process page tables
Hyperspace
C0800000
System cache
Paged pool
Nonpaged pool
FFFFFFFF
BFFFFFFF
C0000000
1-GB system space
FFFFFFFF
18
Virtual Address Space in Win95 and Win98
00000000
User accessible
7FFFFFFF
80000000 Shared, process-writable
(DLLs, shared memory,
Win16 applications)
C0000000
FFFFFFFF
Unique per process
(per application),
user mode
Systemwide
user mode
Win95 and Win98
Operating system
(Ring 0 components)
Systemwide
kernel mode
19
Details with VM Management
Create a process’s virtual address space
Allocate page table entries (reserve in NT)
Allocate backing store space (commit in NT)
Put related info into PCB
Destroy a virtual address space
Deallocate all disk pages (decommit in NT)
Deallocate all page table entries (release in NT)
Deallocate all page frames
20
Page States (NT)
Active: Part of a working set and a PTE points to it
Transition: I/O in progress (not in any working sets)
Standby: Was in a working set, but removed.
A PTE points to it, not modified and invalid.
Modified: Was in a working set, but removed.
A PTE points to it, modified and invalid.
Modified no write: Same as modified but no write
back
Free: Free with non-zero content
Zeroed: Free with zero content
Bad: hardware errors
21
Dynamics in NT VM
Demand
zero fault
Page in or allocation
Standby
list
Process
“Soft”
working faults
set
Modified
writer
Free
list
Zero
thread
Zero
list
Bad
list
Modified
list
Working set
replacement
22
Shared Memory
How to destroy a
virtual address space?
How to swap out/in?
Link all PTEs
Reference count
.
.
.
..
.
Page table
Process 1
Link all PTEs
Operation on all entries
How to pin/unpin?
w
Link all PTEs
Reference count
.
.
.
w
.
.
.
..
.
Physical
pages
Page table
Process 2
23
Copy-On-Write
Child’s virtual address
space uses the same
page mapping as
parent’s
Make all pages read-only
Make child process ready
On a read, nothing
happens
On a write, generates an
access fault
map to a new page
frame
copy the page over
restart the instruction
r
r
.
.
.
..
.
Page table
Parent process
r
r
.
.
.
..
.
.
.
.
Physical
pages
Page table
Child process
24
Issues of Copy-On-Write
How to destroy an address space
How to swap in/out?
Same as shared memory case?
Same as shared memory
How to pin/unpin
Same as shared memory
25