Request for reviews (S): 7014874: Incorrect COOPs modes on solaris-{sparcv9, amd64} with ParallelGC

Y. S. Ramakrishna y.s.ramakrishna at oracle.com
Thu Jan 27 14:59:23 PST 2011


May be you need a "partition_aligned()" method that
takes an aligned whole and produces aligned partitions
thereof given a desired_partitioning request. It would
seem as though similar logic would need to apply to
other kinds of heaps... or do they do the right thing
already? OK, i suppose i should go look, since i am
supposed to be reviewing, not interviewing ;-)

-- ramki

On 01/27/11 14:49, Vladimir Kozlov wrote:
> Before rounding YG+OG == total heap size. To keep the same
> total size I need to round one size up and the other down.
> I still may not preserver the same total size if it is not
> rounded to the same or large alignment. But it is fine.
> 
> I already fixed PG rounding before in 6984368 changes:
> 
> src/share/vm/memory/collectorPolicy.cpp    Tue Sep 14 17:19:35 2010 -0700
> @@ -32,7 +32,11 @@
>      MaxPermSize = PermSize;
>    }
>    PermSize = MAX2(min_alignment(), align_size_down_(PermSize, 
> min_alignment()));
> -  MaxPermSize = align_size_up(MaxPermSize, max_alignment());
> +  // Don't increase Perm size limit above specified.
> +  MaxPermSize = align_size_down(MaxPermSize, max_alignment());
> +  if (PermSize > MaxPermSize) {
> +    PermSize = MaxPermSize;
> +  }
> 
> Vladimir
> 
> Y. S. Ramakrishna wrote:
>> I don't understand the logic of the patch. Or rather, i do,
>> but i question if it is complete: why didn't you also align
>> the max size of YG and PG down in like manner? I think you
>> should or you would be open to the same issues, no?
>>
>> In fact, it seems as though, as a matter of uniform policy, all min's
>> should align upwards and all max's align downwards wherever 
>> (page-)alignment
>> is sought.
>>
>> -- ramki
>>
>>
>> On 01/27/11 14:18, Vladimir Kozlov wrote:
>>> http://cr.openjdk.java.net/~kvn/7014874/webrev
>>>
>>> Fixed 7014874: Incorrect COOPs modes on solaris-{sparcv9,amd64} with 
>>> ParallelGC
>>>
>>> scale_by_NewRatio_aligned() aligns boundary between old
>>> and young gens to min_alignment() (64K). But code in
>>> ParallelScavengeHeap::initialize() aligns up both old and
>>> young gen sizes to large page size.
>>> As result total heap size could be increased by one large
>>> page and cross 4gb boundary preventing usage of 32-bit COOPs.
>>>
>>> Align old gen size down to keep specified heap size but
>>> not less than its old gen min size.


More information about the hotspot-compiler-dev mailing list