[ 
https://issues.apache.org/jira/browse/HBASE-6778?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Lawlor updated HBASE-6778:
-----------------------------------
    Attachment: thread_dump_HMaster.local.out

I started to look into this issue this week. Initial investigation revealed 
that on average the number of threads running within the HMaster process that 
can be attributed to Chores is around 12 threads. I have attached a sample 
thread dump above (you can see the active Chore threads by searching for 
'Chore').

As discussed, the goal of a proposed solution should be to reduce the number of 
running threads by allowing the running Chores to share threads that are idle 
in between Chore cycles. The idea of using ScheduledThreadPoolExecutor seems 
well suited for the job. 

A ScheduleThreadPoolExecutor allows us to specify the maximum number of threads 
that we want to allow the running Chores to use. Since there may be Chores with 
tasks that take a while to execute, this value would have to be dynamic so that 
it could increase/decrease during varying Chore loads. Specifically, the 
executor needs to account for the worst case scenario that all running Chores 
have tasks that take longer than their period (i.e. the chore finishes after 
its next scheduled execution should have started). Thus the core pool size 
could be set to a small initial value, and if we recognize that Chores are 
missing their scheduled start times, we could increase the core pool size to a 
maximum of however many active chores there are.

In summary, I am proposing that we design a service that acts as an interface 
to an underlying ScheduleThreadPoolExecutor whose core pool size can vary. Any 
feedback on this proposed solution and where this may fit into the HBase 
workflow would be greatly appreciated.

> Deprecate Chore; its a thread per task when we should have one thread to do 
> all tasks
> -------------------------------------------------------------------------------------
>
>                 Key: HBASE-6778
>                 URL: https://issues.apache.org/jira/browse/HBASE-6778
>             Project: HBase
>          Issue Type: Bug
>            Reporter: stack
>            Assignee: Jonathan Lawlor
>         Attachments: thread_dump_HMaster.local.out
>
>
> Should use something like ScheduledThreadPoolExecutor instead (Elliott said 
> this first I think; J-D said something similar just now).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to