Hi All,

Thanks @Mike. Unfortunately I have situation where-in I need to create
those many number of regions.

I need to understand why in StatisticsMonitor and StatMonitorHandler
List is used to store monitors, listeners and statisticIds  , is there any
particular reason for this.

When I replace the List to com.gemstone.gemfire.internal.concurrent.
ConcurrentHashSet
I see significant improvement in creating large number of region creation.
( from ~7hrs to ~26 minutes)


Thanks
Avinash


On Thu, Nov 17, 2016 at 3:27 AM, Michael Stolz <mst...@pivotal.io> wrote:

> I can't think of any reason why any use case could need 1500 Regions.
>
> Regions are heavyweight constructs more similar in nature to Unix mounts
> than Unix directories.
>
> We usually use simple naming conventions for keys to simulate directory
> structures.
>
> So I would recommend that you create 1 Region, and store 1500 named hash
> maps into it.
>
> Make sense?
>
> --
> Mike Stolz
> Principal Engineer - Gemfire Product Manager
> Mobile: 631-835-4771
> On Nov 16, 2016 11:15 AM, "Avinash Dongre" <adon...@apache.org> wrote:
>
> > Hi,
> >
> > I am seeing strange performance issue when I want to create large number
> of
> > regions.
> > Test I am doing with 1500 Regions.
> >
> > ~ 2 minutes for creating first 1130 regions
> > ~7 minutes for creating remaining 370 regions.
> >
> > Following is example code :
> >
> > Cache geodeCache = this.createCache();
> > final String REGION_NAME = "Region_Name";
> > for ( int i = 0; i < 1500; i++) {
> >   RegionFactory<Object, Object> rf =
> > geodeCache.createRegionFactory(RegionShortcut.PARTITION_
> > PERSISTENT_OVERFLOW);
> >   rf.setDiskSynchronous(true);
> >   rf.setEvictionAttributes(EvictionAttributes.
> createLIFOEntryAttributes(1,
> > EvictionAction.OVERFLOW_TO_DISK));
> >   Region<Object, Object> region = rf.create(REGION_NAME + "_" + i);
> > }
> > geodeCache.close();
> >
> >
> > If I remove following code from createVMRegion ( GemFireCacheImpl.java ),
> > then I could create Regions in 2 minutes.
> >
> > if (!rgn.isInternalRegion()) {
> >   system.handleResourceEvent(ResourceEvent.REGION_CREATE, rgn);
> > }
> >
> > Any help or pointers why this is happening ?
> >
> >
> > Thanks
> >
> > Avinash
> >
>

Reply via email to