mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Prarit Bhargava <prarit@redhat.com>
To: platform-driver-x86@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Prarit Bhargava <prarit@redhat.com>,
	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Subject: [PATCH 2/2] intel-speed-select: Display turbo frequencies in a table
Date: Mon, 23 Sep 2019 09:16:38 -0400	[thread overview]
Message-ID: <20190923131638.6668-3-prarit@redhat.com> (raw)
In-Reply-To: <20190923131638.6668-1-prarit@redhat.com>

The output of turbo frequencies is also long (each bucket has
3 lines and the headers).  This can be shrunk down into a table that is
easier to consume for both scripts and humans.

Display the turbo and clip frequencies in a table.

Signed-off-by: Prarit Bhargava <prarit@redhat.com>
Cc: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 .../x86/intel-speed-select/isst-display.c     | 116 ++++++++++--------
 1 file changed, 63 insertions(+), 53 deletions(-)

diff --git a/tools/power/x86/intel-speed-select/isst-display.c b/tools/power/x86/intel-speed-select/isst-display.c
index 9b0ae0831a60..16843e0f78f0 100644
--- a/tools/power/x86/intel-speed-select/isst-display.c
+++ b/tools/power/x86/intel-speed-select/isst-display.c
@@ -213,6 +213,52 @@ static void _isst_pbf_display_information(int cpu, FILE *outf, int level,
 	format_and_print(outf, disp_level + 1, header, value);
 }
 
