30
Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University

Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University

Embed Size (px)

Citation preview

Page 1: Taiichi Yuasa Kyoto Universityyuasa/ilc2002/slide.pdf · Return Barrier Incremental Stack Scanning for Snapshot Real-time Garbage Collection Taiichi Yuasa Kyoto University

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Function Frames

current frame

Only variables in the current frame can be accessed.

call

return

call

return

F 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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