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

Ted Yu commented on HBASE-15102:
--------------------------------

{code}
280             newMemstoreSize = context.getCurMemStoreSize() - step;
281             if (newMemstoreSize < minMemstoreSize) {
282               newMemstoreSize = minMemstoreSize;
283               step = context.getCurMemStoreSize() - newMemstoreSize;
284             }
285             newBlockCacheSize = context.getCurBlockCacheSize() + step;
{code}
The value of step is modified inside the if block. This potentially would 
result in mismatch between adjusts to memstore size and blockcache size.

> HeapMemoryTuner can "overtune" memstore size and suddenly drop it into 
> blocking zone
> ------------------------------------------------------------------------------------
>
>                 Key: HBASE-15102
>                 URL: https://issues.apache.org/jira/browse/HBASE-15102
>             Project: HBase
>          Issue Type: Bug
>          Components: regionserver
>    Affects Versions: 2.0.0, 1.2.0, 1.3.0, 1.2.1
>            Reporter: Ashu Pachauri
>            Assignee: Ashu Pachauri
>            Priority: Critical
>         Attachments: HBASE-15102-V0.patch
>
>
> DefaultHeapMemoryTuner often resets the maximum step size for tuning to 8% of 
> total heap size. Often, when the size of memstore is to be decreased while 
> tuning, the 8% tuning can suddenly drop the memstore size below the low water 
> mark of the previous memstore size (which could potentially be  the used size 
> of the memstore)
> This is problematic because suddenly it blocks all the updates by suddenly 
> causing a situation where memstore used size is above high water mark. This 
> has a very bad performance impact on an otherwise fine HBase cluster. 



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

Reply via email to