2020-05-11 19:08:31

by Prarit Bhargava

[permalink] [raw]
Subject: [PATCH] intel-speed-select: Fix json perf-profile output output

The 'intel-speed-select -f json perf-profile get-lock-status' command
outputs the package, die, and cpu data as separate fields.

ex)

"package-0": {
"die-0": {
"cpu-0": {

Commit 74062363f855 ("tools/power/x86/intel-speed-select: Avoid duplicate Package strings for json") prettied this output so that it is a single line for
some json output commands and the same should be done for other commands.

Output package, die, and cpu info in a single line when using json output.

Signed-off-by: Prarit Bhargava <[email protected]>
Cc: Srinivas Pandruvada <[email protected]>
Cc: [email protected]
---
.../x86/intel-speed-select/isst-display.c | 26 +++++++++++++------
1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/tools/power/x86/intel-speed-select/isst-display.c b/tools/power/x86/intel-speed-select/isst-display.c
index f6e2ce181123..e105fece47b6 100644
--- a/tools/power/x86/intel-speed-select/isst-display.c
+++ b/tools/power/x86/intel-speed-select/isst-display.c
@@ -316,21 +316,31 @@ void isst_ctdp_display_core_info(int cpu, FILE *outf, char *prefix,
{
char header[256];
char value[256];
+ int level = 1;
+
+ if (out_format_is_json()) {
+ snprintf(header, sizeof(header), "package-%d:die-%d:cpu-%d",
+ get_physical_package_id(cpu), get_physical_die_id(cpu),
+ cpu);
+ format_and_print(outf, level++, header, NULL);
+ } else {
+ snprintf(header, sizeof(header), "package-%d",
+ get_physical_package_id(cpu));
+ format_and_print(outf, level++, header, NULL);
+ snprintf(header, sizeof(header), "die-%d",
+ get_physical_die_id(cpu));
+ format_and_print(outf, level++, header, NULL);
+ snprintf(header, sizeof(header), "cpu-%d", cpu);
+ format_and_print(outf, level++, header, NULL);
+ }

- snprintf(header, sizeof(header), "package-%d",
- get_physical_package_id(cpu));
- format_and_print(outf, 1, header, NULL);
- snprintf(header, sizeof(header), "die-%d", get_physical_die_id(cpu));
- format_and_print(outf, 2, header, NULL);
- snprintf(header, sizeof(header), "cpu-%d", cpu);
- format_and_print(outf, 3, header, NULL);
if (str0 && !val)
snprintf(value, sizeof(value), "%s", str0);
else if (str1 && val)
snprintf(value, sizeof(value), "%s", str1);
else
snprintf(value, sizeof(value), "%u", val);
- format_and_print(outf, 4, prefix, value);
+ format_and_print(outf, level, prefix, value);

format_and_print(outf, 1, NULL, NULL);
}
--
2.18.4


2020-05-15 19:59:51

by srinivas pandruvada

[permalink] [raw]
Subject: Re: [PATCH] intel-speed-select: Fix json perf-profile output output

On Mon, 2020-05-11 at 15:06 -0400, Prarit Bhargava wrote:

I prefer prefix as: "tools/power/x86/intel-speed-select" instead of
just "intel-speed-select".

Fixed and applied.

Thanks,
Srinivas

> The 'intel-speed-select -f json perf-profile get-lock-status' command
> outputs the package, die, and cpu data as separate fields.
>
> ex)
>
> "package-0": {
> "die-0": {
> "cpu-0": {
>
> Commit 74062363f855 ("tools/power/x86/intel-speed-select: Avoid
> duplicate Package strings for json") prettied this output so that it
> is a single line for
> some json output commands and the same should be done for other
> commands.
>
> Output package, die, and cpu info in a single line when using json
> output.
>
> Signed-off-by: Prarit Bhargava <[email protected]>
> Cc: Srinivas Pandruvada <[email protected]>
> Cc: [email protected]
> ---
> .../x86/intel-speed-select/isst-display.c | 26 +++++++++++++--
> ----
> 1 file changed, 18 insertions(+), 8 deletions(-)
>
> diff --git a/tools/power/x86/intel-speed-select/isst-display.c
> b/tools/power/x86/intel-speed-select/isst-display.c
> index f6e2ce181123..e105fece47b6 100644
> --- a/tools/power/x86/intel-speed-select/isst-display.c
> +++ b/tools/power/x86/intel-speed-select/isst-display.c
> @@ -316,21 +316,31 @@ void isst_ctdp_display_core_info(int cpu, FILE
> *outf, char *prefix,
> {
> char header[256];
> char value[256];
> + int level = 1;
> +
> + if (out_format_is_json()) {
> + snprintf(header, sizeof(header), "package-%d:die-
> %d:cpu-%d",
> + get_physical_package_id(cpu),
> get_physical_die_id(cpu),
> + cpu);
> + format_and_print(outf, level++, header, NULL);
> + } else {
> + snprintf(header, sizeof(header), "package-%d",
> + get_physical_package_id(cpu));
> + format_and_print(outf, level++, header, NULL);
> + snprintf(header, sizeof(header), "die-%d",
> + get_physical_die_id(cpu));
> + format_and_print(outf, level++, header, NULL);
> + snprintf(header, sizeof(header), "cpu-%d", cpu);
> + format_and_print(outf, level++, header, NULL);
> + }
>
> - snprintf(header, sizeof(header), "package-%d",
> - get_physical_package_id(cpu));
> - format_and_print(outf, 1, header, NULL);
> - snprintf(header, sizeof(header), "die-%d",
> get_physical_die_id(cpu));
> - format_and_print(outf, 2, header, NULL);
> - snprintf(header, sizeof(header), "cpu-%d", cpu);
> - format_and_print(outf, 3, header, NULL);
> if (str0 && !val)
> snprintf(value, sizeof(value), "%s", str0);
> else if (str1 && val)
> snprintf(value, sizeof(value), "%s", str1);
> else
> snprintf(value, sizeof(value), "%u", val);
> - format_and_print(outf, 4, prefix, value);
> + format_and_print(outf, level, prefix, value);
>
> format_and_print(outf, 1, NULL, NULL);
> }