RFR (8u): JDK-8146115: Improve docker container detection and resource configuration usage

David Buck david.buck at oracle.com
Fri Jul 6 13:34:03 UTC 2018


Hi Poonam!

This looks like a good backport of the change and the accompanying 
add-on fixes. Please feel free to add me as a reviewer.

Cheers,
-Buck

-------- Forwarded Message --------
Subject:     Re: RFR (8u): JDK-8146115: Improve docker container 
detection and resource configuration usage
To:     Poonam Parhar <poonam.bajaj at oracle.com>
Organization:     Oracle Corporation
From:     Bob Vandette <bob.vandette at oracle.com>
CC:     hotspot-dev at openjdk.java.net

The latest webrev looks fine.

Bob.

 > On Jun 22, 2018, at 9:07 AM, Poonam Parhar <poonam.bajaj at 
oracle.com> wrote:
 >
 > Hello,
 >
 > Could I get one more review for the docker backport changes, please!
 >
 > The latest webrev including the suggestions from Bob's review is here:
 > http://cr.openjdk.java.net/~poonam/8146115/webrev.02/ 
<http://cr.openjdk.java.net/%7Epoonam/8146115/webrev.02/>
 >
 > Thanks,
 > Poonam
 >
 >
 > On 5/18/18 6:30 AM, Poonam Parhar wrote:
 >> Hello Bob,
 >>
 >> Thanks a lot for reviewing the changes!
 >>
 >> On 5/17/18 11:12 AM, Bob Vandette wrote:
 >>> The backport of my changes look pretty good.
 >>>
 >>> If the new PrintContainerInfo option is only referenced on Linux 
platforms, you might
 >>> want to move it to globals_linux.hpp.
 >> Yes, currently it is being used only on Linux platforms, but I think 
it is a general option and might be used on other platforms at a later 
date.  So I think we can leave it in globals.hpp.
 >>>
 >>> Is there a reason PrintActiveCpus is a diagnostic flag but 
PrintContainerInfo is not?
 >> Yes, PrintContainerInfo should also be a diagnostic option. I have 
changed it.
 >> Updated webrev: 
http://cr.openjdk.java.net/~poonam/8146115/webrev.01/ 
<http://cr.openjdk.java.net/~poonam/8146115/webrev.01/>
 >>
 >>>
 >>> Is it acceptable to add these new VM flags in a backport that won’t 
be supported in the latest release?
 >> Since JDK 9 and later releases use Unified JVM logging, and we don't 
have that in JDK8, a new option is required in 8 to log the information 
which is being logged under 'container' tag in 10 and 11. We will need 
to have a CSR request approved for the new JVM options added as part of 
this backport.
 >>
 >> Thanks,
 >> Poonam
 >>
 >>>
 >>> Bob.
 >>>
 >>>
 >>>> On May 15, 2018, at 4:46 PM, Poonam Parhar <poonam.bajaj at 
oracle.com> <mailto:poonam.bajaj at oracle.com> wrote:
 >>>>
 >>>> Hello,
 >>>>
 >>>> Please review the docker container support changes backported to 
JDK 8u. These changes include the backport of the following enhancement 
and the follow-on bug fixes done on top of that in jdk 10 and 11.
 >>>>
 >>>> Webrev: http://cr.openjdk.java.net/~poonam/8146115/webrev.00/ 
<http://cr.openjdk.java.net/~poonam/8146115/webrev.00/>
 >>>>
 >>>> Enhancement:JDK-8146115: Improve docker container detection and 
resource configuration 
usage<https://bugs.openjdk.java.net/browse/JDK-8146115> 
<https://bugs.openjdk.java.net/browse/JDK-8146115>
 >>>>
 >>>> The changes also include the fixes for the following two bugs:
 >>>> Bug JDK-8186248: Allow more flexibility in selecting Heap % of 
available RAM <https://bugs.openjdk.java.net/browse/JDK-8186248> 
<https://bugs.openjdk.java.net/browse/JDK-8186248><https://bugs.openjdk.java.net/browse/JDK-8190283> 
<https://bugs.openjdk.java.net/browse/JDK-8190283>
 >>>> BugJDK-8190283: <https://bugs.openjdk.java.net/browse/JDK-8190283> 
