Object garphs swapping
Upcoming SlideShare
Loading in...5
×
 

Object garphs swapping

on

  • 167 views

Talk presented in ESUG 2010, Barcelona, Spain.

Talk presented in ESUG 2010, Barcelona, Spain.

Statistics

Views

Total Views
167
Views on SlideShare
167
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Object garphs swapping Object garphs swapping Presentation Transcript

  • Object graphs swapping m a r i a n o m a r t i n e z p e c k m 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 context In 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 Collector Only 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 Collector Only 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 Collector Only 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 Collector Only 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 WordArray Shared objects Array Wednesday, September 15, 2010
  • Subgraph traverse A CB D E F G H I J K L A’ B’ C’ Serialized 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’ Serialized 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’ Serialized 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’ Serialized 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’ D Serialized 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’ D Serialized 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’ D offset Serialized 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 Serialized 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 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 Serialized 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 Serialized 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’ F GD J I’ H’ L’ Serialized objects WordArray Shared 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 WordArray Shared 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 P3P2 Binary file Wednesday, September 15, 2010
  • CB D F G J K F GD J Shared objects Array anImageSegment P1 P3P2 Binary 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 P3P2 Binary 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 Peck marianopeck@gmail.com Wednesday, September 15, 2010