Blake Eggleston created CASSANDRA-15389:
-------------------------------------------

             Summary: Minimize BTree iterator allocations
                 Key: CASSANDRA-15389
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15389
             Project: Cassandra
          Issue Type: Sub-task
            Reporter: Blake Eggleston
            Assignee: Blake Eggleston


Allocations of BTree iterators contribute a lot amount of garbage to the 
compaction and read paths.

This patch removes most btree iterator allocations on hot paths by:
 • using Row#apply where appropriate on frequently called methods (Row#digest, 
Row#validateData
 • adding BTree accumulate method. Like the apply method, this method walks the 
btree with a function that takes and returns a long argument, this eliminates 
iterator allocations without adding helper object allocations 
(BTreeRow#hasComplex, BTreeRow#hasInvalidDeletions, BTreeRow#dataSize, 
BTreeRow#unsharedHeapSizeExcludingData, Rows#collectStats, 
UnfilteredSerializer#serializedRowBodySize) as well as eliminating the 
allocation of helper objects in places where apply was used previously^[1]^.
 • Create map of columns in SerializationHeader, this lets us avoid allocating 
a btree search iterator for each row we serialize.

These optimizations reduce garbage created during compaction by up to 13.5%

 

[1] the memory test does measure memory allocated by lambdas capturing objects



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to