[ https://issues.apache.org/jira/browse/CASSANDRA-8897?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14486966#comment-14486966 ]
Stefania commented on CASSANDRA-8897: ------------------------------------- So something like this: \\ \\ * A global shared queue of slabs of some fixed size, say 1 MB. * Any allocation request bigger than *50% of this* I'd say we don't bother, just allocate and deallocate normally. * A {{ThreadLocal}} pool, that uses one or more of these slabs to produce slices * To create the pool we grab one of the global slabs from the queue or create a new slab if required. * When the pool is empty we recycle the slab. The {{ThreadLocal}} pool is because all the slicing off a slab would require synchronization otherwise. Also, I think the goal is to pack as many objects on the same page as possible, ideally having threads use different pages and avoiding thread contention at the same time. Or do you prefer to synchronize on a slab and have multiple threads share the same slab? One final thing I don't understand, even if the slabs are page aligned, this does not guarantee some of the slices won't be across page boundaries, is this what you meant by _valid ranges to slice from_? > Remove FileCacheService, instead pooling the buffers > ---------------------------------------------------- > > Key: CASSANDRA-8897 > URL: https://issues.apache.org/jira/browse/CASSANDRA-8897 > Project: Cassandra > Issue Type: Improvement > Components: Core > Reporter: Benedict > Assignee: Stefania > Fix For: 3.0 > > > After CASSANDRA-8893, a RAR will be a very lightweight object and will not > need caching, so we can eliminate this cache entirely. Instead we should have > a pool of buffers that are page-aligned. -- This message was sent by Atlassian JIRA (v6.3.4#6332)