OSDN Git Service

perf config: Add stat.big-num support
authorPaul A. Clarke <pc@us.ibm.com>
Wed, 20 May 2020 16:23:35 +0000 (11:23 -0500)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 28 May 2020 13:03:27 +0000 (10:03 -0300)
Add support for new "stat.big-num" boolean option.

This allows a user to set a default for "--no-big-num" for "perf stat"
commands.

--
  $ perf config stat.big-num
  $ perf stat --event cycles /bin/true

   Performance counter stats for '/bin/true':

             778,849      cycles
  [...]
  $ perf config stat.big-num=false
  $ perf config stat.big-num
  stat.big-num=false
  $ perf stat --event cycles /bin/true

   Performance counter stats for '/bin/true':

              769622      cycles
  [...]
--

There is an interaction with "--field-separator" that must be
accommodated, such that specifying "--big-num --field-separator={x}"
still reports an invalid combination of options.

Documentation for perf-config and perf-stat updated.

Signed-off-by: Paul Clarke <pc@us.ibm.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Link: http://lore.kernel.org/lkml/1589991815-17951-1-git-send-email-pc@us.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/Documentation/perf-config.txt
tools/perf/Documentation/perf-stat.txt
tools/perf/builtin-stat.c
tools/perf/util/config.c
tools/perf/util/stat.h

index f16d8a7..c7d3df5 100644 (file)
@@ -667,6 +667,11 @@ convert.*::
                Limit the size of ordered_events queue, so we could control
                allocation size of perf data files without proper finished
                round events.
+stat.*::
+
+       stat.big-num::
+               (boolean) Change the default for "--big-num". To make
+               "--no-big-num" the default, set "stat.big-num=false".
 
 intel-pt.*::
 
index 3fb5028..7708128 100644 (file)
@@ -93,7 +93,9 @@ report::
 
 -B::
 --big-num::
-        print large numbers with thousands' separators according to locale
+        print large numbers with thousands' separators according to locale.
+       Enabled by default. Use "--no-big-num" to disable.
+       Default setting can be changed with "perf config stat.big-num=false".
 
 -C::
 --cpu=::
index c43ba60..377e575 100644 (file)
@@ -885,10 +885,16 @@ static void sig_atexit(void)
        kill(getpid(), signr);
 }
 
+void perf_stat__set_big_num(int set)
+{
+       stat_config.big_num = (set != 0);
+}
+
 static int stat__set_big_num(const struct option *opt __maybe_unused,
                             const char *s __maybe_unused, int unset)
 {
        big_num_opt = unset ? 0 : 1;
+       perf_stat__set_big_num(!unset);
        return 0;
 }
 
index ef38eba..8e65f1f 100644 (file)
@@ -17,6 +17,7 @@
 #include "util/event.h"  /* proc_map_timeout */
 #include "util/hist.h"  /* perf_hist_config */
 #include "util/llvm-utils.h"   /* perf_llvm_config */
+#include "util/stat.h"  /* perf_stat__set_big_num */
 #include "build-id.h"
 #include "debug.h"
 #include "config.h"
@@ -452,6 +453,15 @@ static int perf_ui_config(const char *var, const char *value)
        return 0;
 }
 
+static int perf_stat_config(const char *var, const char *value)
+{
+       if (!strcmp(var, "stat.big-num"))
+               perf_stat__set_big_num(perf_config_bool(var, value));
+
+       /* Add other config variables here. */
+       return 0;
+}
+
 int perf_default_config(const char *var, const char *value,
                        void *dummy __maybe_unused)
 {
@@ -473,6 +483,9 @@ int perf_default_config(const char *var, const char *value,
        if (strstarts(var, "buildid."))
                return perf_buildid_config(var, value);
 
+       if (strstarts(var, "stat."))
+               return perf_stat_config(var, value);
+
        /* Add other config variables here. */
        return 0;
 }
index a5604a2..ddf188c 100644 (file)
@@ -133,6 +133,8 @@ struct perf_stat_config {
        struct rblist            metric_events;
 };
 
+void perf_stat__set_big_num(int set);
+
 void update_stats(struct stats *stats, u64 val);
 double avg_stats(struct stats *stats);
 double stddev_stats(struct stats *stats);