[PING] RFR [XS]: 8244500: jtreg test error in test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
Bob Vandette
bob.vandette at oracle.com
Thu Jun 18 18:51:31 UTC 2020
> On Jun 18, 2020, at 2:48 PM, Severin Gehwolf <sgehwolf at redhat.com> wrote:
>
> On Thu, 2020-06-18 at 14:21 -0400, Bob Vandette wrote:
>> Actually, I still think we might have an issue with your change on cgroupv2 systems when using podman.
>> I just realized that we need the exact error string to match and I’m not seeing the same one. The error
>> message you are matching may be coming from docker. There are a few other issues prohibiting us from
>> fully testing on podman but it’s definitely a goal to get there. I wonder if you should skip the string check?
>> I don’t even think we can guarantee this error message would occur on all Linux systems with podman since
>> this one has the OCI string in it (Oracle Cloud Infrastructure).
>>
>> # podman run --memory 128m --memory-swap 300m -it ubuntu bash
>> Error: writing file `memory.swap.max`: Permission denied: OCI runtime permission denied error
>
> This version omits the check for the precise error message. Would this
> be OK?
Yes, that works.
Bob.
> http://cr.openjdk.java.net/~sgehwolf/webrevs/JDK-8244500/04/webrev
>
> Thanks,
> Severin
>
>
>
>> Bob.
>>
>>> On Jun 18, 2020, at 12:57 PM, Severin Gehwolf <sgehwolf at redhat.com> wrote:
>>>
>>> On Thu, 2020-06-18 at 12:09 -0400, Bob Vandette wrote:
>>>> I fired up my cgroupv2 configured system and confirmed that getMemoryAndSwapLimit will indeed return -1
>>>> if the kernel does not have swap accounting enabled so I’m ok with your change.
>>>>
>>>> The memory.swap.* files are not present in the /sys/fs/cgroup file system which causes -1 to be returned.
>>>
>>> Thank you Bob!
>>>
>>>> I agree that the fix for JDK-8236617 is no longer needed.
>>>
>>> OK. I've filed another bug to track this:
>>> https://bugs.openjdk.java.net/browse/JDK-8247863
>>>
>>>> Sorry for the delay,
>>>
>>> No worries at all.
>>>
>>> Thanks,
>>> Severin
>>>
>>>> Bob.
>>>>
>>>>
>>>>> On Jun 17, 2020, at 10:29 AM, Severin Gehwolf <sgehwolf at redhat.com> wrote:
>>>>>
>>>>> On Wed, 2020-06-17 at 09:09 -0400, Bob Vandette wrote:
>>>>>> Should we just accept the kernel error message rather than add all the additional value checking?
>>>>>>
>>>>>> "out.shouldContain("Your kernel does not support swap limit capabilities”);
>>>>>
>>>>> I'd prefer to keep the other checks as well. The bug explains why that
>>>>> is and if we see a config which fails this as well, something is wrong.
>>>>> Hopefully that makes some sense.
>>>>>
>>>>>> Why isn’t the try block around the check for .shouldMatch("OperatingSystemMXBean\\.getFreeSwapSpaceSize: [1-9][0-9]+”);
>>>>>
>>>>> Why should it? For most set ups this catch block is never reached. The
>>>>> only setup we are aware of which reaches this is the system Matthias
>>>>> runs tests on. I've never heard of a system where this fails as well.
>>>>>
>>>>>> Why doesn’t this call fail as well??
>>>>>
>>>>> Because the system values are being used for
>>>>> OperatingSystemMXBean.getTotalSwapSpaceSize() when:
>>>>> Metrics.getMemoryLimit() > 0 && Metrics.getMemoryAndSwapLimit() == -1
>>>>>
>>>>>> Have you tried this test on a system with cgrouopv1 and v2 that doesn’t have swap enabled?
>>>>>
>>>>> I don't think so. I don't have access to such a system.
>>>>>
>>>>> How do you mean, though? A system which has swap disabled on the system
>>>>> level or a container without swap? I believe the former is exactly the
>>>>> case of Matthias' system. But I don't know. The latter should also be
>>>>> covered via a test Jie added a while back.
>>>>>
>>>>>> I’m concerned that we’ll be back to fixing this when some other configuration combination fails.
>>>>>
>>>>> I understand but find it unlikely. Those are systems which are going to
>>>>> be hard to detect correctly and do-the-right-thing. As mentioned in the
>>>>> bug there is no way to distinguish between unlimited swap + a memory
>>>>> limit from kernel-doesn't-support-swap-limits + a memory limit.
>>>>>
>>>>> Note that https://bugs.openjdk.java.net/browse/JDK-8236617 "fixed" this
>>>>> for the old implementation. Unfortunately, it doesn't seem like it was
>>>>> investigated why a 0 limit was being returned. That was when the old
>>>>> implementation was still in place (prior cgroups v2 support). In the
>>>>> old impl, when files were missing 0 was returned for some cases. In
>>>>> fact, the fix of JDK-8236617 with the old impl would have wrongly
>>>>> returned 0 for getTotalSwapSpaceSize() for a system which got
>>>>> configured with unlimited swap size (--memory-swap=-1). In the new
>>>>> impl, this returns physical swap size which seems better.
>>>>>
>>>>> On that note, the code of JDK-8236617 seems unreachable now.
>>>>>
>>>>> Thanks,
>>>>> Severin
>>>>>
>>>>>
>>>>>> Bob.
>>>>>>
>>>>>>
>>>>>>> On Jun 17, 2020, at 5:13 AM, Severin Gehwolf <sgehwolf at redhat.com> wrote:
>>>>>>>
>>>>>>> On Fri, 2020-06-05 at 16:07 +0200, Severin Gehwolf wrote:
>>>>>>>> On Fri, 2020-06-05 at 10:30 +0000, Baesken, Matthias wrote:
>>>>>>>>>> Here would be my suggestion
>>>>>>>>>> (hopefully this one isn't too restrictive again):
>>>>>>>>>> http://cr.openjdk.java.net/~sgehwolf/webrevs/JDK-8244500/03/webrev/
>>>>>>>>>
>>>>>>>>> Hi Severin, this worked nicely .
>>>>>>>>> Thanks for providing this .
>>>>>>>>
>>>>>>>> Great. If somebody else is willing to OK this, I'll push it.
>>>>>>>
>>>>>>> Could I have a second review of this, please? I believe it's the best
>>>>>>> we can do for this test failure Matthias is seeing.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Severin
>>>>>>>
>
More information about the hotspot-dev
mailing list