OperatingSystemImpl should factor cpu shares when calculating system load

Laurence Cable larry.cable at oracle.com
Tue May 4 00:57:16 UTC 2021



On 5/3/21 4:50 PM, David Holmes wrote:
> On 4/05/2021 9:07 am, Argha C wrote:
>> Hello David,
>> It does look quite similar.
>> The crux is factoring in the sum of cpu time across all shares, 
>> instead of a single cpu share.
>> My proposal for implementing the fix is slightly different from the 
>> PR, but happy to trust your advice on taking this forward.
>
> I would suggest liaising with the contributors of
>
> https://github.com/openjdk/jdk/pull/3656
>
> so see if all of the issues can be addressed together.

+1!
>
> Cheers,
> David
>
>>
>> On Mon, May 3, 2021 at 3:21 PM David Holmes <david.holmes at oracle.com 
>> <mailto:david.holmes at oracle.com>> wrote:
>>
>>     Hi,
>>
>>     Is this related to the issue reported here:
>>
>>     https://bugs.openjdk.java.net/browse/JDK-8265836
>>     <https://bugs.openjdk.java.net/browse/JDK-8265836>
>>
>>     Cheers,
>>     David
>>
>>     On 4/05/2021 3:14 am, Argha C wrote:
>>      > Hello,
>>      > I wanted to report an issue we're seeing with the load
>>     calculation, when
>>      > running with cpu shares > 1, in a container environment.
>>     Specifically,
>>      > the implementation of /OperatingSystemImpl#getCpuLoad./
>>      > /
>>      > /
>>      > /Problem/
>>      > /
>>      > /
>>      > When running with allocation of multiple cpu shares, ie. > 1
>>     unit, the
>>      > load numbers do not comply with the expected range of 0-1. In the
>>      > example screenshot, it goes beyond 4.
>>      > This miscalculation throws off load based system heuristics, when
>>      > running in a container based environment.
>>      >
>>      > /Proposed solution/
>>      > /
>>      > /
>>      > In a container aware environment, for load average 
>> calculation, the
>>      > number of cpu cycles, ie. /getCpuPeriod /must be multiplied by 
>> the
>>      > number of requested cpu shares by the process, ie. 
>> /getCpuShares./
>>      > This would ensure that the load calculation uses the correct
>>     denominator
>>      > for elapsed time slice periods.
>>      >
>>      > In the screenshot below, this would mean using /getCpuShares 
>> /as a
>>      > multiplier for /periodLength./
>>      >
>>      > Please consider validating this behavior. I'd be happy to submit
>>     a PR
>>      > but I'm not an openjdk author/contributor.
>>      > Thanks for your consideration.
>>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: larry_cable.vcf
Type: text/x-vcard
Size: 217 bytes
Desc: not available
URL: <https://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20210503/03087b97/larry_cable.vcf>


More information about the serviceability-dev mailing list