RFR: More Partial Heuristics
Roman Kennke
rkennke at redhat.com
Wed May 24 15:36:25 UTC 2017
Am 24.05.2017 um 15:32 schrieb Christine Flood:
> http://cr.openjdk.java.net/~chf/heuristics/webrev.00/
>
>
> This patch implements LRU and generational partial heuristics.
>
> We save the timestamp at the first and last allocations in a region.
>
> When performing generational heuristics we only chose regions which had
> their first allocation after the last gc cycle. When performing LRU
> heuristics we only chose regions which had their last allocation before the
> last gc cycle. This prevents us from ever having doubly forwarded objects
> when partial and major concurrent collections interleave.
>
> Added two new global flags
>
> product_rw(uintx, ShenandoahGenerationalYoungGenPercentage, 20, \
> "Percentage of the heap designated as young")
> \
> range(0,100)
> \
>
> \
> product_rw(uintx, ShenandoahLRUOldGenPercentage, 20,
> \
> "Percentage of the heap designated as old")
> \
> range(0,100)
> \
>
> Which allow the user to specify how much of the heap they would like to
> consider young or old for that particular heuristic.
>
> This patch forbids the reuse of partially filled heap regions in its
> current form.
>
> I tested LRU, generational, partial, and default heuristics on several
> benchmarks.
- I see no reason to explicitely pass in the matrix to heuristics, only
for one or a few that needs them. You can always get it through
ShenandoahHeap::heap()->connection_matrix() if you need it.
- _timestamp_at_last_gc_start,_timestamp_at_last_gc_end,
_used_at_last_gc better go into heuristics or policy? We already have
hooks there that get called on gc start/end, phase start/end etc.
-what makes you think that? // I think we aren't resetting top properly
- why are you setting the time stamps of regions in the iterator? is
that sane?
Roman
More information about the shenandoah-dev
mailing list