From: "Gautham R. Shenoy" <ego@linux.vnet.ibm.com>
To: Nathan Lynch <nathanl@linux.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>,
Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>,
"Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>,
Tyrel Datwyler <tyreld@linux.ibm.com>
Cc: "Gautham R. Shenoy" <ego@linux.vnet.ibm.com>,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
Subject: [PATCH v2 0/5] Track and expose idle PURR and SPURR ticks
Date: Fri, 21 Feb 2020 10:48:29 +0530 [thread overview]
Message-ID: <1582262314-8319-1-git-send-email-ego@linux.vnet.ibm.com> (raw)
From: "Gautham R. Shenoy" <ego@linux.vnet.ibm.com>
Hi,
This is the second version of the patches to track and expose idle
PURR and SPURR ticks. These patches are required by tools such as
lparstat to compute system utilization for capacity planning purposes.
v1 can be found here: https://lore.kernel.org/patchwork/cover/1159341/
The key changes from v1 are
- The sysfs reads of idle PURR and SPURR now send an
smp_call_function to the target CPU in order to read the most
recent value of idle PURR and SPURR. This is required if the
target CPU was idle for a long duration, in which case the
cycles corresponding to its latest idle duration would not be
updated in the variable tracking idle PURR/SPURR. Thus merely
reading the variable would not reflect the most accurate idle
PURR/SPURR ticks.
- Ensured that even when idle PURR/SPURR values are read in an
interrupt context in-between idle_loop_prolog() and
idle_loop_epilog(), we return the value that includes the cycles
spent in the most recent idle period.
- The sysfs files for idle_purr and idle_spurr are created only
when the FW_FEATURE_LPAR is enabled (the earlier version was
checking for FW_FEATURE_SPLPAR)
Motivation:
===========
On PSeries LPARs, the data centers planners desire a more accurate
view of system utilization per resource such as CPU to plan the system
capacity requirements better. Such accuracy can be obtained by reading
PURR/SPURR registers for CPU resource utilization.
Tools such as lparstat which are used to compute the utilization need
to know [S]PURR ticks when the cpu was busy or idle. The [S]PURR
counters are already exposed through sysfs. We already account for
PURR ticks when we go to idle so that we can update the VPA area. This
patchset extends support to account for SPURR ticks when idle, and
expose both via per-cpu sysfs files.
These patches are required for enhancement to the lparstat utility
that compute the CPU utilization based on PURR and SPURR which can be
found here :
https://groups.google.com/forum/#!topic/powerpc-utils-devel/fYRo69xO9r4
With the patches, when lparstat is run on a LPAR running CPU-Hogs,
=========================================================================
$sudo ./src/lparstat -E 1 3
System Configuration
type=Dedicated mode=Capped smt=8 lcpu=2 mem=4834176 kB cpus=0 ent=2.00
---Actual--- -Normalized-
%busy %idle Frequency %busy %idle
------ ------ ------------- ------ ------
99.99 0.00 3.35GHz[111%] 110.99 0.00
100.00 0.00 3.35GHz[111%] 111.00 0.00
100.00 0.00 3.35GHz[111%] 111.00 0.00
=========================================================================
When lparstat is run on an LPAR that is idle,
=========================================================================
$ sudo ./src/lparstat -E 1 3
System Configuration
type=Dedicated mode=Capped smt=8 lcpu=2 mem=4834176 kB cpus=0 ent=2.00
---Actual--- -Normalized-
%busy %idle Frequency %busy %idle
------ ------ ------------- ------ ------
0.09 99.91 2.11GHz[ 70%] 0.11 69.90
0.32 99.68 2.17GHz[ 72%] 0.25 71.75
0.56 99.44 2.18GHz[ 72%] 0.42 71.58
=========================================================================
Gautham R. Shenoy (5):
powerpc: Move idle_loop_prolog()/epilog() functions to header file
powerpc/idle: Add accessor function to always read latest idle PURR
powerpc/pseries: Account for SPURR ticks on idle CPUs
powerpc/sysfs: Show idle_purr and idle_spurr for every CPU
Documentation: Document sysfs interfaces purr, spurr, idle_purr,
idle_spurr
Documentation/ABI/testing/sysfs-devices-system-cpu | 39 ++++++++++
arch/powerpc/include/asm/idle.h | 88 ++++++++++++++++++++++
arch/powerpc/kernel/sysfs.c | 54 ++++++++++++-
arch/powerpc/platforms/pseries/setup.c | 8 +-
drivers/cpuidle/cpuidle-pseries.c | 39 ++--------
5 files changed, 191 insertions(+), 37 deletions(-)
create mode 100644 arch/powerpc/include/asm/idle.h
--
1.9.4
next reply other threads:[~2020-02-21 5:24 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-21 5:18 Gautham R. Shenoy [this message]
2020-02-21 5:18 ` [PATCH v2 1/5] powerpc: Move idle_loop_prolog()/epilog() functions to header file Gautham R. Shenoy
2020-02-21 15:03 ` Nathan Lynch
2020-02-24 4:55 ` Gautham R Shenoy
2020-03-06 17:06 ` Nathan Lynch
2020-02-21 5:18 ` [PATCH v2 2/5] powerpc/idle: Add accessor function to always read latest idle PURR Gautham R. Shenoy
2020-02-21 5:18 ` [PATCH v2 3/5] powerpc/pseries: Account for SPURR ticks on idle CPUs Gautham R. Shenoy
2020-02-21 16:47 ` Nathan Lynch
2020-02-24 5:05 ` Gautham R Shenoy
2020-02-21 5:18 ` [PATCH v2 4/5] powerpc/sysfs: Show idle_purr and idle_spurr for every CPU Gautham R. Shenoy
2020-02-21 16:50 ` Nathan Lynch
2020-02-24 5:14 ` Gautham R Shenoy
2020-02-25 10:20 ` Naveen N. Rao
2020-03-06 17:03 ` Nathan Lynch
2020-03-06 17:35 ` Naveen N. Rao
2020-02-21 5:18 ` [PATCH v2 5/5] Documentation: Document sysfs interfaces purr, spurr, idle_purr, idle_spurr Gautham R. Shenoy
2020-02-21 16:55 ` Nathan Lynch
2020-02-24 5:15 ` Gautham R Shenoy
2020-02-24 4:17 ` [PATCH v2 0/5] Track and expose idle PURR and SPURR ticks Kamalesh Babulal
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=1582262314-8319-1-git-send-email-ego@linux.vnet.ibm.com \
--to=ego@linux.vnet.ibm.com \
--cc=kamalesh@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=nathanl@linux.ibm.com \
--cc=naveen.n.rao@linux.vnet.ibm.com \
--cc=svaidy@linux.vnet.ibm.com \
--cc=tyreld@linux.ibm.com \
/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).