[ 
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)

Reply via email to