object graph swapping

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

Upload: esug

Post on 08-Jul-2015

766 views

Category:

Technology


2 download

DESCRIPTION

Object Graph Swapping, Mariano Martinez Peck, ESUG 2010, Barcelona, Spain.

TRANSCRIPT

Page 1: Object Graph 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 Graph Swapping

The context

2

Wednesday, September 15, 2010

Page 3: Object Graph Swapping

The context

2

Wednesday, September 15, 2010

Page 4: Object Graph Swapping

The context

2

Wednesday, September 15, 2010

Page 5: Object Graph Swapping

The context

2

Wednesday, September 15, 2010

Page 6: Object Graph Swapping

The context

2

Wednesday, September 15, 2010

Page 7: Object Graph Swapping

The context

2

Wednesday, September 15, 2010

Page 8: Object Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph Swapping

Idea

Swap out (not remove) unused objects to disk.

Automatically load them back when needed.

7

Wednesday, September 15, 2010

Page 16: Object Graph Swapping

Related work

Large object oriented memory (LOOM).

Melt - Supporting memory leaks.

ImageSegments.

8

Wednesday, September 15, 2010

Page 17: Object Graph Swapping

But...no one solves all the problems

9

Wednesday, September 15, 2010

Page 18: Object Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph Swapping

ImageSegment

Wednesday, September 15, 2010

Page 28: Object Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph 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 Graph Swapping

Thanks!

Mariano Martinez [email protected]

Wednesday, September 15, 2010