• New Feature
  • Status: Resolved
  • 2 Major
  • Resolution: Won't Fix
  • serverteam
  • Reporter: ssubbiah
  • August 27, 2010
  • 0
  • Watchers: 1
  • October 19, 2012
  • October 19, 2012

Description

After making the server Object Manager more concurrent, the current contention point remain in the Eviction Policy on markAccessed, add, getRemovalCandidates and remove.

This is true for both the server and the client as well (to a smaller extent as it uses clock eviction by default which performs better)

Implement a more concurrent eviction policy that doesnt lock on these methods.

Comments

Saravanan Subbiah 2010-08-27

Look into the possibility of using some opensource implementations like this one.

http://code.google.com/p/concurrentlinkedhashmap/

Fiona OShea 2010-08-27

What target do we want for this? Fremantle?

Saravanan Subbiah 2010-08-27

Assigning to Freemantle

Saravanan Subbiah 2010-10-21

Some contention thread stack in the server.

“WorkerThread(managed_object_fault_stage, 3, 0)” Id=269 BLOCKED on [email protected] owned by “WorkerThread(managed_object_request_stage, 3, 3)” Id=228 at com.tc.object.cache.LFUEvictionPolicy.markReferenced(LFUEvictionPolicy.java:96) at com.tc.objectserver.impl.ObjectManagerImpl.getOrLookupReference(ObjectManagerImpl.java:328) at com.tc.objectserver.impl.ObjectManagerImpl.basicInternalLookupObjectsFor(ObjectManagerImpl.java:517) at com.tc.objectserver.impl.ObjectManagerImpl.basicLookupObjectsFor(ObjectManagerImpl.java:489) at com.tc.objectserver.impl.ObjectManagerImpl.processPendingLookups(ObjectManagerImpl.java:924) at com.tc.objectserver.impl.ObjectManagerImpl.postRelease(ObjectManagerImpl.java:753) at com.tc.objectserver.impl.ObjectManagerImpl.addFaultedObject(ObjectManagerImpl.java:364) at com.tc.objectserver.handler.ManagedObjectFaultHandler.handleEvent(ManagedObjectFaultHandler.java:57) at com.tc.async.impl.StageImpl$WorkerThread.run(StageImpl.java:127)

“WorkerThread(managed_object_fault_stage, 3, 0)” Id=269 BLOCKED on [email protected] owned by “WorkerThread(managed_object_request_stage, 3, 3)” Id=228 at com.tc.object.cache.LFUEvictionPolicy.markReferenced(LFUEvictionPolicy.java:96) at com.tc.objectserver.impl.ObjectManagerImpl.getOrLookupReference(ObjectManagerImpl.java:328) at com.tc.objectserver.impl.ObjectManagerImpl.basicInternalLookupObjectsFor(ObjectManagerImpl.java:517) at com.tc.objectserver.impl.ObjectManagerImpl.basicLookupObjectsFor(ObjectManagerImpl.java:489) at com.tc.objectserver.impl.ObjectManagerImpl.processPendingLookups(ObjectManagerImpl.java:924) at com.tc.objectserver.impl.ObjectManagerImpl.postRelease(ObjectManagerImpl.java:753) at com.tc.objectserver.impl.ObjectManagerImpl.addFaultedObject(ObjectManagerImpl.java:364) at com.tc.objectserver.handler.ManagedObjectFaultHandler.handleEvent(ManagedObjectFaultHandler.java:57) at com.tc.async.impl.StageImpl$WorkerThread.run(StageImpl.java:127)

Saravanan Subbiah 2012-10-19

New server removes these classes.