Public bug reported:
Description: kernel: cpu idle time calculation
Symptom: The cpu idle time reported within /proc/stat as well as in
/sys/devices/system/cpu/cpuX/idle_time_us sometimes may
show incorrect values.
Problem: The kernel tries to figure out when a cpu entered idle
by accessing its per-cpu data structure. There is an
ordering problem: if a remote cpu has an idle_enter
value which is not zero, and an idle_exit value which
is zero, it is assumed it is idle since "now". The
"now" timestamp however is taken before the idle_enter
value is read.
This in turn means that "now" can be smaller than
idle_enter of the remote cpu. Unconditionally
subtracting idle_enter from "now" can thus lead to a
negative value (aka large unsigned value).
Solution: Move the get_tod_clock() invocation.
Upstream-ID:
https://github.com/torvalds/linux/commit/3d7efa4edd07be5c5c3ffa95ba63e97e070e1f3f
Patch tagged as "stable".
Tracking the integration of this patch in the relevant distros..
** Affects: linux (Ubuntu)
Importance: Undecided
Assignee: Skipper Bug Screeners (skipper-screen-team)
Status: New
** Tags: architecture-s39064 bugnameltc-182581 severity-high
targetmilestone-inin1910
** Tags added: architecture-s39064 bugnameltc-182581 severity-high
targetmilestone-inin1910
** Changed in: ubuntu
Assignee: (unassigned) => Skipper Bug Screeners (skipper-screen-team)
** Package changed: ubuntu => linux (Ubuntu)
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1854059
Title:
[UBUNTU] kernel: cpu idle time calculation
Status in linux package in Ubuntu:
New
Bug description:
Description: kernel: cpu idle time calculation
Symptom: The cpu idle time reported within /proc/stat as well as in
/sys/devices/system/cpu/cpuX/idle_time_us sometimes may
show incorrect values.
Problem: The kernel tries to figure out when a cpu entered idle
by accessing its per-cpu data structure. There is an
ordering problem: if a remote cpu has an idle_enter
value which is not zero, and an idle_exit value which
is zero, it is assumed it is idle since "now". The
"now" timestamp however is taken before the idle_enter
value is read.
This in turn means that "now" can be smaller than
idle_enter of the remote cpu. Unconditionally
subtracting idle_enter from "now" can thus lead to a
negative value (aka large unsigned value).
Solution: Move the get_tod_clock() invocation.
Upstream-ID:
https://github.com/torvalds/linux/commit/3d7efa4edd07be5c5c3ffa95ba63e97e070e1f3f
Patch tagged as "stable".
Tracking the integration of this patch in the relevant distros..
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1854059/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp