RFR (8u): JDK-8146115: Improve docker container detection and resource configuration usage
Poonam Parhar
poonam.bajaj at oracle.com
Fri Jun 22 13:07:50 UTC 2018
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/
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/
>
>>
>> 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>
>>> 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/
>>>
>>> Enhancement:JDK-8146115: Improve docker container detection and
>>> resource configuration usage
>>> <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-8190283>
>>> BugJDK-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>
>>>
>>> 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