Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning...
Transcript of Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning...
![Page 1: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/1.jpg)
Return BarrierIncremental Stack Scanning for
Snapshot Real-time Garbage Collection
Taiichi YuasaKyoto University
![Page 2: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/2.jpg)
Dynamic Data Allocation• Lisp, Prolog, C++, Java, C#, …, even BASIC• allocate an object when required, i.e., dynamically
• objects may become useless– memory space is limited– reclaim unused objects so that they can be
reused for further computation
heap
xNode x, y;x = new Node();y = new Node();x.left := y;
y
![Page 3: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/3.jpg)
Automatic Garbage Collectiongarbage: data objects that can never be accessed• i.e., those that are not reachable from the roots• roots: locations that the program can access directly
e.g., global/local variables, registers, …
heap
roots
![Page 4: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/4.jpg)
Mark & Sweep GC• suspend the application program• mark all objects reachable from the roots• sweep the entire heap and reclaim all unmarked
objects• resume the application program
heap
roots
![Page 5: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/5.jpg)
Mark & Sweep GC• suspend the application program• mark all objects reachable from the roots• sweep the entire heap and reclaim all unmarked
objects• resume the application program
heap
roots
![Page 6: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/6.jpg)
Tri-colour Algorithm• all objects are initially white• for each root,
– make gray the pointed object• while grays remain,
– choose a gray object X– make X black– make gray all white objects
pointed to from X • for each object in the heap
– if white, free it– if black, make it white
x
x
![Page 7: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/7.jpg)
Incremental (Real-time) GC• application program is suspended during GC• each GC typically takes seconds to minutes• not suitable for real-time applications
• one GC chunk (mark/sweep N objects) at a time
• each time a new object is created
application
GC
![Page 8: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/8.jpg)
Problem• application keeps running during GC• reference relations may change during GC• may fail to mark some objects in use
a
a
a
b
b
b
c
c
d
c
a.right := b.right;
b.right := d;
![Page 9: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/9.jpg)
Snapshot Real-time GCby Yuasa 1990
write barrier: make gray the object previously pointed to,when a pointer is replaced by another
for the example:
![Page 10: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/10.jpg)
Snapshot Real-time GCby Yuasa 1990
• all objects in use at the beginning of a GCare guaranteed to become black eventually
• at the beginning of a GC,make gray all objects directly pointed to from roots
• no write barrier necessary for roots– previous object eventually becomes black
• efficient => used in many systemsx
x := x.right;x
![Page 11: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/11.jpg)
Root Scanning• make gray all objects directly pointed to from roots• local variables are stored in the stack• stack size changes dynamically
stack
top
global vars & registers
bottom
![Page 12: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/12.jpg)
Stack Size & Suspension Time
would like to reduce suspension time < 100 μsec
![Page 13: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/13.jpg)
Why 100μsec Suspension?
UNIX USER 2002/6
We chose realtimeLinux because it allows control in 100μs.
... However, this model is controled in 1 ms, because of the constraint of USBcommunication protocol.
![Page 14: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/14.jpg)
Incremental Stack Scanning• scan the stack little by little
stack
top
bottom
directionof scan
![Page 15: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/15.jpg)
Problem
a
b
stack
run
b
a
stack
![Page 16: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/16.jpg)
Function Frames
current frame
Only variables in the current frame can be accessed.
call
return
call
return
F F
G
H
G
F
![Page 17: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/17.jpg)
Scanning vs Return
stack
return
Good Bad
stack
![Page 18: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/18.jpg)
Scanning vs Return
stack
Good Bad
stack
return
![Page 19: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/19.jpg)
Return Barrier
stack
scan
stack stack
return
![Page 20: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/20.jpg)
It’s free (for C-like frames)
scan frames and jump to
return addrargs
return addrold baseold toplocals locals
args
old baseold top
barrier code
ordinary frame frame with barrier
![Page 21: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/21.jpg)
It’s free (case Java)
return addr
barrier inst
locals/args
op stack
info/args
op stack
return addr
locals/args
info/statusscan frames and jump to
ordinary frame frame with barrier
thread struct
![Page 22: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/22.jpg)
Remark (local functions)Bad Good
(define (F x)(define (G y z)
… (G z x)… )(G x x)
)
stack
G
F
stack
F
G
static link
![Page 23: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/23.jpg)
Remark (catch & throw)
stack
throw away
F
(define (F x)(catch ’A (G))
)
F
stack
H
(define (H)(throw ’A …)
)throw
not a true snapshot!
better performance
![Page 24: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/24.jpg)
Implementation for KCL(Kyoto Common Lisp)
• stacks– value stack– bind stack– frame stack– invocation history stack– C language stack (KCL does not access this)
• system variables– only 18 variables
return addresses are pushed on the C stack⇒cannot handle return addresses⇒needs explicit barrier checking on function returns
![Page 25: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/25.jpg)
Suspension Times
0
10
20
30
40
50
60
10 40 70 100 130 160 190 220K0
time
[use
c]
boyer maxfib maxboyer avefib ave
(# of stack words to scan at a time)
![Page 26: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/26.jpg)
Suspension Times byReturn Barrier
05
1015202530354045
K0 20 40 60 80 100 120 140 160 180 200K0
max
susp
ensio
n tim
e[u
sec]
0
5
10
15
20
25
30
35
num
ber o
f sus
pens
ions
(in 2
70 G
Cs)
![Page 27: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/27.jpg)
Implementation for JeRTy• Java runtime system of Omron Inc.,• for process control• snapshot real-time GC
– with write barrier for roots• we implemented return barrier and removed write
barrier for roots
![Page 28: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/28.jpg)
Benchmark Results
75
80
85
90
95
100
aloa new&dup fib hsort msort
original return barrier
![Page 29: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/29.jpg)
Implementation for EusLisp• multi-threaded Lisp system of
Tokyo Univ.• to control robots (humanoids)• badly needs a real-time GC• they implemented snapshot
GC ...• but stack scanning is done at
once• we have implemented return
barrier for the system• They are rewriting C code into
Lisp!
![Page 30: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University](https://reader031.fdocuments.in/reader031/viewer/2022021801/5b2b4e8f7f8b9a34518b6e5b/html5/thumbnails/30.jpg)
Parallel GC• The mutator accesses
above the return barrier.• The collector accesses
below the return barrier.• No lock is necessary to
access the stack. • The return barrier need to
be locked when moved.
stack
collector
mutator