You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Branimir Lambov (Jira)" <ji...@apache.org> on 2025/01/02 14:41:00 UTC
[jira] [Updated] (CASSANDRA-20162) Avoid memory allocation in NativeCell.valueSize() and NativeClustering.dataSize()
[ https://issues.apache.org/jira/browse/CASSANDRA-20162?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Branimir Lambov updated CASSANDRA-20162:
----------------------------------------
Reviewers: Branimir Lambov
Status: Review In Progress (was: Patch Available)
> Avoid memory allocation in NativeCell.valueSize() and NativeClustering.dataSize()
> ---------------------------------------------------------------------------------
>
> Key: CASSANDRA-20162
> URL: https://issues.apache.org/jira/browse/CASSANDRA-20162
> Project: Apache Cassandra
> Issue Type: Improvement
> Components: Local/Memtable
> Reporter: Dmitry Konstantinov
> Assignee: Dmitry Konstantinov
> Priority: Normal
> Fix For: 5.0.x, 5.1
>
> Attachments: Cell_valueSize_usage_during_flushing.png, image-2024-12-23-09-53-27-226.png, jfr_allocation_profile.png
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Currently for memtable_allocation_type: offheap_objects we allocate memory to calculate dataSize() during a write to a memtable because we use default implementation of dataSize() which retrieves an object using value() method.
> To avoid such memory allocation we can calculate data size directly for NativeCell and NativeClustering
> test schema details:
> {code:java}
> CREATE TABLE memory_tests.test_table_text_0 (part_key text,clust_key text,value_0 text,value_1 text,value_2 text,value_3 text,value_4 text,value_5 text,value_6 text,value_7 text,value_8 text,value_9 text,PRIMARY KEY(part_key,clust_key))
> {code}
> write query:
> {code:java}
> INSERT INTO memory_tests.test_table_text_0 (part_key,clust_key,value_0,value_1,value_2,value_3,value_4,value_5,value_6,value_7,value_8,value_9) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)
> {code}
> changed settings:
> {code:java}
> memtable_allocation_type: offheap_objects
> memtable:
> configurations:
> skiplist:
> class_name: SkipListMemtable
> trie:
> class_name: TrieMemtable
> default:
> inherits: trie // changed default to trie
> {code}
> JFR allocation report:
> !jfr_allocation_profile.png|width=570!
> !image-2024-12-23-09-53-27-226.png|width=570!
> Memtable flushing logic also is affected:
> !Cell_valueSize_usage_during_flushing.png|width=570!
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org