perf stat: Define a structure for per-thread shadow stats
authorJin Yao <yao.jin@linux.intel.com>
Tue, 5 Dec 2017 14:03:01 +0000 (22:03 +0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 27 Dec 2017 15:15:42 +0000 (12:15 -0300)
Perf has a set of static variables to record the runtime shadow metrics
stats.

While if we want to record the runtime shadow stats for per-thread, it
will be the limitation. This patch creates a structure and the next
patches will use this structure to update the runtime shadow stats for
per-thread.

Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1512482591-4646-2-git-send-email-yao.jin@linux.intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/stat-shadow.c
tools/perf/util/stat.h

index 57ec22513971f0707714ff9c10efbd6da26fc30d..93aac2788056b79b7a650ba4cf243b64898e8bf1 100644 (file)
@@ -9,17 +9,6 @@
 #include "expr.h"
 #include "metricgroup.h"
 
-enum {
-       CTX_BIT_USER    = 1 << 0,
-       CTX_BIT_KERNEL  = 1 << 1,
-       CTX_BIT_HV      = 1 << 2,
-       CTX_BIT_HOST    = 1 << 3,
-       CTX_BIT_IDLE    = 1 << 4,
-       CTX_BIT_MAX     = 1 << 5,
-};
-
-#define NUM_CTX CTX_BIT_MAX
-
 /*
  * AGGR_GLOBAL: Use CPU 0
  * AGGR_SOCKET: Use first CPU of socket
index eefca5c981fdc4f310c45c79d4bfee348679306a..c685c41f1fb9f1003802561f45c573afcd7489e8 100644 (file)
@@ -5,6 +5,7 @@
 #include <linux/types.h>
 #include <stdio.h>
 #include "xyarray.h"
+#include "rblist.h"
 
 struct stats
 {
@@ -43,6 +44,47 @@ enum aggr_mode {
        AGGR_UNSET,
 };
 
+enum {
+       CTX_BIT_USER    = 1 << 0,
+       CTX_BIT_KERNEL  = 1 << 1,
+       CTX_BIT_HV      = 1 << 2,
+       CTX_BIT_HOST    = 1 << 3,
+       CTX_BIT_IDLE    = 1 << 4,
+       CTX_BIT_MAX     = 1 << 5,
+};
+
+#define NUM_CTX CTX_BIT_MAX
+
+enum stat_type {
+       STAT_NONE = 0,
+       STAT_NSECS,
+       STAT_CYCLES,
+       STAT_STALLED_CYCLES_FRONT,
+       STAT_STALLED_CYCLES_BACK,
+       STAT_BRANCHES,
+       STAT_CACHEREFS,
+       STAT_L1_DCACHE,
+       STAT_L1_ICACHE,
+       STAT_LL_CACHE,
+       STAT_ITLB_CACHE,
+       STAT_DTLB_CACHE,
+       STAT_CYCLES_IN_TX,
+       STAT_TRANSACTION,
+       STAT_ELISION,
+       STAT_TOPDOWN_TOTAL_SLOTS,
+       STAT_TOPDOWN_SLOTS_ISSUED,
+       STAT_TOPDOWN_SLOTS_RETIRED,
+       STAT_TOPDOWN_FETCH_BUBBLES,
+       STAT_TOPDOWN_RECOVERY_BUBBLES,
+       STAT_SMI_NUM,
+       STAT_APERF,
+       STAT_MAX
+};
+
+struct runtime_stat {
+       struct rblist value_list;
+};
+
 struct perf_stat_config {
        enum aggr_mode  aggr_mode;
        bool            scale;
@@ -92,7 +134,6 @@ struct perf_stat_output_ctx {
        bool force_header;
 };
 
-struct rblist;
 void perf_stat__print_shadow_stats(struct perf_evsel *evsel,
                                   double avg, int cpu,
                                   struct perf_stat_output_ctx *out,