From 39cb3fba241a3fa77be3b3065e638aa4d807dae7 Mon Sep 17 00:00:00 2001 Message-Id: <39cb3fba241a3fa77be3b3065e638aa4d807dae7.1587532692.git.kamalesh@linux.vnet.ibm.com> In-Reply-To: References: From: Kamalesh Babulal Date: Tue, 21 Apr 2020 08:06:40 -0500 Subject: [PATCH V4 09/14] lparstat: Add helper to calculate scaled timebase To: powerpc-utils-devel@googlegroups.com Cc: Tyrel Datwyler , Nathan Lynch , Naveen N . Rao , Gautham R . Shenoy , Vasant Hegde Timebase is used to derive system wide CPU utilization, scale it to the number of online cores too like the PURR/SPURR registers values accumulated across all online CPU cores. This helper also scales the timebase register value to the interval passed. Timebase = (Timebase * Elapsed Time) * online cores Signed-off-by: Kamalesh Babulal --- src/lparstat.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/lparstat.c b/src/lparstat.c index 0f9dffc..7628afa 100644 --- a/src/lparstat.c +++ b/src/lparstat.c @@ -294,6 +294,23 @@ int get_time_base() return 0; } +double get_scaled_tb(void) +{ + double elapsed, timebase; + struct sysentry *se; + int online_cores; + + se = get_sysentry("online_cores"); + online_cores = atoi(se->value); + + elapsed = elapsed_time() / 1000000.0; + + se = get_sysentry("timebase"); + timebase = atoi(se->value); + + return (timebase * elapsed) * online_cores; +} + void get_sys_uptime(struct sysentry *unused_se, char *uptime) { FILE *f; -- 2.25.3