[
https://issues.apache.org/jira/browse/CASSANDRA-8897?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14507160#comment-14507160
]
Stefania commented on CASSANDRA-8897:
-------------------------------------
bq. The normal free count does not need to be volatile (which would make writes
expensive), because the other thread can piggy-back on its own free count
variable's volatile status to perform a volatile read of the normal count (and
the normal thread does not need to access it with volatile semantics)
This is because of the happens-before semantic of volatile in Java, right?
Just to be clear, to confirm we are thinking of the same counts:
- A normal free count, not volatile, this is increased by the owning thread
each time a buffer is released.
- An atomic free count, this is increased by a non-owning thread via CAS each
time a buffer is released by passing ownership by mistake.
- The combined count: normal free count + atomic free count
When combined count == chunk capacity then we recycle the chunk as long as we
can CAS the atomic free count so that combined count becomes chunk capacity + 1.
The other points you raise make sense, limiting the size to a power of 2 with a
minimum of 64 is a great idea, at the moment the max size is actually 64k
because that is the default buffer size (CASSANDRA-8894 might allow lowering to
32k) but it doesn't matter as the encoding fits anyway.
> 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)