[Vm-dev] Lazy become for Copy On Write

btc at openinworld.com btc at openinworld.com
Thu May 1 18:29:34 UTC 2014

hi Eliot,

On you blog post [1] I wrote "Just had a random neuron fire so 
wondering… Would your lazy #become: benefit a copy-on-write system, 
where one VM could run multiple images sharing objects. Use case might 
be a cloud provider where many clients might base off the same Squeak 
4.5 or Pharo 3.0 image. I am thinking that when writing to an object, 
the original could be copied twice and replaced with a 
conditional-forwarder such that which copy is forwarded to depends on 
the image accessing the conditional-forwarder."

I've no practical experience with this and didn't have anything 
formulated to expound on at the time. It was just an intuitive hunch 
that has however kept lurking at the back of my mind while I was 
distracted with other things. Today I made a sketch of the idea (drawn 
with Inkscape) which I have attached.

There is one BASE IMAGE and two client images IMAGE 1 and IMAGE 2. 
Objects a1, b1, a2, b2 all have a reference to object zB in the base image.

When object a2 in IMAGE 2 writes to zB in the base image (1.) z2 is 
copied from zB so it can be updated (2.). The indirect table, which was 
empty, has entry-1 created pointing at z2 (3.), and zB is set to lazy 
become to entry-1 (3.). Now when object a2 or b2 access zB (4.), the 
lazy become is followed to through the indirect table and on to z2 (5.), 
to which a2 is then updated to point (6.).

When object a1 in IMAGE 1 references zB (7.), the lazy become points to 
the indirect-table, but where for IMAGE 1 there are no entries, so one 
is created pointing back to zB since that still valid for IMAGE 1. 
Whether zB might be copied into IMAGE 1 as z1 would be an optimisation 
tradeoff of space versus levels-of-indirection.

cheers -ben

-------------- next part --------------
A non-text attachment was scrubbed...
Name: VM-LazyBecomeForCopyOnWrite.pdf
Type: application/pdf
Size: 32846 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20140502/46654b43/VM-LazyBecomeForCopyOnWrite-0001.pdf
-------------- next part --------------
A non-text attachment was scrubbed...
Name: VM-LazyBecomeForCopyOnWrite.svg
Type: image/svg+xml
Size: 36306 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20140502/46654b43/VM-LazyBecomeForCopyOnWrite-0001.svg

More information about the Vm-dev mailing list