public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 4.9 0/4] Fix softirq time accounting issues on 4.9
@ 2018-09-07  1:42 Ivan Delalande
  2018-09-07  1:42 ` [PATCH 4.9 1/4] time: Introduce jiffies64_to_nsecs() Ivan Delalande
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Ivan Delalande @ 2018-09-07  1:42 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Frederic Weisbecker, Ingo Molnar, Rabin Vincent, Edward Chron,
	stable, Ivan Delalande

Hi Greg,

This series fixes issues we've seen with softirq time accounting in 4.9:
  - when ksoftirqd is running at 100% on a CPU, none of the values
    reported by /proc/stat for that CPU will change, sometimes for
    dozens of seconds,
  - large deviations in the total number of ticks accumulated over a
    fixed time for a CPU, probably because of the first issue hitting
    for shorter periods.

We found out that something pretty similar had been reported 9 months
ago, see the reference link below. In that discussion, Rabin Vincent had
made a 4.9 specific patch which fixes our first issue, but we were still
seeing some deviation from the total number of ticks (up to 1.7% from
expected, where we had only 0.2% on older kernels), and you had also
asked for a direct backport from the mainline series, if possible.

As mentioned in that thread, a lot of changes (probably 50+) went into
4.11 to remove cputime, but we could get something working with only the
4 attached patches to fix these two issues. Three of these patches apply
without change, and the second one in the series ("sched/cputime:
Convert kcpustat to nsecs") needed a minor change as a cast had been
added in 527b0a76f41d ("sched/cpuacct: Avoid %lld seq_printf warning")
to fix a build warning on s390. I guess we could also include that patch
in this series, let me know if this is the preferred way to handle this.

We ran our tests on 3.18, 4.4 and 4.9 and confirmed that only 4.9 would
need this series, and that this series indeed restores the behavior we
were seeing on those older kernels.

Thanks!

Reference: http://lkml.kernel.org/r/%3C1513159876-5125-1-git-send-email-rabin.vincent@axis.com


Frederic Weisbecker (4):
  time: Introduce jiffies64_to_nsecs()
  sched/cputime: Convert kcpustat to nsecs
  sched/cputime: Increment kcpustat directly on irqtime account
  sched/cputime: Fix ksoftirqd cputime accounting regression

 arch/s390/appldata/appldata_os.c   | 16 +++----
 drivers/cpufreq/cpufreq.c          |  6 +--
 drivers/cpufreq/cpufreq_governor.c |  2 +-
 drivers/cpufreq/cpufreq_stats.c    |  1 -
 drivers/macintosh/rack-meter.c     |  2 +-
 fs/proc/stat.c                     | 68 +++++++++++++--------------
 fs/proc/uptime.c                   |  7 +--
 include/linux/jiffies.h            |  2 +
 kernel/sched/cpuacct.c             |  2 +-
 kernel/sched/cputime.c             | 75 +++++++++++++-----------------
 kernel/sched/sched.h               | 12 +++--
 kernel/time/time.c                 | 10 ++++
 kernel/time/timeconst.bc           |  6 +++
 13 files changed, 109 insertions(+), 100 deletions(-)

-- 
2.18.0

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-10-12 22:15 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-07  1:42 [PATCH 4.9 0/4] Fix softirq time accounting issues on 4.9 Ivan Delalande
2018-09-07  1:42 ` [PATCH 4.9 1/4] time: Introduce jiffies64_to_nsecs() Ivan Delalande
2018-09-07  1:42 ` [PATCH 4.9 2/4] sched/cputime: Convert kcpustat to nsecs Ivan Delalande
2018-10-12 14:42   ` Greg Kroah-Hartman
2018-09-07  1:42 ` [PATCH 4.9 3/4] sched/cputime: Increment kcpustat directly on irqtime account Ivan Delalande
2018-09-07  1:42 ` [PATCH 4.9 4/4] sched/cputime: Fix ksoftirqd cputime accounting regression Ivan Delalande
2018-09-13 23:13 ` [PATCH 4.9 0/4] Fix softirq time accounting issues on 4.9 Ivan Delalande
2018-09-14  6:57   ` Greg Kroah-Hartman
2018-10-11 14:11     ` Greg Kroah-Hartman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox