From: Shivani Nittor <shivani@linux.ibm.com>
To: acme@kernel.org, jolsa@kernel.org, adrian.hunter@intel.com,
mpetlan@redhat.com, tmricht@linux.ibm.com, maddy@linux.ibm.com,
irogers@google.com, namhyung@kernel.org, ravi.bangoria@amd.com
Cc: linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
atrajeev@linux.ibm.com, hbathini@linux.vnet.ibm.com,
Tejas.Manhas1@ibm.com, Tanushree.Shah@ibm.com,
shivani@linux.ibm.com
Subject: [PATCH v2] perf scripts: Add configurable sorting option to powerpc-hcalls
Date: Wed, 17 Jun 2026 20:10:11 +0530 [thread overview]
Message-ID: <20260617144011.17359-1-shivani@linux.ibm.com> (raw)
The powerpc-hcalls.py script currently prints hypercall
statistics in a fixed sort order based on the number of
hcall occurrences, making it difficult to analyze hcalls
from different execution characteristics.
Add support for runtime-configurable sorting so users
can order hypercall statistics by count, minimum
latency, maximum latency, or average latency using
a --sort option.
Parse arguments through sys.argv to support perf script
argument passing semantics.
Example:
perf record -a -e powerpc* sleep 10
perf script -s ./powerpc-hcalls.py -i ./perf.data -- --sort=max
SORT KEY = max
hcall count min(ns) max(ns) avg(ns)
H_SEND_LOGICAL_LAN 47 7380 40148 8739
H_VIO_SIGNAL 706 880 17454 1911
H_RANDOM 1 15176 15176 15176
H_PUT_TCE_INDIRECT 4 3032 10444 4956
H_ADD_LOGICAL_LAN_BUFFER 363 1250 8716 1534
H_SEND_CRQ 8 2086 6846 3044
H_PUT_TCE 9 1284 4932 2646
H_STUFF_TCE 13 1620 3962 2358
This makes it easier to identify frequently occurring
or high-latency hypercalls depending on the analysis
being performed.
Signed-off-by: Shivani Nittor <shivani@linux.ibm.com>
---
Changelog:
v1 -> v2
- Add bounds check for --sort argument handling
- Prevent IndexError when sort key is omitted
---
tools/perf/scripts/python/powerpc-hcalls.py | 38 ++++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
diff --git a/tools/perf/scripts/python/powerpc-hcalls.py b/tools/perf/scripts/python/powerpc-hcalls.py
index 8b78dc790adb..e5b0c1bee65f 100644
--- a/tools/perf/scripts/python/powerpc-hcalls.py
+++ b/tools/perf/scripts/python/powerpc-hcalls.py
@@ -25,6 +25,7 @@ from Util import *
# } ...
# }
output = {}
+sort_key = 'count'
# d_enter: {
# cpu: {
@@ -158,10 +159,45 @@ def hcall_table_lookup(opcode):
print_ptrn = '%-28s%10s%10s%10s%10s'
+def sort_output(opcode):
+ stats = output[opcode]
+
+ if sort_key == 'min':
+ return stats['min']
+ if sort_key == 'max':
+ return stats['max']
+ if sort_key == 'avg':
+ return stats['time'] // stats['cnt']
+
+ return stats['cnt']
+
+def trace_begin():
+ global sort_key
+
+ i = 1
+ while i < len(sys.argv):
+ arg = sys.argv[i]
+
+ if arg == '-s' or arg == '--sort':
+ if i + 1 >= len(sys.argv):
+ print("Error: -s/--sort requires a sort key argument")
+ sys.exit(1)
+ sort_key = sys.argv[i + 1]
+ i += 2
+ continue
+
+ if arg.startswith('--sort='):
+ sort_key = arg.split('=', 1)[1]
+
+ i += 1
+
+ print("SORT KEY =", sort_key)
+
def trace_end():
print(print_ptrn % ('hcall', 'count', 'min(ns)', 'max(ns)', 'avg(ns)'))
print('-' * 68)
- for opcode in output:
+ for opcode in sorted(output, key = sort_output,
+ reverse=True):
h_name = hcall_table_lookup(opcode)
time = output[opcode]['time']
cnt = output[opcode]['cnt']
--
2.54.0
next reply other threads:[~2026-06-17 14:40 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-17 14:40 Shivani Nittor [this message]
2026-06-17 14:46 ` [PATCH v2] perf scripts: Add configurable sorting option to powerpc-hcalls sashiko-bot
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=20260617144011.17359-1-shivani@linux.ibm.com \
--to=shivani@linux.ibm.com \
--cc=Tanushree.Shah@ibm.com \
--cc=Tejas.Manhas1@ibm.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=atrajeev@linux.ibm.com \
--cc=hbathini@linux.vnet.ibm.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=mpetlan@redhat.com \
--cc=namhyung@kernel.org \
--cc=ravi.bangoria@amd.com \
--cc=tmricht@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.