RFR: 8241828: JFR: Some streaming tests require a larger heap size with ZGC
Stefan Karlsson
stefan.karlsson at oracle.com
Thu Apr 2 10:20:20 UTC 2020
Do you intend to fix this soon? Otherwise I suggest we correct the
TestChunkGap test, and increase the memory for the other, so that we can
get clean runs when we run JFR with ZGC.
Thanks,
StefanK
On 2020-03-31 14:48, Erik Gahlin wrote:
> I can take over the bug.
>
> Erik
>
>> On 31 Mar 2020, at 13:49, Stefan Karlsson <stefan.karlsson at oracle.com
>> <mailto:stefan.karlsson at oracle.com>> wrote:
>>
>> On 2020-03-31 12:46, Erik Gahlin wrote:
>>>
>>>> On 31 Mar 2020, at 11:03, Stefan Karlsson
>>>> <stefan.karlsson at oracle.com <mailto:stefan.karlsson at oracle.com>> wrote:
>>>>
>>>> On 2020-03-31 10:43, Erik Gahlin wrote:
>>>>> Doesn’t look good.
>>>>> One problem is that TestChunkGap has TestFilledChunks in @run
>>>>> main. If you change it to TestChunkGap, that test should be fine.
>>>> OK. So we found an old bug lurking here. It's not the first time I
>>>> see this kind of bugs. It would be nice if we could detect those
>>>> @run copy-n-paste bugs.
>>> I agree.
>>>
>>> If you omit the class in @run, jtreg should use the main method in
>>> the file. If there are multiple main methods, it should fail stating
>>> that it must be specified.
>>>
>>>>> When it comes to TestFilledChunk, I can now see how this can
>>>>> happen due to events being sorted by default and the high rate
>>>>> events are emitted, You could try to sett s.setSorted(false), and
>>>>> it should be fine as well.
>>>>> 63 try (EventStream s = EventStream.openRepository()) {
>>>>> 64 try (Recording r1 = new Recording()) {
>>>>> +65 s.setSorted(false);
>>>>> 66 s.setStartTime(Instant.EPOCH);
>>>> That seems to be the code in TestChunkGap, that now (after the fix
>>>> above) works OK with ZGC. Do you have a similar fix for TestFilledCunk?
>>> The above fix is for TestFilledChunk.
>>
>> This doesn't match the code I have. The code you pasted above is from
>> TestChunkGap. Can you provide a proper patch or webrev so that I
>> understand what you are proposing. Alternative, I'd be happy to leave
>> the fix of this over to you.
>>
>> Thanks,
>> StefanK
>>
>>>
>>> TestChunkGap should work after the change of @run, at least it does
>>> for me locally.
>>>
>>> Erik
>>>
>>>> Thanks,
>>>> StefanK
>>>>
>>>>> Thanks
>>>>> Erik
>>>>>> On 31 Mar 2020, at 10:08, Stefan Karlsson
>>>>>> <stefan.karlsson at oracle.com <mailto:stefan.karlsson at oracle.com>
>>>>>> <mailto:stefan.karlsson at oracle.com>> wrote:
>>>>>>
>>>>>> Did some extra testing on TestChunkGap and G1:
>>>>>>
>>>>>> With compressed oops:
>>>>>> -Xmx300m : OOME
>>>>>> -Xmx350m : Barely passes
>>>>>>
>>>>>> Without compressed oops:
>>>>>> -Xmx450m : OOME
>>>>>> -Xmx500m : Passes
>>>>>>
>>>>>> I issued a 'jcmd GC.class_histogram' in the middle of the run and
>>>>>> got:
>>>>>>
>>>>>> num #instances #bytes class name (module)
>>>>>> -------------------------------------------------------
>>>>>> 1: 2473067 158635784 [Ljava.lang.Object;
>>>>>> (java.base at 15-internal)
>>>>>> 2: 2463224 118234752 jdk.jfr.consumer.RecordedEvent
>>>>>> (jdk.jfr at 15-internal)
>>>>>> 3: 4894598 117470352 java.lang.Integer
>>>>>> (java.base at 15-internal)
>>>>>> 4: 157 39960680
>>>>>> [Ljdk.jfr.consumer.RecordedEvent; (jdk.jfr at 15-internal)
>>>>>> 5: 369731 18447144 [B (java.base at 15-internal)
>>>>>> 6: 368815 11802080 java.lang.String
>>>>>> (java.base at 15-internal)
>>>>>> 7: 331 584344 [I (java.base at 15-internal)
>>>>>> ...
>>>>>>
>>>>>> Does this look right?
>>>>>>
>>>>>> StefanK
>>>>>>
>>>>>> On 2020-03-30 22:03, Erik Gahlin wrote:
>>>>>>> Seems strange that the test would require over 512 MB. I would
>>>>>>> expect the TestChunkGap not to use a live set of more than 25
>>>>>>> MB. The test only emits three events.
>>>>>>> TestFilledChunks is easier to understand as it may emit millions
>>>>>>> of events. Still it must be a bug in JFR then, because it should
>>>>>>> not keep them around.
>>>>>>> Erik
>>>>>>>> On 30 Mar 2020, at 19:24, mikhailo.seledtsov at oracle.com
>>>>>>>> <mailto:mikhailo.seledtsov at oracle.com>
>>>>>>>> <mailto:mikhailo.seledtsov at oracle.com>
>>>>>>>> <mailto:mikhailo.seledtsov at oracle.com> wrote:
>>>>>>>>
>>>>>>>> Hi Stefan,
>>>>>>>>
>>>>>>>> I would recommend adding "@requires os.maxMemory > " to the
>>>>>>>> test, to make sure that test does not execute on a host/node
>>>>>>>> that does not have sufficient memory. E.g. "@requires
>>>>>>>> os.maxMemory > 1G"
>>>>>>>>
>>>>>>>> Otherwise the change looks good to me.
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> Misha
>>>>>>>>
>>>>>>>> On 3/30/20 4:07 AM, Stefan Karlsson wrote:
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> Please review this small patch to increase the max heap size
>>>>>>>>> of a couple of JFR streaming tests.
>>>>>>>>>
>>>>>>>>> https://cr.openjdk.java.net/~stefank/8241828/webrev.01/
>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8241828
>>>>>>>>>
>>>>>>>>> The default heap size is 512m when these tests are run. G1
>>>>>>>>> uses almost 500m, but ZGC needs a bit more. I propose that we
>>>>>>>>> set the max heap size to 768m.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> StefanK
>
More information about the hotspot-jfr-dev
mailing list