[ 
https://issues.apache.org/jira/browse/CASSANDRA-15511?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Benedict Elliott Smith updated CASSANDRA-15511:
-----------------------------------------------
    Description: 
This patch utilises CASSANDRA-15510 to improve throughput and reduce garbage 
produced by a number of common operations, by employing {{transformAndFilter}}, 
{{transform}} and {{FastBuilder}}

* {{Row}}, {{Cell}} and {{ComplexColumnData}} cloning are implemented with 
{{BTree.transform}}, so no special builders are necessary; 
** {{Rows.copy}} removed
* {{Rows.merge}} implemented using {{BTree.update}} and a {{ColumnData}} 
reconciler
** Zero-allocations if result of merge is same as {{existing}}
** Fewer comparisons
* {{ColumnData}} reconciler implemented in same manner
** {{Cells.reconcileComplex}} is retired
** {{ComplexColumnData}} reconciliation now
*** Garbage-free if the merge has no effect
*** Always fewer allocations
*** Fewer comparisons
* {{FastBuilder}} employed widely:
** {{ClusteringIndexNamesFilter}} deserialization
** {{Columns}} deserialization
** {{PartitionUpdate}} deserialization
** {{AbstractBTreePartition}} construction
** Misc others

The upshot of this work when combined with the proposed patch for 
CASSANDRA-15367 has a dramatic impact on operations over collection types - 
under contention, as much as 100x improved throughput, and hundreds of 
megabytes of reduced allocations.  For all operations, allocations under 
contention and no contention are significantly reduced and throughput improved.

  was:
This patch utilises CASSANDRA-15510 to improve throughput and reduce garbage 
produced by a number of common operations, by employing {{transformAndFilter}}, 
{{transform}} and {{FastBuilder}}

* {{Row}}, {{Cell}} and {{ComplexColumnData}} cloning are implemented with 
{{BTree.transform}}, so no special builders are necessary; 
** {{Rows.copy}} removed
* {{Rows.merge}} implemented using {{BTree.update}} and a {{ColumnData}} 
reconciler
** Zero-allocations if result of merge is same as {{existing}}
** Fewer comparisons
* {{ColumnData}} reconciler implemented in same manner
** {{Cells.reconcileComplex}} is retired
** {{ComplexColumnData}} reconciliation now
*** Garbage-free if the merge has no effect
*** Always fewer allocations
*** Fewer comparisons
* {{FastBuilder}} employed widely:
** {{ClusteringIndexNamesFilter}} deserialization
** {{Columns}} deserialization
** {{PartitionUpdate}} deserialization
** {{AbstractBTreePartition}} construction
** Misc others

The upshot of this work when combined with the proposed patch for 
CASSANDRA-15367 has a dramatic impact on operations over collection types - 
under contention, as much as 100x improved throughput, and hundreds of 
megabytes of reduced allocations.  For all operations, allocations under 
contention and no contention are significantly reduced and throughput improved.

I am still awaiting the final results of the comprehensive performance 
comparison for {{AtomicBTreePartition}}, after which I will establish what 
impact there might be on compaction and normal reads, both of which should be 
affected by this patch.


> Utilising BTree Improvements
> ----------------------------
>
>                 Key: CASSANDRA-15511
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15511
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Local/Other
>            Reporter: Benedict Elliott Smith
>            Assignee: Benedict Elliott Smith
>            Priority: Normal
>         Attachments: atomicbtreepartition.ods, atomicbtreepartition.xlsx.zip, 
> perfsh.tar.gz
>
>
> This patch utilises CASSANDRA-15510 to improve throughput and reduce garbage 
> produced by a number of common operations, by employing 
> {{transformAndFilter}}, {{transform}} and {{FastBuilder}}
> * {{Row}}, {{Cell}} and {{ComplexColumnData}} cloning are implemented with 
> {{BTree.transform}}, so no special builders are necessary; 
> ** {{Rows.copy}} removed
> * {{Rows.merge}} implemented using {{BTree.update}} and a {{ColumnData}} 
> reconciler
> ** Zero-allocations if result of merge is same as {{existing}}
> ** Fewer comparisons
> * {{ColumnData}} reconciler implemented in same manner
> ** {{Cells.reconcileComplex}} is retired
> ** {{ComplexColumnData}} reconciliation now
> *** Garbage-free if the merge has no effect
> *** Always fewer allocations
> *** Fewer comparisons
> * {{FastBuilder}} employed widely:
> ** {{ClusteringIndexNamesFilter}} deserialization
> ** {{Columns}} deserialization
> ** {{PartitionUpdate}} deserialization
> ** {{AbstractBTreePartition}} construction
> ** Misc others
> The upshot of this work when combined with the proposed patch for 
> CASSANDRA-15367 has a dramatic impact on operations over collection types - 
> under contention, as much as 100x improved throughput, and hundreds of 
> megabytes of reduced allocations.  For all operations, allocations under 
> contention and no contention are significantly reduced and throughput 
> improved.



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