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

Anoop Sam John commented on HBASE-18294:
----------------------------------------

Sorry I missed to add one more thing which I wanted to.  Saw some where the ask 
on how to handle the meta size used by CCM for meta data when the MSLAB is off 
heap.  That is any way off heap only and not data. I would say we can just 
consider this as data part only.  To effectively reach our data, we need this. 
It would be just ok.  What am saying is just for CCM, we no need to add more 
complexity.
bq.Reaching global pressure too frequently means the RS is not "healthy". Do we 
agree on this??
Ya reaching global barrier is not that good. Because this will make writes to 
be blocked for flushes.  But this situation depends on many factors. It may not 
mean RS is not healthy.  The more #regions in this RS, this chance is more. The 
more client pressure then also more chances. 
Say we have x as the global heap upper barrier and there are n regions. I 
consider 128 MB as flush size and 4 as blocking multiplier. Then if x>=128 * 4 
* n, we would never see the barrier breach. But this is not so advisable thing 
any way. Just saying.  Even the HDFS slowness can make the flushes to take 
longer and so barrier breaches.  So I dont think we can say barrier breaching 
is always too bad and RS is unhealthy then.
BTW am not getting how we can avoid/reduce that situation using these changes.
The arg u made abt the selection of region when there is a global size breach 
make sense fully.  And I feel we should correct it.  So tracking the heapSize 
at the Region level is needed. (Remember we track it at each Segment level and 
can always sum all segments heapSize to know this. We do this in some flow 
cases).   When there is a flush region selection because of global heap barrier 
breach, we should select region(s) which releases max heap size. 
For per region flush decision (128MB) IMHO we can continue to check against 
data size.  Or may be if the BC is a concern still, we can have check like
if ( dataSize >= 128 || heapSize >= 128 ) flush()

> Reduce global heap pressure: flush based on heap occupancy
> ----------------------------------------------------------
>
>                 Key: HBASE-18294
>                 URL: https://issues.apache.org/jira/browse/HBASE-18294
>             Project: HBase
>          Issue Type: Improvement
>    Affects Versions: 3.0.0
>            Reporter: Eshcar Hillel
>            Assignee: Eshcar Hillel
>         Attachments: HBASE-18294.01.patch, HBASE-18294.02.patch, 
> HBASE-18294.03.patch, HBASE-18294.04.patch, HBASE-18294.05.patch, 
> HBASE-18294.06.patch
>
>
> A region is flushed if its memory component exceed a threshold (default size 
> is 128MB).
> A flush policy decides whether to flush a store by comparing the size of the 
> store to another threshold (that can be configured with 
> hbase.hregion.percolumnfamilyflush.size.lower.bound).
> Currently the implementation (in both cases) compares the data size 
> (key-value only) to the threshold where it should compare the heap size 
> (which includes index size, and metadata).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to