[ https://issues.apache.org/jira/browse/CASSANDRA-11697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15382592#comment-15382592 ]
T Jake Luciani edited comment on CASSANDRA-11697 at 7/18/16 4:58 PM: --------------------------------------------------------------------- *The state of compaction and the potential improvements* To continue the above comment here is information on a specific schema I'm focused on. {code} CREATE TABLE userpics ( userid bigint, picid bigint, valueid bigint, PRIMARY KEY(userid, picid) ) WITH compression = \{'sstable_compression':'LZ4Compressor'\} AND compaction = \{'class' : 'LeveledCompactionStrategy', 'sstable_size_in_mb' : '64'\}; {code} Each picid contains 1000 value ids. I've run this through two scenarios: Standalone vs Stressed. *Standalone* is with compaction stress that shows the uncontested throughput. *Stressed* is compaction running in C* and taking many writes so the CPUs are loaded. These scenarios were run against 2.1, 3.0, trunk, and the current patched version of compaction-perf work I've been doing. !image.png The *Y* axis is the number of cells/sec. You can see that we there is a significant drop when the server is loaded. When compactions are backing up this is the worst thing to happen. >From 2.1 to 3.0 we improved stressed compaction 2x mainly from >(CASSANDRA-8988, CASSANDRA-8920, CASSANDRA-8915) But there is still a huge throughput gap we need to fix. Currently, I've made changes to disable thread priority on compaction threads and profiling fixes to avoid cpu time that improves throughput another 2x but the final goal is to close this gap as much as possible as well as fix any major cpu issues on the read and write path since those affect compaction directly as well e.g. (CASSANDRA-10309). As mentioned earlier I'm working on a POC to deal with compaction threads under load that I hope will address this issue. My goal is to have something that closes the gap as much as possibly by 3.10 was (Author: tjake): *The state of compaction and the potential improvements* To continue the above comment here is information on a specific schema I'm focused on. {quote} CREATE TABLE userpics ( userid bigint, picid bigint, valueid bigint, PRIMARY KEY(userid, picid) ) WITH compression = {'sstable_compression':'LZ4Compressor'} AND compaction = {'class' : 'LeveledCompactionStrategy', 'sstable_size_in_mb' : '64'}; {quote} Each picid contains 1000 value ids. I've run this through two scenarios: Standalone vs Stressed. *Standalone* is with compaction stress that shows the uncontested throughput. *Stressed* is compaction running in C* and taking many writes so the CPUs are loaded. These scenarios were run against 2.1, 3.0, trunk, and the current patched version of compaction-perf work I've been doing. !image.png The *Y* axis is the number of cells/sec. You can see that we there is a significant drop when the server is loaded. When compactions are backing up this is the worst thing to happen. >From 2.1 to 3.0 we improved stressed compaction 2x mainly from >(CASSANDRA-8988, CASSANDRA-8920, CASSANDRA-8915) But there is still a huge throughput gap we need to fix. Currently, I've made changes to disable thread priority on compaction threads and profiling fixes to avoid cpu time that improves throughput another 2x but the final goal is to close this gap as much as possible as well as fix any major cpu issues on the read and write path since those affect compaction directly as well e.g. (CASSANDRA-10309). As mentioned earlier I'm working on a POC to deal with compaction threads under load that I hope will address this issue. My goal is to have something that closes the gap as much as possibly by 3.10 > Improve Compaction Throughput > ----------------------------- > > Key: CASSANDRA-11697 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11697 > Project: Cassandra > Issue Type: Improvement > Components: Compaction > Reporter: T Jake Luciani > Assignee: T Jake Luciani > Attachments: image.png > > > The goal of this ticket is to improve/understand the bottlenecks during > compactions. At a high level this will involve: > * A test system for measuring compaction time for different workloads and > compaction strategies. > * Profiling and analysis > * Make improvements > * Add throughput regression tests so we can track > We have a lot of random tickets that relate to this so I'll link them to this > ticket -- This message was sent by Atlassian JIRA (v6.3.4#6332)