[
https://issues.apache.org/jira/browse/HBASE-6466?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13528449#comment-13528449
]
Sergey Shelukhin commented on HBASE-6466:
-----------------------------------------
bq. Yes. Default is single flusher only so default behavior should be as it was.
That is the case:
{code}
this.handlerCount = conf.getInt("hbase.hstore.flusher.count", 1);
{code}
bq. Looking at the patch, please look elsewhere in code base for how we set
threads running. See how the threads are named... there is some convention in
that threads have the name of their host as a prefix which helps when many
regionservers in the one jvm. Could these new flusher be set up using a thread
pool instead? See Threads.java for some facility.
Fixed. Threadpool is to schedule one-off tasks, these threads are intended to
run continuously. I guess one could achieve the same goal with threadpool and
counter to limit the concurrency (except that these threads will be easier to
starve) but it seems like a roundabout way to do is.
bq. Can this class be static?
bq. + private class FlushHandler extends HasThread {
At the cost of few pointers (it currently refers to parent fields); is there
reason to do so?
bq. Pass in the Service Interface so you can query if host has been stopped?
Queries parent "server" field:
{code}
public void run() {
while (!server.isStopped()) {
{code}
bq. If we failed a flush in the past, we'd check the filesystem and if we
couldn't write, we'd abort the server. Does that happen still? Or does the
flusher thread just exit?
The behavior should be the same - the uncaught exception handler is set on new
runnable-s the same way as on the old one.
bq. What is going on w/ blockSignal?
Can you please elaborate the question? :)
bq. Why in FSHLog change lock to be a ReentrantReadWriteLock?
flushcache is now called from multiple threads; WAL has entries for cache flush
(which according to discussion in the linked FB JIRA might be unnecessary),
with lock held between start and complete entries. If this lock is kept
exclusive, it will cause flush threads to serialize on it.
bq. How are J-Ds concerns above being addressed in this patch?
Do you mean the concerns about the lock (discussed above, addressed by original
patch), or about prior lost patch?
bq. Or Elliott's seeing 60 second pauses?
I haven't seen such conditions on trunk during perf tests.
[~eclark] can you still repro this?
I will probably try to port to 0.94 next, so I can run some lengthy test with
normal settings to see how it goes on 0.94.
bq. Does this do what Jimmy suggests above, flush multiple regions concurrently
when there is memory pressure?
No; there is a response that it doesn't produce substantial wins...
Should it be a separate JIRA?
> Enable multi-thread for memstore flush
> --------------------------------------
>
> Key: HBASE-6466
> URL: https://issues.apache.org/jira/browse/HBASE-6466
> Project: HBase
> Issue Type: Improvement
> Reporter: chunhui shen
> Assignee: chunhui shen
> Attachments: HBASE-6466.patch, HBASE-6466v2.patch,
> HBASE-6466v3.1.patch, HBASE-6466v3.patch
>
>
> If the KV is large or Hlog is closed with high-pressure putting, we found
> memstore is often above the high water mark and block the putting.
> So should we enable multi-thread for Memstore Flush?
> Some performance test data for reference,
> 1.test environment :
> random writting;upper memstore limit 5.6GB;lower memstore limit 4.8GB;400
> regions per regionserver;row len=50 bytes, value len=1024 bytes;5
> regionserver, 300 ipc handler per regionserver;5 client, 50 thread handler
> per client for writing
> 2.test results:
> one cacheFlush handler, tps: 7.8k/s per regionserver, Flush:10.1MB/s per
> regionserver, appears many aboveGlobalMemstoreLimit blocking
> two cacheFlush handlers, tps: 10.7k/s per regionserver, Flush:12.46MB/s per
> regionserver,
> 200 thread handler per client & two cacheFlush handlers, tps:16.1k/s per
> regionserver, Flush:18.6MB/s per regionserver
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira