You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geode.apache.org by Tinus Tate <ti...@gmail.com> on 2021/03/11 13:28:32 UTC

Shared memory segment?

Good afternoon,

Around 2005-2010 i used terracotta dso to write a distributed application.
It made things quite easy by using managed objects that were shared between
servers.

Quite recently i was asked a question if something similar is still around.
I googled and found an old theserverside.com article:
https://www.theserverside.com/discussions/thread/34294.html

In one of the comments "Jags Ramnarayan" comments:
=====
This is actually quite similar to one of the options provided by GemFire.
GemFire provides a mechanism to extend in some sense the memory model of
the JVM to spill over to a shared memory segment. Basically any number of
JVMs and/or 'C' processes can attach to a shared memory segment and share
objects. Transparency is provided to the application developer through
byte-code enhancement of the domain classes chosen for sharing (If
byte-code enhancement is not preferred then objects are copied to shared
memory). Applications simply instantiate these enhanced domain classes and
modify fields. The updates are instantenously visible to all connected
processes. So, the object creation in shared memory occurs before invoking
the constructor and all field accesses are diverted to the shared object.
Memory management in shared memory is somewhat similar to VM with object
tables, compaction and a variety of GC algorithms except for a few key
differences: Object reference management (and lifetime management) has to
be global across all connected processes and a provision for spilling over
to disk if available memory falls below a set threshold.
=====

I'm currently diving into geode but have not yet stumbled across this
functionality. I admit the info is 15 year old, but i was just wondering,
is this still around or has it maybe moved to the enterprise products at
pivotal?

Kind regards,
Tinus

Re: Shared memory segment?

Posted by Bruce Schuchardt <br...@vmware.com>.
Hi Tinus,

The shared-memory functionality was removed many years ago.  It implemented an object memory in shared-memory and used what we called “copy sharing” to move objects between the heap and shared-memory.  A separate process managed garbage collection and other chores.

Geode currently has off-heap storage support for the cache.  Have you looked into that feature?
https://geode.apache.org/docs/guide/19/managing/heap_use/off_heap_management.html

From: Tinus Tate <ti...@gmail.com>
Reply-To: "user@geode.apache.org" <us...@geode.apache.org>
Date: Thursday, March 11, 2021 at 5:28 AM
To: "user@geode.apache.org" <us...@geode.apache.org>
Subject: Shared memory segment?

Good afternoon,

Around 2005-2010 i used terracotta dso to write a distributed application. It made things quite easy by using managed objects that were shared between servers.

Quite recently i was asked a question if something similar is still around. I googled and found an old theserverside.com<https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Ftheserverside.com%2F&data=04%7C01%7Cbruces%40vmware.com%7C02766ff6be3d402f7d5a08d8e4919ca9%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C1%7C0%7C637510661346992174%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=l48CNOveku88uLZBxn%2ByrpAV2u9y9cDlbLpU4f4%2FZwo%3D&reserved=0> article:
https://www.theserverside.com/discussions/thread/34294.html<https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.theserverside.com%2Fdiscussions%2Fthread%2F34294.html&data=04%7C01%7Cbruces%40vmware.com%7C02766ff6be3d402f7d5a08d8e4919ca9%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C1%7C0%7C637510661347002162%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=NjD6IW9R4B7AO2eRrjat%2BvBDwqAPMLZUZ2r7jf1c%2BZM%3D&reserved=0>

In one of the comments "Jags Ramnarayan" comments:
=====
This is actually quite similar to one of the options provided by GemFire. GemFire provides a mechanism to extend in some sense the memory model of the JVM to spill over to a shared memory segment. Basically any number of JVMs and/or 'C' processes can attach to a shared memory segment and share objects. Transparency is provided to the application developer through byte-code enhancement of the domain classes chosen for sharing (If byte-code enhancement is not preferred then objects are copied to shared memory). Applications simply instantiate these enhanced domain classes and modify fields. The updates are instantenously visible to all connected processes. So, the object creation in shared memory occurs before invoking the constructor and all field accesses are diverted to the shared object. Memory management in shared memory is somewhat similar to VM with object tables, compaction and a variety of GC algorithms except for a few key differences: Object reference management (and lifetime management) has to be global across all connected processes and a provision for spilling over to disk if available memory falls below a set threshold.
=====

I'm currently diving into geode but have not yet stumbled across this functionality. I admit the info is 15 year old, but i was just wondering, is this still around or has it maybe moved to the enterprise products at pivotal?

Kind regards,
Tinus