[ https://issues.apache.org/jira/browse/CASSANDRA-8630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14700433#comment-14700433 ]
Ariel Weisberg commented on CASSANDRA-8630: ------------------------------------------- Flight recording of 8630 with compression, hot packages ||Package|Sample Count|Percentage(%)|| |org.apache.cassandra.db.rows|1,577|25.403| |org.apache.cassandra.utils|1,498|24.13| |org.apache.cassandra.utils.btree|670|10.793| |com.googlecode.concurrentlinkedhashmap|598|9.633| |java.util|585|9.423| |org.apache.cassandra.io.sstable|430|6.927| |org.apache.cassandra.db.partitions|183|2.948| |org.apache.cassandra.cache|162|2.61| |org.apache.cassandra.io.util|139|2.239| |org.apache.cassandra.db.rows.UnfilteredRowIterators$UnfilteredRowMergeIterator$$Lambda$93|77|1.24| |org.apache.cassandra.db|74|1.192| Flight recording trunk, hot packages ||Package|Sample Count|Percentage(%)|| |org.apache.cassandra.utils|1,771|26.732| |org.apache.cassandra.db.rows|1,599|24.136| |com.googlecode.concurrentlinkedhashmap|631|9.525| |java.util|590|8.906| |org.apache.cassandra.utils.btree|565|8.528| |org.apache.cassandra.io.sstable|438|6.611| |org.apache.cassandra.io.util|330|4.981| |org.apache.cassandra.db.partitions|124|1.872| |org.apache.cassandra.cache|121|1.826| |org.apache.cassandra.io.sstable.format.big|105|1.585| |org.apache.cassandra.db|102|1.54| > Faster sequential IO (on compaction, streaming, etc) > ---------------------------------------------------- > > Key: CASSANDRA-8630 > URL: https://issues.apache.org/jira/browse/CASSANDRA-8630 > Project: Cassandra > Issue Type: Improvement > Components: Core, Tools > Reporter: Oleg Anastasyev > Assignee: Stefania > Labels: compaction, performance > Fix For: 3.x > > Attachments: 8630-FasterSequencialReadsAndWrites.txt, cpu_load.png, > flight_recorder_001_files.tar.gz, flight_recorder_002_files.tar.gz > > > When node is doing a lot of sequencial IO (streaming, compacting, etc) a lot > of CPU is lost in calls to RAF's int read() and DataOutputStream's write(int). > This is because default implementations of readShort,readLong, etc as well as > their matching write* are implemented with numerous calls of byte by byte > read and write. > This makes a lot of syscalls as well. > A quick microbench shows than just reimplementation of these methods in > either way gives 8x speed increase. > A patch attached implements RandomAccessReader.read<Type> and > SequencialWriter.write<Type> methods in more efficient way. > I also eliminated some extra byte copies in CompositeType.split and > ColumnNameHelper.maxComponents, which were on my profiler's hotspot method > list during tests. > A stress tests on my laptop show that this patch makes compaction 25-30% > faster on uncompressed sstables and 15% faster for compressed ones. > A deployment to production shows much less CPU load for compaction. > (I attached a cpu load graph from one of our production, orange is niced CPU > load - i.e. compaction; yellow is user - i.e. not compaction related tasks) -- This message was sent by Atlassian JIRA (v6.3.4#6332)