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

Jon Haddad updated CASSANDRA-20085:
-----------------------------------
    Description: 
I'm examining a 5.0 cluster, mostly default settings except these overrides:
{noformat}
cluster_name: "density"
num_tokens: 4
concurrent_reads: 64
concurrent_writes: 64
trickle_fsync: true
endpoint_snitch: "Ec2Snitch"
compaction_throughput: 0MiB/s
key_cache_migrate_during_compaction: false
{noformat}
Here's a flame graph of compaction taken with these settings:
{noformat}
asprof -e wall -X '*Unsafe.park*' -X '*Native.epollWait' -I '*compaction*' 
{noformat}
[^image-2024-11-15-09-50-41-854.png]

and in reverse:

[^image-2024-11-15-09-45-51-450.png]

It's clear we can get an easy win by moving the writing portion of compaction 
to a dedicated thread (ExecutorService.newSingleThreadExecutor() ?), instead of 
blocking in the same one. For this use case, it would improve compaction 
throughput by about 2x.

  was:
I'm examining a 5.0 cluster, mostly default settings except these overrides:

{noformat}
cluster_name: "rokt-density"
num_tokens: 4
concurrent_reads: 64
concurrent_writes: 64
trickle_fsync: true
endpoint_snitch: "Ec2Snitch"
compaction_throughput: 0MiB/s
key_cache_migrate_during_compaction: false
{noformat}

Here's a flame graph of compaction taken with these settings:

{noformat}
asprof -e wall -X '*Unsafe.park*' -X '*Native.epollWait' -I '*compaction*' 
{noformat}

 !image-2024-11-15-09-50-41-854.png|thumbnail! 

and in reverse:

 !image-2024-11-15-09-45-51-450.png|thumbnail! 

It's clear we can get an easy win by moving the writing portion of compaction 
to a dedicated thread (ExecutorService.newSingleThreadExecutor() ?), instead of 
blocking in the same one.  For this use case, it would improve compaction 
throughput by about 2x.


> Move CompactionAwareWriter.append to separate thread
> ----------------------------------------------------
>
>                 Key: CASSANDRA-20085
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-20085
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Jon Haddad
>            Priority: Normal
>         Attachments: image-2024-11-15-09-45-51-450.png, 
> image-2024-11-15-09-50-41-854.png
>
>
> I'm examining a 5.0 cluster, mostly default settings except these overrides:
> {noformat}
> cluster_name: "density"
> num_tokens: 4
> concurrent_reads: 64
> concurrent_writes: 64
> trickle_fsync: true
> endpoint_snitch: "Ec2Snitch"
> compaction_throughput: 0MiB/s
> key_cache_migrate_during_compaction: false
> {noformat}
> Here's a flame graph of compaction taken with these settings:
> {noformat}
> asprof -e wall -X '*Unsafe.park*' -X '*Native.epollWait' -I '*compaction*' 
> {noformat}
> [^image-2024-11-15-09-50-41-854.png]
> and in reverse:
> [^image-2024-11-15-09-45-51-450.png]
> It's clear we can get an easy win by moving the writing portion of compaction 
> to a dedicated thread (ExecutorService.newSingleThreadExecutor() ?), instead 
> of blocking in the same one. For this use case, it would improve compaction 
> throughput by about 2x.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to