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