From: Tom Hromatka <tom.hromatka@oracle.com>
To: tom.hromatka@oracle.com, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, fweisbec@gmail.com,
tglx@linutronix.de, mingo@kernel.org, adobriyan@gmail.com
Subject: [PATCH v2 2/2] /proc/stat: Simplify iowait and idle calculations when cpu is offline
Date: Tue, 15 Sep 2020 13:36:27 -0600 [thread overview]
Message-ID: <20200915193627.85423-3-tom.hromatka@oracle.com> (raw)
In-Reply-To: <20200915193627.85423-1-tom.hromatka@oracle.com>
Prior to this commit, the cpu idle and iowait data in /proc/stat used
different data sources based upon whether the CPU was online or not.
This would cause spikes in the cpu idle and iowait data.
This patch uses the same data source, get_cpu_{idle,iowait}_time_us(),
whether the CPU is online or not.
This patch and the preceding patch, "tick-sched: Do not clear the
iowait and idle times", ensure that the cpu idle and iowait data
are always increasing.
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
---
fs/proc/stat.c | 26 ++------------------------
1 file changed, 2 insertions(+), 24 deletions(-)
diff --git a/fs/proc/stat.c b/fs/proc/stat.c
index 46b3293015fe..198f3c50cb91 100644
--- a/fs/proc/stat.c
+++ b/fs/proc/stat.c
@@ -47,34 +47,12 @@ static u64 get_iowait_time(struct kernel_cpustat *kcs, int cpu)
static u64 get_idle_time(struct kernel_cpustat *kcs, int cpu)
{
- u64 idle, idle_usecs = -1ULL;
-
- if (cpu_online(cpu))
- idle_usecs = get_cpu_idle_time_us(cpu, NULL);
-
- if (idle_usecs == -1ULL)
- /* !NO_HZ or cpu offline so we can rely on cpustat.idle */
- idle = kcs->cpustat[CPUTIME_IDLE];
- else
- idle = idle_usecs * NSEC_PER_USEC;
-
- return idle;
+ return get_cpu_idle_time_us(cpu, NULL) * NSEC_PER_USEC;
}
static u64 get_iowait_time(struct kernel_cpustat *kcs, int cpu)
{
- u64 iowait, iowait_usecs = -1ULL;
-
- if (cpu_online(cpu))
- iowait_usecs = get_cpu_iowait_time_us(cpu, NULL);
-
- if (iowait_usecs == -1ULL)
- /* !NO_HZ or cpu offline so we can rely on cpustat.iowait */
- iowait = kcs->cpustat[CPUTIME_IOWAIT];
- else
- iowait = iowait_usecs * NSEC_PER_USEC;
-
- return iowait;
+ return get_cpu_iowait_time_us(cpu, NULL) * NSEC_PER_USEC;
}
#endif
--
2.25.4
next prev parent reply other threads:[~2020-09-15 19:36 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-15 19:36 [PATCH v2 0/2] iowait and idle fixes in /proc/stat Tom Hromatka
2020-09-15 19:36 ` [PATCH v2 1/2] tick-sched: Do not clear the iowait and idle times Tom Hromatka
2020-09-24 20:41 ` Thomas Gleixner
2020-09-15 19:36 ` Tom Hromatka [this message]
2020-09-24 21:19 ` [PATCH v2 2/2] /proc/stat: Simplify iowait and idle calculations when cpu is offline Thomas Gleixner
-- strict thread matches above, loose matches on Subject: below --
2020-09-28 2:59 Tom Hromatka
2020-09-28 14:09 ` Thomas Gleixner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200915193627.85423-3-tom.hromatka@oracle.com \
--to=tom.hromatka@oracle.com \
--cc=adobriyan@gmail.com \
--cc=fweisbec@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).