hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "stack (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-10156) Fix up the HBASE-8755 slowdown when low contention
Date Fri, 20 Dec 2013 21:42:10 GMT

    [ https://issues.apache.org/jira/browse/HBASE-10156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13854583#comment-13854583

stack commented on HBASE-10156:

After thinking on this for a while, here is a suggestion.

+ Handlers pass edits and sync calls across a ring buffer.
+ After handling off its edits and after it calls sync, the Handler goes into a holding pattern
blocked waiting on its sync to complete (When the Handler passed its sync across the ringbuffer,
it included a reference to an object that the Handler is currently blocked on for the syncer
thread to pull on when sync completes).
+ A single appender/writer/consumer thread pulls from the ringbuffer and batches up the appends
and syncs.
+ We have multiple threads running syncs as committed by 8755 (only in this case, I'll try
and let them grow and shrink w/ demand rather than hardcode a number -- we'll see)
+ When one of the sync threads completes, it calls notify on all the sync objects it was called
with thereby freeing up the blocked Handlers that are on their other end.

The above would at least remove the notifier thread.  There should also be less contention
since we are doing explicit notifications rather than notifyAll and the use of the distruptor
as the ringbuffer should make the edit+sync hand-off less contending as it goes out of its
way to minimize locking and instances of volatile read/writes.

Now let me prove the above is better than what we have.

Elliott helped out on the above.  In particular he came up w/ the nice simplification that
has us passing the object-the-handler-is-waiting-on off to the sync thread so it can do selective
notifications.  It allowed for doing away w/ an ugly backchannel and notification thread I
had up in an earlier incarnation.

> Fix up the HBASE-8755 slowdown when low contention
> --------------------------------------------------
>                 Key: HBASE-10156
>                 URL: https://issues.apache.org/jira/browse/HBASE-10156
>             Project: HBase
>          Issue Type: Sub-task
>          Components: wal
>            Reporter: stack
>            Assignee: stack
>         Attachments: Disrupting.java
> HBASE-8755 slows our writes when only a few clients.  Fix.

This message was sent by Atlassian JIRA

View raw message