Object garphs swapping

Post on 11-Jun-2015

117 views 1 download

Tags:

description

Talk presented in ESUG 2010, Barcelona, Spain.

Transcript of 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

The context

2

Wednesday, September 15, 2010

The context

2

Wednesday, September 15, 2010

The context

2

Wednesday, September 15, 2010

The context

2

Wednesday, September 15, 2010

The context

2

Wednesday, September 15, 2010

The context

2

Wednesday, September 15, 2010

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

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

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

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

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

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

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

Idea

Swap out (not remove) unused objects to disk.

Automatically load them back when needed.

7

Wednesday, September 15, 2010

Related work

Large object oriented memory (LOOM).

Melt - Supporting memory leaks.

ImageSegments.

8

Wednesday, September 15, 2010

But...no one solves all the problems

9

Wednesday, September 15, 2010

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

Key aspects

Mark and trace unused/used objects at runtime.

The usage of proxies.

Group unused objects (subgraphs).

11

Wednesday, September 15, 2010

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

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

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

deployed web application example

4%

96%

Amount of objects

Used Unused

15%

85%

Amount of memory

Used Unused

15

Wednesday, September 15, 2010

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

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

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

ImageSegment

Wednesday, September 15, 2010

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

Subgraph traverse

A CB

D E F G H

I J K L

Serialized objects WordArrayShared objects Array

Wednesday, September 15, 2010

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Thanks!

Mariano Martinez Peckmarianopeck@gmail.com

Wednesday, September 15, 2010