Download presentation
Presentation is loading. Please wait.
Published byMarvin Hamilton Modified over 9 years ago
1
Clock-Pro: An Effective Replacement in OS Kernel Xiaodong Zhang College of William and Mary
2
How to Make LIRS Work in OS Kernels? l Most system kernels use the CLOCK algorithm, an approximation of LRU. l We have made efforts to directly implement LIRS in Linux kernels, but … l Our experience tells us that we must build on existing strength. l CLOCK is the base for LIRS.
3
All the resident pages are placed around a circular list, like a clock; Each page is associated with a reference bit, indicating if the page has been accessed. Basic CLOCK Replacement 0 CLOCK hand 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 1 0 0 0 On a HIT Set Reference bit to 1 (no algorithm operations) 1 0
4
Basic CLOCK Replacement 0 CLOCK hand 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 1 0 0 0 On a sequence of two MISSes Starts from the currently pointed page, and evicts the page if it is”`0”; Move the clock hand until reach a “0” page; Give “1” page a second chance, and reset its “1” to “0” 1 00 0
5
The CLOCK with a Long History “In the Multics system a paging algorithm has been developed that has the implementation ease and low overhead of the FIFO strategy and is an approximation to the LRU strategy” “A paging Expreiment with the Multics System” MIT Project MAC Report MAC-M-384, May 1968, Fernando J. Corbato (1990 Turing Award Laureate)
6
The CLOCK has been Widely Used Multics UNIX/AIX/Linux/BSD VAX/VMS DB2 Windows/Oracle/Solaris Tanebaum & Woodhull Silberschatz & Galvin Stallings (for undergraduate) Major OS Major OS Textbooks
7
Prior Work on LRU versus CLOCK FBR (1990, SIGMETRICS) LRU-2 (1993, SIGMOD) 2Q (1994, VLDB) SEQ (1997, SIGMETRICS) LRFU (1999, OSDI) EELRU (1999, SIGMETRICS) MQ (2001, USENIX) LIRS (2002, SIGMETRICS) ARC (2003, FAST) GCLOCK (1978, ACM TDBS) LRU related workCLOCK related work 1968 2003 CAR (2004, FAST) CLOCK-Pro (2005, USENIX)
8
Introduce additional page access information. A counter is associated with each page rather than a single bit; The counter is incremented on a page hit; The clock hand periodically moves, and decrements the counter of each block; The page with its counter of 0 is replaced. GCLOCK Replacement
9
An age is associated with each page in addition to a reference bit; When the clock hand sweeps through pages, it increases its age if the page’s bit is 1, otherwise it decreases its age. The page with its age of 0 is replaced. Age-Based CLOCK in Linux and FreeBSD
10
CAR: CLOCK with Adaptive Replacement Two clocks T1 and T2, one is for cold pages touched only once recently (Recency), another is for hot pages touched at least twice (“Frequency”); Queues B1 and B2 are for pages recently replaced from T1 and T2; The memory allocations for T1 or T2 depend on the ratio of references to B2 and B1.
11
Limits of CAR A page that is regularly accessed with its reuse distance a little bit larger memory size has no hits in T1 or T2. (inherited LRU problem). A page in T2 can stay in memory without any accesses because frequency does not reflect ``reuse distance”. No system implementations yet
12
It is an approximation of LIRS based on the CLOCK infrastructure. Pages categorized into two groups: cold pages and hot pages based on their reuse distances (or IRR). There are three hands: Hand-hot for hot pages, Hand-cold for cold pages, and Hand-test for running a reuse distance test for a block; The allocation of memory pages between hot pages (Mhot) and cold pages (Mcold ) are adaptively adjusted. (M = Mhot + Mcold) All hot pages are resident (=Lir blocks), some cold pages are also resident (= Hir Blocks); keep track of recently replaced pages (=non-resident Hir blocks) Basic Ideas of CLOCK-Pro
13
CLOCK-Pro Structure 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 hand-hot hand-test hand-cold 0 1 2 3 4 5 6 7 8 9 10 11 1213 14 15 16 17 18 19 20 21 22 23 24 0 1 1 Cold resident Hot Cold non-resident 0 All hands move in the clockwise direction. Hand-cold is used to find a page for replacement. Hand-test: (1) to determine if a cold page is promoted to be hot; (2) remove non-resident cold pages out of the clock. Hand-hot: find a hot page to be demoted into a cold page. Two reasons for a resident cold page: (1)A fresh replacement: a first access. (2)It is demoted from a hot page. 0
14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 19 18 20 21 22 23 24 hand-hot hand-test hand-cold 16 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 2 9 13 15 17 1819 20 21 22 23 24 0 0 0 0 0 0 0 0 0 0 1 1 16 14 12 11 10 8 7 6 5 4 3 1 0 0 0 Resident Cold Pages Non-resident Cold PagesHot Pages Clock Accessing Sequence: ….27, 7, 26, 25, 4, 23 Accessing Sequence: ….27, 7, 26, 25, 4, 23 0 0
15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 19 18 20 21 22 23 24 hand-hot hand-test hand-cold 16 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 2 9 13 15 17 1819 20 21 22 23 24 0 0 0 0 0 0 0 0 0 0 1 1 5 4 3 1 0 0 0 Hot Pages Clock Current accessing: Page 23 Current accessing: Page 23 Hit! Set reference bit of Page 23 to 1. No other operation Hit! Set reference bit of Page 23 to 1. No other operation 16 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 1 1 0 0
16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 19 18 20 21 22 23 24 hand-hot hand-test hand-cold 16 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 2 9 13 15 17 1819 20 21 22 23 24 1 0 0 0 0 0 0 0 0 0 1 1 5 4 3 1 0 0 0 Hot Pages Clock Current accessing: Page 4 Current accessing: Page 4 Hit! Set reference bit of Page 4 to 1. No other operation Hit! Set reference bit of Page 4 to 1. No other operation 16 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 1 1 0 0
17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 19 18 20 21 22 23 24 hand-hot hand-test hand-cold 16 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 2 9 13 15 17 1819 20 21 22 23 24 1 0 0 0 0 0 0 0 0 0 1 1 5 4 3 1 1 0 Hot Pages Clock Current accessing: Page 25 Current accessing: Page 25 16 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 (1) run hand-cold--- reclaim the first met cold page with ref bit 0 (Page 5) (2) Reclaim cold page 5 and remove it from resident cold page list Miss! 0 0
18
1 2 3 4 6 7 8 9 10 11 12 13 14 15 17 19 18 20 21 22 23 24 hand-hot hand-test 16 0 1 1 0 0 1 0 0 0 0 0 0 0 1 2 9 13 15 17 1819 20 21 22 23 24 1 0 0 0 0 0 0 0 0 0 1 1 4 3 1 1 0 Hot Pages Clock Current accessing: Page 25 Current accessing: Page 25 16 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages hand-cold (3) Leave non-resident cold page 5 in the original position of clock list (5) run hand-test to find a position for page 5 (4) Add page 5 into non-resident cold page list 5 Non- resident colde page list is full! 0 0
19
1 2 3 4 6 7 8 9 10 11 12 13 14 15 17 19 18 20 21 22 23 24 hand-hot hand-test 0 1 1 0 0 1 0 0 0 0 0 0 0 1 2 9 13 15 17 1819 20 21 22 23 24 1 0 0 0 0 0 0 0 0 0 1 1 4 3 1 1 0 Hot Pages Clock Current accessing: Page 25 Current accessing: Page 25 (5) Add page 5 to non- resident cold page list 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages hand-cold 0 5 5 Reorganize clock list 0 0
20
1 2 3 4 6 7 8 9 10 11 12 13 14 15 18 20 19 21 22 23 24 17 hand-hot hand-test 0 1 1 0 0 1 0 0 0 0 0 0 0 1 2 9 13 15 17 1819 20 21 22 23 24 1 0 0 0 0 0 0 0 0 0 1 1 4 3 1 1 0 Hot Pages Clock Current accessing: Page 25 Current accessing: Page 25 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages hand-cold 0 5 5 Now we already have one empty room for page 25 (6) Check page 25 in non-resident page list- --it is not in it (7) Add page 25 into clock and resident cold page list 0 25 0 page 25 does not exit! 0 0
21
1 2 3 4 6 7 8 9 10 11 12 13 14 15 18 20 19 21 22 23 24 17 hand-hot hand-test 0 1 1 0 0 1 0 0 0 0 0 0 0 1 2 9 13 15 17 1819 20 21 22 23 24 1 0 0 0 0 0 0 0 0 0 1 1 4 3 1 1 0 Hot Pages Clock Current accessing: Page 26 Current accessing: Page 26 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages hand-cold 0 5 5 Miss! (1) run hand-cold to reach the first met cold resident page with reference bit 0 0 25 0 0 0
22
1 2 3 4 6 7 8 9 10 11 12 13 14 15 18 20 19 21 22 23 24 17 hand-hot hand-test 0 1 1 0 0 1 0 0 0 0 0 0 0 1 2 9 13 15 17 1819 20 21 22 23 24 1 0 0 0 0 0 0 0 0 0 1 1 4 3 1 1 0 Hot Pages Clock Current accessing: Page 26 Current accessing: Page 26 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages hand-cold 0 5 5 0 25 0 1. Remove it from resident cold page list Page 4 has reference bit 1, it should be upgraded to hot list. 0 0
23
1 2 3 6 7 8 9 10 11 12 13 14 15 18 20 19 21 22 23 24 17 hand-hot hand-test 0 1 1 0 0 1 0 0 0 0 0 0 0 2 9 13 15 17 1819 20 21 22 23 24 1 0 0 0 0 0 0 0 0 0 1 1 3 1 0 Hot Pages Clock Current accessing: Page 26 Current accessing: Page 26 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 Page 4 has reference bit 1, it should upgrade to a hot page. 0 25 0 hand-cold 0 4 1. Remove it from resident cold page list 2. Reset the reference bit of page 4 and add it to hot page list Hot page list is full! 0 0
24
1 2 3 6 7 8 9 10 11 12 13 14 15 18 20 19 21 22 23 24 17 hand-hot hand-test 0 1 1 0 0 1 0 0 0 0 0 0 0 2 9 13 15 17 1819 20 21 22 23 24 1 0 0 0 0 0 0 0 0 0 1 1 3 1 0 Hot Pages Clock Current accessing: Page 26 Current accessing: Page 26 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 run hand-hot: degrade the first met hot page with reference bit 0 to a cold resident page 0 25 0 hand-cold 0 4 0 0
25
1 2 3 6 7 8 9 10 11 12 13 14 15 18 20 19 21 22 23 17 hand-hot hand-test 1 1 0 0 1 0 0 0 0 0 0 0 2 9 13 15 17 1819 20 21 22 23 1 0 0 0 0 0 0 0 0 1 1 3 1 0 Hot Pages Clock Current accessing: Page 26 Current accessing: Page 26 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 Run hand-hot: degrade first met hot page with ref bit 0 to a cold resident page 0 25 0 hand-cold 0 4 0 24 Reorganize clock list 0 0
26
1 2 3 6 7 8 9 10 11 12 13 14 15 17 19 21 20 22 23 18 hand-hot hand-test 1 1 0 0 1 0 0 0 0 0 0 0 2 9 13 15 17 1819 20 21 22 23 1 0 0 0 0 0 0 0 0 1 1 3 1 0 Hot Pages Clock Current accessing: Page 26 Current accessing: Page 26 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold Page 4 is added into hot page list. 0 4 0 4 0 24 0 Page 24 is added into cold page list. 0 0
27
1 2 3 6 7 8 9 10 11 12 13 14 15 17 19 21 20 22 23 18 hand-test 1 1 0 0 1 0 0 0 0 0 0 0 2 9 13 15 17 1819 20 21 22 23 1 0 0 0 0 0 0 0 0 1 1 3 1 0 Hot Pages Clock Current accessing: Page 26 Current accessing: Page 26 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold 0 4 0 4 0 24 0 hand-hot run hand-cold: Page 3 has reference bit 0, reclaim it and move hand-cold to the next position run hand-cold: Page 3 has reference bit 0, reclaim it and move hand-cold to the next position 0 0
28
1 2 6 7 8 9 10 11 12 13 14 15 17 19 21 20 22 23 18 hand-test 1 1 0 0 1 0 0 0 0 0 0 2 9 13 15 17 1819 20 21 22 23 1 0 0 0 0 0 0 0 0 1 1 1 Hot Pages Clock Current accessing: Page 26 Current accessing: Page 26 14 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold Reclaim page 3 and add it into non- resident cold page list. 0 4 0 4 0 24 0 hand-hot 0 3 Non- resident cold page list is full! 2. run hand-test: move 14 from non-resident cold page list. 1. Leave non-resident cold page 3 in the old position in clock list. 3 0 0
29
1 2 6 7 8 9 10 11 12 13 15 17 19 21 20 22 23 18 hand-test 1 1 0 0 1 0 0 0 0 0 0 2 9 13 15 17 1819 20 21 22 23 1 0 0 0 0 0 0 0 0 1 1 1 Hot Pages Clock Current accessing: Page 26 Current accessing: Page 26 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold Add page 3 into non- resident cold page list. 0 4 0 4 0 24 0 hand-hot Reorganize clock list 3 3 0 0
30
1 2 6 7 8 9 10 11 12 13 15 17 18 20 22 21 23 19 hand-test 1 1 0 0 1 0 0 00 0 0 2 9 13 15 17 1819 20 21 22 23 1 0 0 0 0 0 0 0 0 1 1 1 Hot Pages Clock Current accessing: Page 26 Current accessing: Page 26 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold 0 4 0 4 0 24 0 hand-hot 3 3 Add page 26 into resident cold page list and clock list 0 26 0 0 0
31
1 2 6 7 8 9 10 11 12 13 15 17 18 20 22 21 23 19 hand-test 1 1 0 0 1 0 0 00 0 0 2 9 13 15 17 1819 20 21 22 23 1 0 0 0 0 0 0 0 0 1 1 1 Hot Pages Clock Current accessing: Page 7 Current accessing: Page 7 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold 0 4 0 4 0 24 0 hand-hot 3 3 Miss! 0 26 0 (1) run hand-cold: reclaim the first met resident cold page (page 1) 0 0
32
2 6 7 8 9 10 11 12 13 15 17 18 20 22 21 23 19 hand-test 1 1 0 0 1 0 0 00 0 0 2 9 13 15 17 1819 20 21 22 23 1 0 0 0 0 0 0 0 0 1 1 Hot Pages Clock Current accessing: Page 7 Current accessing: Page 7 12 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold 0 4 0 4 0 24 0 hand-hot 3 3 0 26 0 1. Leave page 1 in the old position in clock list. 1 Non- resident cold page list is full! 2. run hand-test: to find a position for page 1
33
2 6 7 8 9 10 11 13 15 17 18 20 22 21 23 19 hand-test 1 1 0 0 1 0 0 00 0 0 2 9 13 15 17 1819 20 21 22 23 1 0 0 0 0 0 0 0 0 1 1 Hot Pages Clock Current accessing: Page 7 Current accessing: Page 7 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold 0 4 0 4 0 24 0 hand-hot 3 3 0 26 0 3. Add page 1 into non- resident cold page list. 1 1
34
2 6 7 8 9 10 11 13 15 17 18 20 22 21 23 19 hand-test 1 1 0 0 1 0 0 00 0 0 2 9 13 15 17 1819 20 21 22 23 1 0 0 0 0 0 0 0 0 1 1 Hot Pages Clock Current accessing: Page 7 Current accessing: Page 7 11 10 8 7 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold 0 4 0 4 0 24 0 hand-hot 3 3 0 26 0 Now we have one empty slot in memory 1 1 (1) check non-resident cold page list and find it---we need to upgrade it to hot page (2) run hand-hot: degrade the first met hot page with reference bit 0 to cold page Hot page list is full!
35
2 6 8 9 10 11 13 15 17 18 20 22 21 23 19 hand-test 1 1 0 0 1 0 0 00 0 0 2 9 13 15 17 1819 20 21 22 23 1 0 0 0 0 0 0 0 0 1 1 Hot Pages Clock Current accessing: Page 7 Current accessing: Page 7 11 10 8 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold 0 4 0 4 0 24 0 hand-hot 3 3 0 26 0 1 1 0 7 0 0 Page 23 has reference bit 1---reset it to 0
36
2 6 8 9 10 11 13 15 17 18 20 22 21 23 19 hand-test 0 1 0 0 1 0 0 00 0 0 2 9 13 15 17 1819 20 21 22 23 0 0 0 0 0 0 0 0 0 1 1 Hot Pages Clock Current accessing: Page 7 Current accessing: Page 7 11 10 8 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold 0 4 0 4 0 24 0 hand-hot 3 3 0 26 0 1 1 0 7 0 0 Page 22 has reference bit 1---reset it to 0
37
2 6 8 9 10 11 13 15 17 18 20 22 21 23 19 hand-test 0 0 0 0 1 0 0 00 0 0 2 9 13 15 17 1819 20 21 22 23 0 0 0 0 0 0 0 0 0 0 1 Hot Pages Clock Current accessing: Page 7 Current accessing: Page 7 11 10 8 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold 0 4 0 4 0 24 0 hand-hot 3 3 0 26 0 1 1 0 7 Page 21 has reference bit 0---degrade it
38
2 6 8 9 10 11 13 15 17 18 20 22 23 19 hand-test 0 0 0 1 0 0 00 0 0 2 9 13 15 17 1819 20 22 23 0 0 0 0 0 0 0 0 0 1 Hot Pages Clock Current accessing: Page 7 Current accessing: Page 7 11 10 8 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold 0 4 0 4 0 24 0 hand-hot 3 3 0 26 0 1 1 0 7 (3) Degrade page 21 to resident cold page Reorganize clock list 21 0
39
2 6 8 9 10 11 13 15 17 18 19 20 22 23 20 hand-test 0 0 0 1 00 0 0 0 0 2 9 13 15 17 1819 20 22 23 0 0 0 0 0 0 0 0 0 1 Hot Pages Clock Current accessing: Page 7 Current accessing: Page 7 11 10 8 6 Resident Cold Pages Non-resident Cold Pages 0 5 5 0 25 0 hand-cold 0 4 0 4 0 24 0 hand-hot 3 3 0 26 0 1 1 (4) insert page 21 to resident cold page and clock list 0 7 0 7 (5) insert page 7 to hot page and clock list 21 0 0
40
Clock-Pro Implementation in Kernels l The Linux kernel for our implementation is 2.4.21. l The VM management is well documented. (a Prentice Hall book in 04, Mel Gorman) l We are able to adjust the memory size available to the system and to the user in our experiment environment. l All pages are placed in a single clock list in CLOCK-PRO implementation with three hands. l SPEC 2000 and memory intensive software tools are used as benchmarks to test the CLOCK-Pro. l Compare the modified kernel with the original.
43
What is the Current Status of Clock-Pro? l Linux community is actively implementing it for its inclusion in the Kernel. l Clock-Pro-Approximation. l In Linux VM: l Mhot == active list l Mcold == inactive list l Mtest == recently evicted pages
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.