Object garphs swapping

51
Object graphs swapping mariano martinez peck [email protected] RMod 1 Wednesday, September 15, 2010

description

Talk presented in ESUG 2010, Barcelona, Spain.

Transcript of Object garphs swapping

Page 1: Object garphs swapping

Object graphs swapping

m a r i a n o m a r t i n e z p e c km a r i a n o p e c k @ g m a i l . c o m

RMod

1

Wednesday, September 15, 2010

Page 2: Object garphs swapping

The context

2

Wednesday, September 15, 2010

Page 3: Object garphs swapping

The context

2

Wednesday, September 15, 2010

Page 4: Object garphs swapping

The context

2

Wednesday, September 15, 2010

Page 5: Object garphs swapping

The context

2

Wednesday, September 15, 2010

Page 6: Object garphs swapping

The context

2

Wednesday, September 15, 2010

Page 7: Object garphs swapping

The context

2

Wednesday, September 15, 2010

Page 8: Object garphs swapping

Problem

Use more memory than needed.

Make OOP languages unsuitable for memory limited devices.

Existence of unused but referenced objects.

3

Wednesday, September 15, 2010

Page 9: Object garphs swapping

The contextIn OOP primary memory is represented by an object graph

A B C

D E F G H

Y

K

X

I LJ

Z

4

Wednesday, September 15, 2010

Page 10: Object garphs swapping

Garbage CollectorOnly collects objects that nobody else points to.

A B C

D E F G H

Y

K

X

I LJ

Z

5

Wednesday, September 15, 2010

Page 11: Object garphs swapping

Garbage CollectorOnly collects objects that nobody else points to.

A B C

D E F G H

Y

K

X

I LJ

Z

5

Wednesday, September 15, 2010

Page 12: Object garphs swapping

Garbage CollectorOnly collects objects that nobody else points to.

A B C

D E F G H

Y

K

X

I LJ

Z

5

Wednesday, September 15, 2010

Page 13: Object garphs swapping

Garbage CollectorOnly collects objects that nobody else points to.

A B C

D E F G H

Y

K

X

I LJ

Z

5

Wednesday, September 15, 2010

Page 14: Object garphs swapping

6

But...what happens with referenced yet unused objects?

A B C

D E F G H

Y

K

X

I LJ

Z

Wednesday, September 15, 2010

Page 15: Object garphs swapping

Idea

Swap out (not remove) unused objects to disk.

Automatically load them back when needed.

7

Wednesday, September 15, 2010

Page 16: Object garphs swapping

Related work

Large object oriented memory (LOOM).

Melt - Supporting memory leaks.

ImageSegments.

8

Wednesday, September 15, 2010

Page 17: Object garphs swapping

But...no one solves all the problems

9

Wednesday, September 15, 2010

Page 18: Object garphs swapping

Main challenges

Not to use more memory than the one released by swapping.

Low overhead penalty.

Group objects in an smart way.

10

Wednesday, September 15, 2010

Page 19: Object garphs swapping

Key aspects

Mark and trace unused/used objects at runtime.

The usage of proxies.

Group unused objects (subgraphs).

11

Wednesday, September 15, 2010

Page 20: Object garphs swapping

Why we need to group objects?

Because if we replace each object by a proxy, we release little memory.

We want to replace a whole group by one or a few proxies.

12

Wednesday, September 15, 2010

Page 21: Object garphs swapping

Why subgraphs?

Group of objects that are used (or not used) together.

We need few proxies (for the roots) for several objects.

13

Wednesday, September 15, 2010

Page 22: Object garphs swapping

Experiments done

Modify Smalltalk VM to mark and trace objects usage.

Visualize objects and memory usage.

Take statistics from different scenarios.

14

Wednesday, September 15, 2010

Page 23: Object garphs swapping

deployed web application example

4%

96%

Amount of objects

Used Unused

15%

85%

Amount of memory

Used Unused

15

Wednesday, September 15, 2010

Page 24: Object garphs swapping

Swapping steps and challenges

1.Identify sets of objects and serialize them. Problems: cycles, speed, etc.

