Chetan Mehrotra created OAK-891:
-----------------------------------

             Summary: Use DirectMemory as Level 2/Offheap cache
                 Key: OAK-891
                 URL: https://issues.apache.org/jira/browse/OAK-891
             Project: Jackrabbit Oak
          Issue Type: Improvement
          Components: core
    Affects Versions: 0.8
            Reporter: Chetan Mehrotra


To make optimum use of memory allocated to the various caches created in Oak it 
would be better to use Apache DirectMemory [1] as the level 2 (L2) cache. 
Further using Kryo[2] Serializer would enable saving of serialized objects in 
more compact form

* Storing cache objects in serialized form provides a more compact storage
* Deserializtion cost is low
* Using Off heap memory would be helpful compared to on heap memory
* L2 cache can be added as an optional feature. Oak Core can still be
used in absence of L2 cache

Implementation details 
* [Feature Branch|https://github.com/chetanmeh/jackrabbit-oak/tree/offheap]
* [Diff 
|https://github.com/chetanmeh/jackrabbit-oak/compare/apache:ab955ffd40e23a9f8aee87f9076bc045b643e35d...offheap]
* Test cases to be added

Implementation notes
* Adds DirectMemory and Kryo library as optional dependencies
* Decorates the Guava Cache to move the evicted objects to L2 cache
* Using L2 cache is completely optional
* Kryo library is used to provide fast and compact serialization. 
* Uses custom serializers for various cache instances to provide a more compact 
storage
* Instead of using the key as is (i.e. path in MongoMK) it stores the hash of 
the path to conserve memory

Initial discussion at http://markmail.org/thread/xief4l25m7tnx52c

[1] http://directmemory.apache.org/
[2] https://code.google.com/p/kryo/

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to