+static void _isst_fact_display_frequencies(FILE *outf, int fact_avx, int level,
+					   char *description, int bucket,
+					   int core_count, int sse,
+					   int avx, int avx512)
+{
+	char header[256];
+	int ret;
+	void *header_ptr;
+	int header_size;
+
+	header_ptr = header;
+	if (core_count > 0)
+		ret = snprintf(header_ptr, sizeof(header), "%s%d %6d ",
+			       description, bucket, core_count);
+	else
+		ret = snprintf(header_ptr, sizeof(header), "%s%6s ",
+			       description, "-");
+
+
+	header_ptr += ret;
+	header_size = header_ptr - (void *) header;
+	if (fact_avx & 0x01)
+		ret = snprintf(header_ptr, header_size, "%12d ",
+			       sse * DISP_FREQ_MULTIPLIER);
+	else
+		ret = snprintf(header_ptr, header_size, "%12s ", "- ");
+
+	header_ptr += ret;
+	header_size = header_ptr - (void *) header;
+	if (fact_avx & 0x02)
+		ret = snprintf(header_ptr, header_size, "%12d ",
+			       avx * DISP_FREQ_MULTIPLIER);
+	else
+		ret = snprintf(header_ptr, header_size, "%12s ", "- ");
+
+	header_ptr += ret;
+	header_size = header_ptr - (void *) header;
+	if (fact_avx & 0x04)
+		ret = snprintf(header_ptr, header_size, "%12d",
+			       avx512 * DISP_FREQ_MULTIPLIER);
+	else
+		ret = snprintf(header_ptr, header_size, "%12s", "-");
+
+	format_and_print(outf, level + 1, header, NULL);
+}
+
 static void _isst_fact_display_information(int cpu, FILE *outf, int level,
 					   int fact_bucket, int fact_avx,
 					   struct isst_fact_info *fact_info,
@@ -220,11 +266,14 @@ static void _isst_fact_display_information(int cpu, FILE *outf, int level,
 {
 	struct isst_fact_bucket_info *bucket_info = fact_info->bucket_info;
 	char header[256];
-	char value[256];
 	int j;
 
 	snprintf(header, sizeof(header), "speed-select-turbo-freq");
 	format_and_print(outf, base_level, header, NULL);
+	snprintf(header, sizeof(header),"%11s %s %s %s %s",
+		 "", "core-count", "max-sse(MHz)" , "max-avx2(MHz)", "max-avx512(MHz)");
+	format_and_print(outf, base_level + 1, header, NULL);
+
 	for (j = 0; j < ISST_FACT_MAX_BUCKETS; ++j) {
 		if (fact_bucket != 0xff && fact_bucket != j)
 			continue;
@@ -232,59 +281,20 @@ static void _isst_fact_display_information(int cpu, FILE *outf, int level,
 		if (!bucket_info[j].high_priority_cores_count)
 			break;
 
-		snprintf(header, sizeof(header), "bucket-%d", j);
-		format_and_print(outf, base_level + 1, header, NULL);
-
-		snprintf(header, sizeof(header), "high-priority-cores-count");
-		snprintf(value, sizeof(value), "%d",
-			 bucket_info[j].high_priority_cores_count);
-		format_and_print(outf, base_level + 2, header, value);
-
-		if (fact_avx & 0x01) {
-			snprintf(header, sizeof(header),
-				 "high-priority-max-frequency(MHz)");
-			snprintf(value, sizeof(value), "%d",
-				 bucket_info[j].sse_trl * DISP_FREQ_MULTIPLIER);
-			format_and_print(outf, base_level + 2, header, value);
-		}
-
-		if (fact_avx & 0x02) {
-			snprintf(header, sizeof(header),
-				 "high-priority-max-avx2-frequency(MHz)");
-			snprintf(value, sizeof(value), "%d",
-				 bucket_info[j].avx_trl * DISP_FREQ_MULTIPLIER);
-			format_and_print(outf, base_level + 2, header, value);
-		}
-
-		if (fact_avx & 0x04) {
-			snprintf(header, sizeof(header),
-				 "high-priority-max-avx512-frequency(MHz)");
-			snprintf(value, sizeof(value), "%d",
-				 bucket_info[j].avx512_trl *
-					 DISP_FREQ_MULTIPLIER);
-			format_and_print(outf, base_level + 2, header, value);
-		}
+		_isst_fact_display_frequencies(
+			outf, fact_avx, base_level + 1, "bucket-", j,
+			bucket_info[j].high_priority_cores_count,
+			bucket_info[j].sse_trl,
+			bucket_info[j].avx_trl,
+			bucket_info[j].avx512_trl);
 	}
-	snprintf(header, sizeof(header),
-		 "speed-select-turbo-freq-clip-frequencies");
-	format_and_print(outf, base_level + 1, header, NULL);
-	snprintf(header, sizeof(header), "low-priority-max-frequency(MHz)");
-	snprintf(value, sizeof(value), "%d",
-		 fact_info->lp_clipping_ratio_license_sse *
-			 DISP_FREQ_MULTIPLIER);
-	format_and_print(outf, base_level + 2, header, value);
-	snprintf(header, sizeof(header),
-		 "low-priority-max-avx2-frequency(MHz)");
-	snprintf(value, sizeof(value), "%d",
-		 fact_info->lp_clipping_ratio_license_avx2 *
-			 DISP_FREQ_MULTIPLIER);
-	format_and_print(outf, base_level + 2, header, value);
-	snprintf(header, sizeof(header),
-		 "low-priority-max-avx512-frequency(MHz)");
-	snprintf(value, sizeof(value), "%d",
-		 fact_info->lp_clipping_ratio_license_avx512 *
-			 DISP_FREQ_MULTIPLIER);
-	format_and_print(outf, base_level + 2, header, value);
+
+	_isst_fact_display_frequencies(
+			outf, fact_avx, base_level + 1, "clip-freq", 1,
+			-1, /* no core-count */
+			fact_info->lp_clipping_ratio_license_sse,
+			fact_info->lp_clipping_ratio_license_avx2,
+			fact_info->lp_clipping_ratio_license_avx512);
 }
 
 static void isst_turbo_ratio_limits(FILE *outf, char *header_name,
-- 
2.21.0


  parent reply	other threads:[~2019-09-23 13:16 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-23 13:16 [PATCH 0/2] intel-speed-select: Convert output to tables Prarit Bhargava
2019-09-23 13:16 ` [PATCH 1/2] intel-speed-select: Display turbo-ratio-limits as a table Prarit Bhargava
2019-09-23 13:16 ` Prarit Bhargava [this message]
2019-09-23 18:18 ` [PATCH 0/2] intel-speed-select: Convert output to tables Srinivas Pandruvada

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=20190923131638.6668-3-prarit@redhat.com \
    --to=prarit@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=srinivas.pandruvada@linux.intel.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

Powered by JetHome