Object swapping issues and the imagesegment implementation

Post on 11-Jun-2015

420 views 0 download

Tags:

description

Presentation of the research paper entitled "Experiments with a Fast Object Swapper" in Smalltalks 2010, Concepción del Uruguay, Argentina.

Transcript of Object swapping issues and the imagesegment implementation

Object Swapping Issues and the ImageSegment

implementation

RMod

1

I n g . 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

Saturday, November 13, 2010

The context

2

Saturday, November 13, 2010

The context

2

Saturday, November 13, 2010

The context

2

Saturday, November 13, 2010

The context

2

Saturday, November 13, 2010

The context

2

Saturday, November 13, 2010

Problem

Use more memory than needed.

Make OOP languages unsuitable for memory limited devices.

Existence of unused but referenced objects.

3

Saturday, November 13, 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

Saturday, November 13, 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

Saturday, November 13, 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

Saturday, November 13, 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

Saturday, November 13, 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

Saturday, November 13, 2010

6

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

A B C

D E F G H

Y

K

X

I LJ

Z

Saturday, November 13, 2010

Idea

Swap out (not remove) unused objects to disk.

Automatically load them back when needed.

7

Saturday, November 13, 2010

There are related works...but no one solves all the problems

8

Saturday, November 13, 2010

Main challenges

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

Low overhead penalty.

Group objects in an smart way.

9

Saturday, November 13, 2010

Key aspects

Mark and trace unused/used objects at runtime.

The usage of proxies.

Group unused objects (subgraphs).

10

Saturday, November 13, 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.

11

Saturday, November 13, 2010

Why subgraphs?

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

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

12

Saturday, November 13, 2010

Experiments done

Modify Smalltalk VM to mark and trace objects usage.

Visualize objects and memory usage.

Take statistics from different scenarios.

13

Saturday, November 13, 2010

deployed web application example

14

Saturday, November 13, 2010

deployed web application example

4%

96%

Amount of objects

Used Unused

14

Saturday, November 13, 2010

deployed web application example

4%

96%

Amount of objects

Used Unused

15%

85%

Amount of memory

Used Unused

14

Saturday, November 13, 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.

15

Saturday, November 13, 2010

Subgraphs

16

A (Root)

B (Root)

C (Root)

D E F G H

Y

K

X

I LJ

Subgraph to process

Z

Roots Inner Shared External

Saturday, November 13, 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.

Special objects.17

A (Root)

B (Root)

C (Root)

D E F G H

Y

K

X

I LJ

Subgraph to process

Z

Roots Inner Shared External

Saturday, November 13, 2010

ImageSegment

Saturday, November 13, 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.

Saturday, November 13, 2010

The goal

Input -- Output

A CB

D E F G H

I J K L

Saturday, November 13, 2010

The goal

Input -- OutputD F G

J K

P1 P3P2

Saturday, November 13, 2010

The goal

Input -- OutputD F G

J K

P1 P3P2

aMessage

Saturday, November 13, 2010

The goal

Input -- Output

A CB

D E F G H

I J K L

Saturday, November 13, 2010

Simple example

Saturday, November 13, 2010

Subgraph traverse

Saturday, November 13, 2010

Subgraph traverse

A CB

D E F G H

I J K L

Serialized objects WordArrayShared objects Array

anImageSegment

Saturday, November 13, 2010

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’

Serialized objects WordArrayShared objects Array

anImageSegment

Saturday, November 13, 2010

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’

Serialized objects WordArrayShared objects Array

anImageSegment

Saturday, November 13, 2010

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’

Serialized objects WordArrayShared objects Array

anImageSegment

Saturday, November 13, 2010

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’

Serialized objects WordArrayShared objects Array

anImageSegment

Saturday, November 13, 2010

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’D

Serialized objects WordArrayShared objects Array

anImageSegment

Saturday, November 13, 2010

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’D

Serialized objects WordArrayShared objects Array

anImageSegment

Saturday, November 13, 2010

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’D

offsetSerialized objects WordArray

Shared objects Array

anImageSegment

Saturday, November 13, 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

anImageSegment

Saturday, November 13, 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

anImageSegment

Saturday, November 13, 2010

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’ E’D

Serialized objects WordArrayShared objects Array

anImageSegment

Saturday, November 13, 2010

Subgraph traverse

A CB

D E F G H

I J K L

A’ B’ C’ E’D

Serialized objects WordArrayShared objects Array

anImageSegment

Saturday, November 13, 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

anImageSegment

Saturday, November 13, 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

Saturday, November 13, 2010

Roots replace

Saturday, November 13, 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

Saturday, November 13, 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

Saturday, November 13, 2010

D F G

J K

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

Serialized objects WordArray Shared objects Array

anImageSegment

P1 P3P2

Saturday, November 13, 2010

Write to file

Saturday, November 13, 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

Saturday, November 13, 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

Saturday, November 13, 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.

Saturday, November 13, 2010

Thanks!

Mariano Martinez Peckmarianopeck@gmail.com

RMod

Saturday, November 13, 2010