hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hiroshi Ikeda (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HBASE-14331) a single callQueue related improvements
Date Fri, 28 Aug 2015 08:04:45 GMT
Hiroshi Ikeda created HBASE-14331:

             Summary: a single callQueue related improvements
                 Key: HBASE-14331
                 URL: https://issues.apache.org/jira/browse/HBASE-14331
             Project: HBase
          Issue Type: Improvement
          Components: IPC/RPC, Performance
            Reporter: Hiroshi Ikeda
            Priority: Minor

{{LinkedBlockingQueue}} well separates locks between the {{take}} method and the {{put}} method,
but not between takers, and not between putters. These methods are implemented to take locks
at the almost beginning of their logic. HBASE-11355 introduces multiple call-queues to reduce
such possible congestion, but I doubt that it is required to stick to {{BlockingQueue}}.

There are the other shortcomings of using {{BlockingQueue}}. When using multiple queues, since
{{BlockingQueue}} blocks threads it is required to prepare enough threads for each queue.
It is possible that there is a queue starving for threads while there is another queue where
threads are idle. Even if you can tune parameters to avoid such situations, the tuning is
not so trivial.

I suggest using a single {{ConcurrentLinkedQueue}} with {{Semaphore}}.

This message was sent by Atlassian JIRA

View raw message