[
https://issues.apache.org/jira/browse/HBASE-14613?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15212814#comment-15212814
]
Yanping Wang commented on HBASE-14613:
--------------------------------------
Hi, Elliott
>>-XX:InitiatingHeapOccupancyPercent
>>Setting it lower doesn't help since this is all about the promotion from
>>young to old an g1 preferring not to do mixed. But we tried it.
No, no, not set to lower, instead, calculate the size of pinned in Old and set
this number higher.
for example, if you have 100GB heap, you calculate those "pinned old forever"
are about 30GB, then most likely the default 45% (45GB) will cause trouble for
you. if after Mixed GC completes, the heap Occupancy is above 45GB, concurrent
marking cycle will start immediately to prepare next series of Mixed GC, which
gives you the symptom of "get pauses even though there is a lot of memory
left."
so if for 100GB heap and 30GB pinned Old, you might have to increase
-XX:InitiatingHeapOccupancyPercent to 60 or 65. so you are able to use more
heap memory. you can find those info by using -XX:+PrintAdaptiveSizePolicy
flag.
>>-XX:ConcGCThreads
>>Setting this higher helped a lot but we have enough happening on these boxes
>>that it started to hurt performance.
after you let more heap to be used, the total number of Mixed GC is likely will
be reduced, which could cause full GC if we are not careful. so increase
ConcGCThread helps concurrent marking completes faster. just consider which one
will hurt performance more? (1) take risk of Full GC (2) 80 Mixed GCs using 4
concurrent threads to do 10 concurrent marking each last 12 seconds (3) 40
Mixed GCs with 12 concurrent threads to do 5 concurrent marking each last 4
seconds.
>>-XX:G1MixedGCCountTarget
>> Setting this lower just moved what caused the long gc's
The most expensive steps in GC are scrub the remember set and COPY live objects
from one place to another. after each concurrent marking cycle completes, by
default G1 will try to do 8 mixed GC, first 1-5 might be easy for G1 so takes
less time to complete, but the deeper it goes, the harder it gets, the longer
it takes. so I'd recommend HBase don't need to go that deep. The reason is
other than pinned forever objects, most HBase objects are short lived. if this
group of mixed GC find too hard to clean and copy some regions, maybe wait a
while, in next cycle of mixed GC, some objects will die and makes their regions
easy to clean up (no need copy any more).
> Remove MemStoreChunkPool?
> -------------------------
>
> Key: HBASE-14613
> URL: https://issues.apache.org/jira/browse/HBASE-14613
> Project: HBase
> Issue Type: Brainstorming
> Reporter: Lars Hofhansl
> Priority: Minor
> Attachments: 14613-0.98.txt, gc.png, writes.png
>
>
> I just stumbled across MemStoreChunkPool. The idea behind is to reuse chunks
> of allocations rather than letting the GC handle this.
> Now, it's off by default, and it seems to me to be of dubious value. I'd
> recommend just removing it.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)