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

John Vines commented on ACCUMULO-902:
-------------------------------------

So, I put some thought into this and I think the easiest way to configure it is 
to define a minimum and maximum amount of MinC and MajC. Then the overall 
maximum amount of *Compactions is the max(minimum MinC + maximum MajC, minimum 
MajC + maximum MinC) [Though I would think that the latter argument is dominant 
due to suggested configurations]. Then the weights of minor vs. major can be 
determined by the comparing the difference of max and min of each type of 
compaction.

The tricky part, aside from setting up the thread pool(s) to use and managing 
it, is determining which task to go for next. Of course, if there are < minimum 
of a type running, those should jump to the front of the queue. But depending 
on your configuration, there is the possibility that Majors get blocked off 
because minors keep taking up slots (they wrap and then no major can fit in 
that slot so another minor runs, etc. so Majors get bound by the minimum, 
though this could be the case of a bad configuration).

An optional component is to allow some customization in the order of 
compactions to allow some sort of per-table QoS (which may be a refactoring of 
the !METADATA/!!ROOT table code), but that's another conversation.

There also lends the case of a cost of merging minor compactions vs. normal 
minor compactions, but I think its' really not worth segregating them.
                
> Have a common resource pool for minor and major compactions
> -----------------------------------------------------------
>
>                 Key: ACCUMULO-902
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-902
>             Project: Accumulo
>          Issue Type: Improvement
>          Components: tserver
>            Reporter: John Vines
>            Assignee: Keith Turner
>             Fix For: 1.6.0
>
>
> Currently we have a defined threadpool for minor and major compactions, 
> independent of one another. However, there are situations where a system may 
> be minor compaction heavy with no major, or vice versa. I would like to see a 
> common threadpool which is accessible to both operations for work to be done, 
> with guarantees for certain resources to be available to the other type of 
> work. That is, it should be a defined pool size with a (configurable) minimum 
> of resources maintained for the other to maintain a certain QoS. Of course, 
> major is heavier than minor, so some weighting of operations needs to be done 
> to keep workloads reasonable.

--
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

Reply via email to