• Task
  • Status: Closed
  • 0 Showstopper
  • Resolution: Won't Fix
  • cdennis
  • Reporter: teck
  • March 10, 2010
  • 0
  • Watchers: 1
  • July 27, 2012
  • February 16, 2011

Description

As it stands now we have effectively have two levels of striping in CDM. The first is our own striping (by default 128 way). The second is down in the local CHM that is the store for each of the higher level stripes.

Does the second level of striping do much for us? In the face of creating many CDMs is it take too much local heap?

I ran into this since express quartz can potentially create 1000s of CDMs depending on the use case. I’ve since changed the code to only configure 1 top level stripe in response to the heap usage.

I guess this issue is to find out if we get much from the second level of stripe. If not then we should maybe cut it down (it is likely 16 way striping down there at the CHM)

Comments

Saravanan Subbiah 2010-03-10

I think was an accidental consequence of moving from NBHM to CHM.

I would remove the second level stripe (in CHM) rather than the top level stripe in CDM since 1 Big CDM is not a good thing for the server and doesn’t work well in Active/Active config or even in single active case as we cant flush and fault part of a CDM.

So to recap, Man striped CDM with 1 segement CHM store = good. 1 big CDM = bad.

Chris Dennis 2010-03-22

Talked to Tim about this on IM and we both seemed to agree that there are really two issues going on here:

  1. There is ample motivation for providing two additional map classes. A HashMap equivalent that does no clustered locking (and I guess possibly no local locking, although that is a hairier question). A Hashtable equivalent to use as a thread-safe cluster locked data structure when perf is no issue (but local/clustered heap use might be).

Tim has basically used the internal classes of CDM to get both of these for Quartz, and we would just need to sanitize this stuff and doc it.

  1. Existing uses of CDM may be excessively striped in a local sense. I.e. we effectively have 16*128 local stripes. Reducing this would of course require us to do some perf testing to make sure nothing suffers.

Chris Dennis 2010-06-17

Punting this to what is I assume the next dev target after Esperance. We should make the changes to move to a single stripe in the local maps asap after Esperance is out the door. Then we will have a good long time to assess any performance impact it might have. Changing it now would just be asking for it to cause a massive perf regression…

Chris Dennis 2010-12-13

Making this P0 as it is in my iteration plan for Beta 2

Chris Dennis 2010-12-16

After talking with Tim we have decided to punt this to Ulloa, and that I will change the map in ConcurrentDistributedMapDso to be a HashMap, instead of a CHM (i.e. 1 stripe), and then we can see if QA catch any perf degradations.

I will make this change immediately after the Fremantle release btw, hence I have kept this as a P0.

Chris Dennis 2011-02-11

This is a sub-task of DEV-5391, but cannot be made one since it is in a separate project.

Chris Dennis 2011-02-16

CDM is going to be deprecated so this will not be fixed.