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

Bob Vandette bob.vandette at oracle.com
Fri Jun 22 15:08:59 UTC 2018


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