cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefania (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-8897) Remove FileCacheService, instead pooling the buffers
Date Thu, 09 Apr 2015 08:26:12 GMT


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
* 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:
>             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

This message was sent by Atlassian JIRA

View raw message