VM Design Issues Vivek Pai / Kai Li Princeton University

advertisement
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
Download