[ 
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)

Reply via email to