[PATCH v2] perf c2c: Use stdio interface if slang is not supported

Leo Yan posted 1 patch 3 years, 11 months ago
tools/perf/builtin-c2c.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
[PATCH v2] perf c2c: Use stdio interface if slang is not supported
Posted by Leo Yan 3 years, 11 months ago
If slang lib is not installed on the system, perf c2c tool disables
TUI mode and roll back to use stdio mode;  but the flag 'c2c.use_stdio'
is missed to set true and thus it wrongly applies UI quirks in the
function ui_quirks().

This commit forces to use stdio interface if slang is not supported,
and it can avoid to apply the UI quirks and show the correct metric
header.

Before:

=================================================
      Shared Cache Line Distribution Pareto
=================================================
  -------------------------------------------------------------------------------
      0        0        0       99        0        0        0      0xaaaac17d6000
  -------------------------------------------------------------------------------
    0.00%    0.00%    6.06%    0.00%    0.00%    0.00%   0x20   N/A       0      0xaaaac17c25ac         0         0        43       375    18469         2  [.] 0x00000000000025ac  memstress         memstress[25ac]   0
    0.00%    0.00%   93.94%    0.00%    0.00%    0.00%   0x29   N/A       0      0xaaaac17c3e88         0         0       173       180      135         2  [.] 0x0000000000003e88  memstress         memstress[3e88]   0

After:

=================================================
      Shared Cache Line Distribution Pareto
=================================================
  -------------------------------------------------------------------------------
      0        0        0       99        0        0        0      0xaaaac17d6000
  -------------------------------------------------------------------------------
           0.00%    0.00%    6.06%    0.00%    0.00%    0.00%                0x20   N/A       0      0xaaaac17c25ac         0         0        43       375    18469         2  [.] 0x00000000000025ac  memstress         memstress[25ac]   0
           0.00%    0.00%   93.94%    0.00%    0.00%    0.00%                0x29   N/A       0      0xaaaac17c3e88         0         0       173       180      135         2  [.] 0x0000000000003e88  memstress         memstress[3e88]   0

Fixes: 5a1a99cd2e4e ("perf c2c report: Add main TUI browser")
Reported-by: Joe Mario <jmario@redhat.com>
Signed-off-by: Leo Yan <leo.yan@linaro.org>
---

Changes from v1:
* Added fixes tag;
* Added reported tag from Joe.

 tools/perf/builtin-c2c.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c
index c8230c48125f..80b525c065ed 100644
--- a/tools/perf/builtin-c2c.c
+++ b/tools/perf/builtin-c2c.c
@@ -2801,9 +2801,7 @@ static int perf_c2c__report(int argc, const char **argv)
 		   "the input file to process"),
 	OPT_INCR('N', "node-info", &c2c.node_info,
 		 "show extra node info in report (repeat for more info)"),
-#ifdef HAVE_SLANG_SUPPORT
 	OPT_BOOLEAN(0, "stdio", &c2c.use_stdio, "Use the stdio interface"),
-#endif
 	OPT_BOOLEAN(0, "stats", &c2c.stats_only,
 		    "Display only statistic tables (implies --stdio)"),
 	OPT_BOOLEAN(0, "full-symbols", &c2c.symbol_full,
@@ -2833,6 +2831,10 @@ static int perf_c2c__report(int argc, const char **argv)
 	if (argc)
 		usage_with_options(report_c2c_usage, options);
 
+#ifndef HAVE_SLANG_SUPPORT
+	c2c.use_stdio = true;
+#endif
+
 	if (c2c.stats_only)
 		c2c.use_stdio = true;
 
-- 
2.25.1
Re: [PATCH v2] perf c2c: Use stdio interface if slang is not supported
Posted by Arnaldo Carvalho de Melo 3 years, 11 months ago
Em Thu, May 26, 2022 at 10:54:00PM +0800, Leo Yan escreveu:
> If slang lib is not installed on the system, perf c2c tool disables
> TUI mode and roll back to use stdio mode;  but the flag 'c2c.use_stdio'
> is missed to set true and thus it wrongly applies UI quirks in the
> function ui_quirks().
> 
> This commit forces to use stdio interface if slang is not supported,
> and it can avoid to apply the UI quirks and show the correct metric
> header.
> 
> Before:
> 
> =================================================
>       Shared Cache Line Distribution Pareto
> =================================================
>   -------------------------------------------------------------------------------
>       0        0        0       99        0        0        0      0xaaaac17d6000
>   -------------------------------------------------------------------------------
>     0.00%    0.00%    6.06%    0.00%    0.00%    0.00%   0x20   N/A       0      0xaaaac17c25ac         0         0        43       375    18469         2  [.] 0x00000000000025ac  memstress         memstress[25ac]   0
>     0.00%    0.00%   93.94%    0.00%    0.00%    0.00%   0x29   N/A       0      0xaaaac17c3e88         0         0       173       180      135         2  [.] 0x0000000000003e88  memstress         memstress[3e88]   0
> 
> After:
> 
> =================================================
>       Shared Cache Line Distribution Pareto
> =================================================
>   -------------------------------------------------------------------------------
>       0        0        0       99        0        0        0      0xaaaac17d6000
>   -------------------------------------------------------------------------------
>            0.00%    0.00%    6.06%    0.00%    0.00%    0.00%                0x20   N/A       0      0xaaaac17c25ac         0         0        43       375    18469         2  [.] 0x00000000000025ac  memstress         memstress[25ac]   0
>            0.00%    0.00%   93.94%    0.00%    0.00%    0.00%                0x29   N/A       0      0xaaaac17c3e88         0         0       173       180      135         2  [.] 0x0000000000003e88  memstress         memstress[3e88]   0
> 
> Fixes: 5a1a99cd2e4e ("perf c2c report: Add main TUI browser")
> Reported-by: Joe Mario <jmario@redhat.com>
> Signed-off-by: Leo Yan <leo.yan@linaro.org>

Thanks, applied.

- Arnaldo

> ---
> 
> Changes from v1:
> * Added fixes tag;
> * Added reported tag from Joe.
> 
>  tools/perf/builtin-c2c.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c
> index c8230c48125f..80b525c065ed 100644
> --- a/tools/perf/builtin-c2c.c
> +++ b/tools/perf/builtin-c2c.c
> @@ -2801,9 +2801,7 @@ static int perf_c2c__report(int argc, const char **argv)
>  		   "the input file to process"),
>  	OPT_INCR('N', "node-info", &c2c.node_info,
>  		 "show extra node info in report (repeat for more info)"),
> -#ifdef HAVE_SLANG_SUPPORT
>  	OPT_BOOLEAN(0, "stdio", &c2c.use_stdio, "Use the stdio interface"),
> -#endif
>  	OPT_BOOLEAN(0, "stats", &c2c.stats_only,
>  		    "Display only statistic tables (implies --stdio)"),
>  	OPT_BOOLEAN(0, "full-symbols", &c2c.symbol_full,
> @@ -2833,6 +2831,10 @@ static int perf_c2c__report(int argc, const char **argv)
>  	if (argc)
>  		usage_with_options(report_c2c_usage, options);
>  
> +#ifndef HAVE_SLANG_SUPPORT
> +	c2c.use_stdio = true;
> +#endif
> +
>  	if (c2c.stats_only)
>  		c2c.use_stdio = true;
>  
> -- 
> 2.25.1

-- 

- Arnaldo