You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Andrew Kyle Purtell (Jira)" <ji...@apache.org> on 2022/07/01 21:11:00 UTC
[jira] [Resolved] (HBASE-14331) a single callQueue related improvements
[ https://issues.apache.org/jira/browse/HBASE-14331?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrew Kyle Purtell resolved HBASE-14331.
-----------------------------------------
Resolution: Abandoned
> 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, Scheduler
> Reporter: Hiroshi Ikeda
> Priority: Major
> Attachments: BlockingQueuesPerformanceTestApp-output.pdf, BlockingQueuesPerformanceTestApp-output.txt, BlockingQueuesPerformanceTestApp.java, CallQueuePerformanceTestApp.java, HBASE-14331-V2.patch, HBASE-14331-V3.patch, HBASE-14331-V4.patch, HBASE-14331-V5.patch, HBASE-14331-V6.patch, HBASE-14331-V6.patch, HBASE-14331.patch, HBASE-14331.patch, SemaphoreBasedBlockingQueue.java, SemaphoreBasedLinkedBlockingQueue.java, SemaphoreBasedPriorityBlockingQueue.java
>
>
> {{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
(v8.20.10#820010)