[ https://issues.apache.org/jira/browse/CASSANDRA-7438?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14145338#comment-14145338 ]
Robert Stupp edited comment on CASSANDRA-7438 at 9/23/14 8:01 PM: ------------------------------------------------------------------ (note: [~vijay2...@yahoo.com], please use the other nick) Some quick notes: * Can you add the assertion for {{capacity <= 0}} to {{OffheapCacheProvider.create}} - the current error message if {{row_cache_size_in_mb}} is not set (or invalid) "capacity should be set" could be more fleshy * Additionally the {{capacity}} check should also check for negative values (it starts with a negative value - don't know what happens if it is negative...) * {{org.apache.cassandra.db.RowCacheTest#testRowCacheCleanup}} fails at the last assertion - all other unit tests seem to work * Documentation in cassandra.yaml for row_cache_provider could be a bit more verbose - just some abstract about the characteristics and limitation (e.g. Offheap does only work on Linux + OSX) of both implementations * IMO it would be fine to have a general unit test for {{com.lruc.api.LRUCache}} in C* code, too * Please add an adopted copy of {{RowCacheTest}} for OffheapCacheProvider * unit tests using OffheapCacheProvider must not start on Windows builds - please add an assertion in OffHeapCacheProvider to assert that it runs on Linux or OSX Sorry for the late reply was (Author: snazy): (note: [~vijay2...@gmail.com], please use the other nick) Some quick notes: * Can you add the assertion for {{capacity <= 0}} to {{OffheapCacheProvider.create}} - the current error message if {{row_cache_size_in_mb}} is not set (or invalid) "capacity should be set" could be more fleshy * Additionally the {{capacity}} check should also check for negative values (it starts with a negative value - don't know what happens if it is negative...) * {{org.apache.cassandra.db.RowCacheTest#testRowCacheCleanup}} fails at the last assertion - all other unit tests seem to work * Documentation in cassandra.yaml for row_cache_provider could be a bit more verbose - just some abstract about the characteristics and limitation (e.g. Offheap does only work on Linux + OSX) of both implementations * IMO it would be fine to have a general unit test for {{com.lruc.api.LRUCache}} in C* code, too * Please add an adopted copy of {{RowCacheTest}} for OffheapCacheProvider * unit tests using OffheapCacheProvider must not start on Windows builds - please add an assertion in OffHeapCacheProvider to assert that it runs on Linux or OSX Sorry for the late reply > Serializing Row cache alternative (Fully off heap) > -------------------------------------------------- > > Key: CASSANDRA-7438 > URL: https://issues.apache.org/jira/browse/CASSANDRA-7438 > Project: Cassandra > Issue Type: Improvement > Components: Core > Environment: Linux > Reporter: Vijay > Assignee: Vijay > Labels: performance > Fix For: 3.0 > > Attachments: 0001-CASSANDRA-7438.patch > > > Currently SerializingCache is partially off heap, keys are still stored in > JVM heap as BB, > * There is a higher GC costs for a reasonably big cache. > * Some users have used the row cache efficiently in production for better > results, but this requires careful tunning. > * Overhead in Memory for the cache entries are relatively high. > So the proposal for this ticket is to move the LRU cache logic completely off > heap and use JNI to interact with cache. We might want to ensure that the new > implementation match the existing API's (ICache), and the implementation > needs to have safe memory access, low overhead in memory and less memcpy's > (As much as possible). > We might also want to make this cache configurable. -- This message was sent by Atlassian JIRA (v6.3.4#6332)