2.Write the serialized objects into a file. Problems: file format, encoding, speed, etc.

3. Load the objects from a file. Problems: class reshape, avoid duplicates, speed, etc.

16

Wednesday, September 15, 2010

Page 25: Object garphs swapping

Subgraphs

A (Root)

B (Root)

C (Root)

D E F G H

Y

K

X

I LJ

Subgraph to process

Z

Roots Inner Shared External

17

Wednesday, September 15, 2010

Page 26: Object garphs swapping

More problems

Should shared objects be included or not?

GC moves objects.

Pointers update.

Class changes.

Recreate and reinitialize objects.

Code executed after loading.

A (Root)

B (Root)

C (Root)

D E F G H

Y

K

X

I LJ

Subgraph to process

Z

Roots Inner Shared External

18

Wednesday, September 15, 2010

Page 27: Object garphs swapping

ImageSegment

Wednesday, September 15, 2010

Page 28: Object garphs swapping

ImageSegment basis Only write/swap roots and inner objects.

Shared objects are NOT swapped.

Keep an array in memory for the shared objects.

Update object pointers to point to a relative address inside the arrays (offset).

Roots are replaced by proxies.

Uses GC facilities to detect shared objects.

Wednesday, September 15, 2010

Page 29: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

Page 30: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

Page 31: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

Page 32: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

Page 33: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

Page 34: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’D

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

Page 35: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’D

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

Page 36: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’D

offsetSerialized objects WordArray

Shared objects Array

Wednesday, September 15, 2010

Page 37: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’ E’D

offsetSerialized objects WordArray

Shared objects Array

Wednesday, September 15, 2010

Page 38: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’ E’D

offset

offset

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

Page 39: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’ E’D

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

Page 40: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’ E’D

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

Page 41: Object garphs swapping

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’ E’F GD J

I’ H’ L’

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

Page 42: Object garphs swapping

A CB

D E F G H

I J K L

A’ B’ C’ E’F GD J

I’ H’ L’

Serialized objects WordArrayShared objects Array

Offset Memory address

Wednesday, September 15, 2010

Page 43: Object garphs swapping

A CB

D E F G H

I J K L

A’ B’ C’ E’ F GD JI’ H’ L’

Serialized objects WordArray Shared objects Array

anImageSegment

Wednesday, September 15, 2010

Page 44: Object garphs swapping

D E F G H

I J K L

A’ B’ C’ E’ F GD JI’ H’ L’

Serialized objects WordArray Shared objects Array

anImageSegment

P1 P3P2

Wednesday, September 15, 2010

Page 45: Object garphs swapping

D E F G H

I J K L

A’ B’ C’ E’ F GD JI’ H’ L’

Serialized objects WordArray Shared objects Array

anImageSegment

P1 P3P2

Wednesday, September 15, 2010

Page 46: Object garphs swapping

D F G

J K

A’ B’ C’ E’ F GD JI’ H’ L’

Serialized objects WordArray Shared objects Array

anImageSegment

P1 P3P2

Wednesday, September 15, 2010

Page 47: Object garphs swapping

CB

D F G

J K

A’ B’ C’ E’ I’ H’ L’

Serialized objects WordArray

F GD J

Shared objects Array

anImageSegment

P1 P3P2Binary file

Wednesday, September 15, 2010

Page 48: Object garphs swapping

CB

D F G

J K

F GD J

Shared objects Array

anImageSegment

P1 P3P2Binary file

A’ B’ C’ E’ I’ H’ L’

Wednesday, September 15, 2010

Page 49: Object garphs swapping

CB

D F G

J K

F GD J

Shared objects Array

anImageSegment

P1 P3P2Binary file

A’ B’ C’ E’ I’ H’ L’

NIL

Wednesday, September 15, 2010

Page 50: Object garphs swapping

ImageSegment conclusions

Good speed.

Graph traverse is done in VM side.

Good use of GC facilities.

You have to be aware of shared objects.

Bad granularity level.

Implicit needed information in object graphs.

Wednesday, September 15, 2010

Page 51: Object garphs swapping

Thanks!

Mariano Martinez [email protected]

Wednesday, September 15, 2010