RFR(S): 8072434: 8064457: introduces performance regressions in 9-b47
Coleen Phillimore
coleen.phillimore at oracle.com
Thu Feb 5 23:12:23 UTC 2015
Webrev 01 is good. You need another reviewer and I'll sponsor it.
http://cr.openjdk.java.net/~goetz/webrevs/8072434-css/webrev.01/
thanks,
Coleen
On 2/5/15, 5:22 PM, Coleen Phillimore wrote:
>
> On 2/5/15, 5:16 PM, Coleen Phillimore wrote:
>>
>> Your test #1 doesn't work on all machines either. I don't think we
>> can add tests that assume memory allocation locations, so we
>> shouldn't add your new test. It's been verified manually.
>
> Forgot to mention it didn't pass on windows x64 maybe because of ASLR.
> Coleen
>
>>
>> Coleen
>>
>> On 2/5/15, 10:00 AM, Lindenmaier, Goetz wrote:
>>>
>>> Hi Coleen,
>>>
>>> You are right, I missed to move that condition into the new code.
>>>
>>> I designed a test for zerobased startup with 30G I would like to add to
>>>
>>> the webrev as you proposed. I had to use WhiteBox, which took a while
>>>
>>> to get right ...
>>>
>>> I thought of these two test cases.
>>>
>>> 1.) Setting 30G plain, and
>>>
>>> 2.) setting the flags used in the benchmark. -Xmx30g -Xms30g
>>> -Xmn26g-XX:+AggressiveOpts -XX:+UseNUMA
>>>
>>> 2.) causes two problems. First it's slow as the debug build
>>> initializes the heap which walks all
>>>
>>> the memory. Second it fails on machines that don't have 30G
>>> main memory. So I have to
>>>
>>> skip it.
>>>
>>> 1.)I'm not sure whether that will work with all OSes, the OS might
>>> not return all
>>>
>>> of the theoretical available address space below 32G, even if
>>> zerobased works
>>>
>>> for medium size heaps.
>>>
>>> I will run 1.) with my tests tonight for a broader coverage, it
>>> worked on linuxx86_64 and
>>>
>>> linuxppc64 fine, and breaks with the VM without the fix.
>>>
>>> Also, all our other tests worked fine with the patch from yesterday.
>>>
>>> Best regards,
>>>
>>> Goetz.
>>>
>>> *From:*Coleen Phillimore [mailto:coleen.phillimore at oracle.com]
>>> *Sent:* Thursday, February 05, 2015 12:14 AM
>>> *To:* Lindenmaier, Goetz; hotspot-dev Source Developers
>>> *Subject:* Re: RFR(S): 8072434: 8064457: introduces performance
>>> regressions in 9-b47
>>>
>>>
>>> Hi Goetz,
>>>
>>> I was trying to figure out how we used to decide whether to put the
>>> compressed class space above the heap in preferred_heap_base(). The
>>> code was:
>>>
>>> const size_t total_size = heap_size +
>>> heap_base_min_address_aligned; // 30G + 2G
>>>
>>> ...
>>> // space so it can be decoded with no base.
>>> if (UseCompressedClassPointers && !UseSharedSpaces &&
>>> OopEncodingHeapMax <= 32*G) {
>>>
>>> uint64_t class_space =
>>> align_size_up(CompressedClassSpaceSize, alignment); // 1G
>>> assert(is_size_aligned((size_t)OopEncodingHeapMax-class_space,
>>> alignment), "difference must be aligned too");
>>> uint64_t new_top = OopEncodingHeapMax-class_space; //
>>> 32G - 1G
>>>
>>> if (total_size <= new_top) { // 32G <= 31G false,
>>> don't use the new_top.
>>> heap_top = new_top;
>>> }
>>> }
>>>
>>> // Align base to the adjusted top of the heap
>>> base = heap_top - heap_size;
>>>
>>>
>>> This is also one instance where 32*G is much easier to understand in
>>> the code than the symbolic name OopEncodingHeapMax.
>>>
>>> Anyway, your code fix looks correct. You want it to be
>>> KlassEncodingMetaspaceMax logically (I thought it should be
>>> OopEncodingHeapMax) since allocating the class space above the heap
>>> and getting zero based compressed oops, the class decoding algorithm
>>> can only shift by 3 not 5. The clause above it excludes the
>>> ObjAlignmentInBytes = shifting 5 case anyway.
>>>
>>> Thank you for fixing this!
>>>
>>> Coleen
>>>
>>> On 2/4/15, 10:55 AM, Lindenmaier, Goetz wrote:
>>>
>>> Hi,
>>>
>>> There is a performance regression after my change 8064457.
>>>
>>> 30G heaps do not displace the CompressedClassSpace from the lower
>>> memory
>>>
>>> region and instead are allocated in upper regions.
>>>
>>> This webrev should fix the Problem.
>>>
>>> http://cr.openjdk.java.net/~goetz/webrevs/8072434-css/webrev.01/
>>> <http://cr.openjdk.java.net/%7Egoetz/webrevs/8072434-css/webrev.01/>
>>>
>>> I verified that it works now and ran runtime/CompressedOops jtreg
>>> tests on linuxx86_64.
>>>
>>> I'll get a comprehensive test run by tomorrow.
>>>
>>> Best regards,
>>>
>>> Goetz.
>>>
>>
>
More information about the hotspot-dev
mailing list