<https://bugs.openjdk.java.net/browse/JDK-8190283> Default heap sizing 
options select a MaxHeapSize larger than available physical memory in 
some cases <https://bugs.openjdk.java.net/browse/JDK-8190283> 
<https://bugs.openjdk.java.net/browse/JDK-8190283>
 >>>>
 >>>> These changes add a new JVM option 'PrintContainerInfo' for 
tracing container related information which is specific to jdk 8.
 >>>>
 >>>> Testing results (with -XX:+UnlockDiagnosticVMOptions 
-XX:+PrintContainerInfo -XX:+PrintActiveCpus JVM options):
 >>>> --------------
 >>>> poonam at poonam-VirtualBox:~/docker-image$ java TestCPUsMemory
 >>>> Number of Processors: 3
 >>>> Max Memory: 921174016
 >>>> poonam at poonam-VirtualBox:~/docker-image$ sudo docker run --cpus 
1 -m1024m  --rm myimage
 >>>> [sudo] password for poonam:
 >>>> WARNING: Your kernel does not support swap limit capabilities or 
the cgroup is not mounted. Memory limited without swap.
 >>>> OSContainer::init: Initializing Container Support
 >>>> Path to /memory.limit_in_bytes is 
/sys/fs/cgroup/memory/memory.limit_in_bytes
 >>>> Memory Limit is: 1073741824
 >>>> active_processor_count: sched_getaffinity processor count: 3
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: 100000
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 1024
 >>>> CPU Quota count based on quota/period: 1
 >>>> OSContainer::active_processor_count: 1
 >>>> active_processor_count: determined by OSContainer: 1
 >>>> active_processor_count: sched_getaffinity processor count: 3
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: 100000
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 1024
 >>>> CPU Quota count based on quota/period: 1
 >>>> OSContainer::active_processor_count: 1
 >>>> active_processor_count: determined by OSContainer: 1
 >>>> Path to /memory.limit_in_bytes is 
/sys/fs/cgroup/memory/memory.limit_in_bytes
 >>>> Memory Limit is: 1073741824
 >>>> total container memory: 1073741824
 >>>> active_processor_count: sched_getaffinity processor count: 3
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: 100000
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 1024
 >>>> CPU Quota count based on quota/period: 1
 >>>> OSContainer::active_processor_count: 1
 >>>> active_processor_count: determined by OSContainer: 1
 >>>> active_processor_count: sched_getaffinity processor count: 3
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: 100000
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 1024
 >>>> CPU Quota count based on quota/period: 1
 >>>> OSContainer::active_processor_count: 1
 >>>> active_processor_count: determined by OSContainer: 1
 >>>>
 >>>> active_processor_count: sched_getaffinity processor count: 3
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: 100000
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 1024
 >>>> CPU Quota count based on quota/period: 1
 >>>> OSContainer::active_processor_count: 1
 >>>> active_processor_count: determined by OSContainer: 1
 >>>> Number of Processors: 1
 >>>> Max Memory: 259522560
 >>>>
 >>>> poonam at poonam-VirtualBox:~/docker-image$ sudo docker run 
--cpu-shares 2048 -m1024m  --rm myimage
 >>>> WARNING: Your kernel does not support swap limit capabilities or 
the cgroup is not mounted. Memory limited without swap.
 >>>> OSContainer::init: Initializing Container Support
 >>>> Path to /memory.limit_in_bytes is 
/sys/fs/cgroup/memory/memory.limit_in_bytes
 >>>> Memory Limit is: 1073741824
 >>>> active_processor_count: sched_getaffinity processor count: 3
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: -1
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 2048
 >>>> CPU Share count based on shares: 2
 >>>> OSContainer::active_processor_count: 2
 >>>> active_processor_count: determined by OSContainer: 2
 >>>> active_processor_count: sched_getaffinity processor count: 3
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: -1
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 2048
 >>>> CPU Share count based on shares: 2
 >>>> OSContainer::active_processor_count: 2
 >>>> active_processor_count: determined by OSContainer: 2
 >>>> Path to /memory.limit_in_bytes is 
