RFR: 8197589: CPU count wrong when both cpu shares and quotas are used

David Holmes david.holmes at oracle.com
Tue Feb 13 03:34:45 UTC 2018


PS. Bob you will need to file a CSR request for this change in 
behaviour. But I think you're going to have to make this selectable somehow.

David

On 13/02/2018 12:16 PM, David Holmes wrote:
> On 13/02/2018 12:04 PM, Bob Vandette wrote:
>>> On Feb 12, 2018, at 8:01 PM, David Holmes <david.holmes at oracle.com> 
>>> wrote:
>>>
>>> Hi Bob,
>>>
>>> On 13/02/2018 5:53 AM, Bob Vandette wrote:
>>>> Updated webrev URL.
>>>>> On Feb 12, 2018, at 2:41 PM, Bob Vandette <bob.vandette at oracle.com> 
>>>>> wrote:
>>>>>
>>>>> Please review this change to the cpu count selection logic used 
>>>>> when running in docker containers.
>>>>>
>>>>> BUG:
>>>>>
>>>>> https://bugs.openjdk.java.net/browse/JDK-8197589
>>>>>
>>>>> WEBREV:
>>>>>
>>>>> http://cr.openjdk.java.net/~bobv/8197589/webrev.00/
>>>>>
>>>>> The algorithm implemented in JDK-8146115 for selecting the number 
>>>>> of active cpus assumed that a container
>>>>> would not be configured to use both cpu shares AND cpu quotas at 
>>>>> the same time. This was an invalid assumption
>>>>> since this how containers are configured to allow bursting activity 
>>>>> [1].  A Java process running in a container with
>>>>> cpu shares set to the equivalent of 2 cpus and a quota set to 6, 
>>>>> will end up configuring the VM for 2 CPUs rather
>>>>> than 6.
>>>>>
>>>>> [1] 
>>>>> https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/#motivation-for-cpu-requests-and-limits 
>>>>>
>>>
>>> This really makes very little sense to me. They seem to be confusing 
>>> utilization with number of physical processors that are available to 
>>> use. The end result seems somewhat random to me. The number of 
>>> threads the VM creates in response to the expected number of CPUs it 
>>> has available is only indirectly related to the load those threads 
>>> may then impose on the system. But I would have thought you would try 
>>> to size the VM's use of threads based on the "request" not the "limit”.
>>
>> If we chose the request (which is the way it works before this 
>> change), then we risk under utilizing the available CPU resources.
>> Since there’s no risk with over utilizing, I think the new algorithm 
>> is a better choice.
> 
> So "limit" doesn't mean limit? I would expect there to be a real risk 
> with over utilising.
> 
> The change does what you want so in that sense consider it reviewed. But 
> as to whether what it does is reasonable ... I can easily imagine 
> someone else would want the current behaviour, just as readily as 
> someone wants the new behvaiour.
> 
> David
> 
>> Bob.
>>
>>
>>>
>>> David
>>>
>>>>>
>>>>> Bob.
>>>>>
>>>>>
>>


More information about the hotspot-runtime-dev mailing list