Benedict created CASSANDRA-15229:

             Summary: BufferPool Regression
                 Key: CASSANDRA-15229
             Project: Cassandra
          Issue Type: Bug
            Reporter: Benedict

The BufferPool was never intended to be used for a {{ChunkCache}}, and we need 
to either change our behaviour to handle uncorrelated lifetimes or use 
something else.  This is particularly important with the default chunk size for 
compressed sstables being reduced.  If we address the problem, we should also 
utilise the BufferPool for native transport connections like we do for 
internode messaging, and reduce the number of pooling solutions we employ.
Probably the best thing to do is to improve BufferPool’s behaviour when used 
for things with uncorrelated lifetimes, which essentially boils down to 
tracking those chunks that have not been freed and re-circulating them when we 
run out of completely free blocks.  We should probably also permit 
instantiating separate {{BufferPool}}, so that we can insulate internode 
messaging from the {{ChunkCache}}, or at least have separate memory bounds for 
each, and only share fully-freed chunks.
With these improvements we can also safely increase the {{BufferPool}} chunk 
size to 128KiB or 256KiB, to guarantee we can fit compressed pages and reduce 
the amount of global coordination and per-allocation overhead.  We don’t need 
1KiB granularity for allocations, nor 16 byte granularity for tiny allocations.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

Reply via email to