/sys/fs/cgroup/memory/memory.limit_in_bytes
 >>>> Memory Limit is: 1073741824
 >>>> total container memory: 1073741824
 >>>> Path to /memory.limit_in_bytes is 
/sys/fs/cgroup/memory/memory.limit_in_bytes
 >>>> Memory Limit is: 1073741824
 >>>> total container memory: 1073741824
 >>>> active_processor_count: sched_getaffinity processor count: 3
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: -1
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 2048
 >>>> CPU Share count based on shares: 2
 >>>> OSContainer::active_processor_count: 2
 >>>> active_processor_count: determined by OSContainer: 2
 >>>> active_processor_count: sched_getaffinity processor count: 3
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: -1
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 2048
 >>>> CPU Share count based on shares: 2
 >>>> OSContainer::active_processor_count: 2
 >>>> active_processor_count: determined by OSContainer: 2
 >>>>
 >>>> active_processor_count: sched_getaffinity processor count: 3
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: -1
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 2048
 >>>> CPU Share count based on shares: 2
 >>>> OSContainer::active_processor_count: 2
 >>>> active_processor_count: determined by OSContainer: 2
 >>>> Number of Processors: 2
 >>>> Max Memory: 259522560
 >>>>
 >>>> poonam at poonam-VirtualBox:~/docker-image$ sudo docker run 
--cpuset-cpus 0-1 -m1024m  --rm myimage
 >>>> WARNING: Your kernel does not support swap limit capabilities or 
the cgroup is not mounted. Memory limited without swap.
 >>>> OSContainer::init: Initializing Container Support
 >>>> Path to /memory.limit_in_bytes is 
/sys/fs/cgroup/memory/memory.limit_in_bytes
 >>>> Memory Limit is: 1073741824
 >>>> active_processor_count: sched_getaffinity processor count: 2
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: -1
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 1024
 >>>> OSContainer::active_processor_count: 2
 >>>> active_processor_count: determined by OSContainer: 2
 >>>> active_processor_count: sched_getaffinity processor count: 2
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: -1
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 1024
 >>>> OSContainer::active_processor_count: 2
 >>>> active_processor_count: determined by OSContainer: 2
 >>>> Path to /memory.limit_in_bytes is 
/sys/fs/cgroup/memory/memory.limit_in_bytes
 >>>> Memory Limit is: 1073741824
 >>>> total container memory: 1073741824
 >>>> Path to /memory.limit_in_bytes is 
/sys/fs/cgroup/memory/memory.limit_in_bytes
 >>>> Memory Limit is: 1073741824
 >>>> total container memory: 1073741824
 >>>> active_processor_count: sched_getaffinity processor count: 2
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: -1
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 1024
 >>>> OSContainer::active_processor_count: 2
 >>>> active_processor_count: determined by OSContainer: 2
 >>>> active_processor_count: sched_getaffinity processor count: 2
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: -1
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 1024
 >>>> OSContainer::active_processor_count: 2
 >>>> active_processor_count: determined by OSContainer: 2
 >>>>
 >>>> active_processor_count: sched_getaffinity processor count: 2
 >>>> Path to /cpu.cfs_quota_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
 >>>> CPU Quota is: -1
 >>>> Path to /cpu.cfs_period_us is 
/sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
 >>>> CPU Period is: 100000
 >>>> Path to /cpu.shares is /sys/fs/cgroup/cpu,cpuacct/cpu.shares
 >>>> CPU Shares is: 1024
 >>>> OSContainer::active_processor_count: 2
 >>>> active_processor_count: determined by OSContainer: 2
 >>>> Number of Processors: 2
 >>>> Max Memory: 259522560
 >>>> ------------------
 >>>>
 >>>> Thanks,
 >>>> Poonam
 >>>>
 >>
 >


More information about the hotspot-dev mailing list