You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Ted Yu (JIRA)" <ji...@apache.org> on 2011/06/29 15:42:28 UTC

[jira] [Commented] (HBASE-4044) [performance]decrease IO calls when flush hlog

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

Ted Yu commented on HBASE-4044:
-------------------------------

Great findings mingjian.

Do we need the check here ?
{code}
+  private void changeToFlush(){
+      if(flushEdits.isEmpty() == false)
+          flushEdits.clear();
{code}
We can call ArrayList.addAll() later in the routine.

I prefer clearing flushEdits after its contents are flushed for better GC. This is my personal opinion.

> [performance]decrease IO calls when flush hlog
> ----------------------------------------------
>
>                 Key: HBASE-4044
>                 URL: https://issues.apache.org/jira/browse/HBASE-4044
>             Project: HBase
>          Issue Type: Improvement
>          Components: performance, regionserver
>            Reporter: mingjian
>             Fix For: 0.90.4
>
>         Attachments: HLog.patch
>
>
>     We found that the hlog flush to disk would block other write threads. When one thread exec "doWrite(info, logKey, edit);", the others wait for "updateLock" in HLog.java.
>     Why not the others add their edits into a list and wait. When sync's time, the whole list sync to disk once. I think it will decrease the IO calls. 
>     So Maybe we will make two lists for edits. Each thread write to the "waledits" and wait for "updateLock". Each thread can copy the "waledits" to "flushedits" and flush the "flushedits" to 
> disk once it gets "updateLock".
>     In my test, it can increase the write speed of 100% when I set "hbase.regionserver.handler.count"=100.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira