[
https://issues.apache.org/jira/browse/CASSANDRA-3578?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13806006#comment-13806006
]
Jonathan Ellis commented on CASSANDRA-3578:
-------------------------------------------
bq. The above takes a different approach, we update commit log as a part of the
mutation thread and no more threads to deal with serialization.
I like it.
bq. Doesn't have a end of segment on each mutation, we just have header which
will hold the end.
Meaning the cfLastWrite business, right? I must be missing where this gets
persisted back to disk, but in any case, I'm not a fan; we got rid of the old
per-segment header in part because seeking back and forth between the header
and the tail where the appends happen was bad for performance.
mfiguiere had a good summary of the options for dealing with end-of-segment
above. Note that with any of these, I think allocate needs to write the length
to the segment before returning. That way if I have two threads writing
mutations X and Y, if Y's is written before a crash and X's is not, at least
the length will be there that allows replay to skip the [unfinished] write of X
and replay Y.
> Multithreaded commitlog
> -----------------------
>
> Key: CASSANDRA-3578
> URL: https://issues.apache.org/jira/browse/CASSANDRA-3578
> Project: Cassandra
> Issue Type: Improvement
> Reporter: Jonathan Ellis
> Assignee: Vijay
> Priority: Minor
> Labels: performance
> Attachments: 0001-CASSANDRA-3578.patch, ComitlogStress.java,
> Current-CL.png, Multi-Threded-CL.png, parallel_commit_log_2.patch
>
>
> Brian Aker pointed out a while ago that allowing multiple threads to modify
> the commitlog simultaneously (reserving space for each with a CAS first, the
> way we do in the SlabAllocator.Region.allocate) can improve performance,
> since you're not bottlenecking on a single thread to do all the copying and
> CRC computation.
> Now that we use mmap'd CommitLog segments (CASSANDRA-3411) this becomes
> doable.
> (moved from CASSANDRA-622, which was getting a bit muddled.)
--
This message was sent by Atlassian JIRA
(v6.1#6144)