CDV ❯ Implement a more concurrent EvictionPolicy for use in the server and the client.
-
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
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 com.tc.object.cache.LFUEvictionPolicy@71dbf3d6 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 com.tc.object.cache.LFUEvictionPolicy@71dbf3d6 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.
Look into the possibility of using some opensource implementations like this one.
http://code.google.com/p/concurrentlinkedhashmap/