Thanks for all the comments...

As suggested we will go with option#1 and additionally add a system
property to support reading values for lru regions.

-Anil.


On Tue, Jan 17, 2017 at 9:07 PM, Nilkanth Patel <nilkanth.hpa...@gmail.com>
wrote:

> Anil, option 1 looks good. Just have a small question.
> Will the option 1 implementation going to replace the existing
> implementation where we recover everything?
> Or will this be a default and still user will be able to use old/existing
> way based on some configuration where recovering everything. This may be
> helpful in cases where large heap available.
>
> Nilkanth.
>
> On Wed, Jan 18, 2017 at 10:04 AM, Michael Stolz <mst...@pivotal.io> wrote:
>
> > Can I assume all options load keys?
> > If so, yes skip loading values.
> >
> > --
> > Mike Stolz
> > Principal Engineer - Gemfire Product Manager
> > Mobile: 631-835-4771
> > On Jan 17, 2017 5:48 PM, "Anilkumar Gingade" <aging...@pivotal.io>
> wrote:
> >
> > > Hi Geode Devs,
> > >
> > > We are working on ticket GEODE-1672, related to out of memory during
> > > recovery with overflow regions (heap LRU configured).
> > >
> > > https://issues.apache.org/jira/browse/GEODE-1672
> > >
> > > When recovering the persistent files, GEODE stores the values into temp
> > > maps (for regions) using a background thread, as these maps are not
> > actual
> > > regions,  these are not considered/included for LRU eviction, which
> > causes
> > > the system to run OOM.
> > >
> > > We are thinking about following approaches to address this issue...Let
> us
> > > know if you have any comments/suggestion about the solutions.
> > >
> > > 1. Skip recovering the regions marked with LRU eviction.
> > > - This keeps the code changes to minimal.
> > > - Accessing the most recently used values first time, will be
> expensive.
> > > But this is true even if the values are recovered, as Geode doesn't
> > > guarantee the recently/most used values will be in memory after
> recovery.
> > > - This may impact the use-cases where regions are set with LRU
> eviction,
> > > even though there is no  memory pressure (system configured to handle
> > > unexpected events)
> > >
> > > 2. Include temp maps (these are AbstractRegionMap) for eviction during
> > > recovery.
> > > - May involve lots of code change. The size estimation code in bucket
> > > regions need to be moved to AbstractRegionMap.
> > > - Need to handle the rate of recovery thread to throttle based on the
> > > eviction rate, which could impact the recovery of regions without
> > eviction.
> > > We can think of overriding the default eviction rate during recovery...
> > > - The regions will be in the similar state (number of entries), when
> > system
> > > is recovered.
> > >
> > > 3. Stop recovery when system hits critical-heap-memory
> > > - This requires setting/recommending critical-heap-percentage. Throwing
> > > LowMemoryException during recovery, if system is low on memory.
> > > - This may impact the first read on the region whose values are not
> > > recovered.
> > >
> > > Thanks,
> > > -Anil.
> > >
> >
>

Reply via email to