lkml.org 
[lkml]   [2017]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 02/11] perf util: Define a structure for runtime shadow stats
    Date
    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>
    ---
    tools/perf/util/stat-shadow.c | 11 -----------
    tools/perf/util/stat.h | 46 ++++++++++++++++++++++++++++++++++++++++++-
    2 files changed, 45 insertions(+), 12 deletions(-)

    diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c
    index 855e35c..5853901 100644
    --- a/tools/perf/util/stat-shadow.c
    +++ b/tools/perf/util/stat-shadow.c
    @@ -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
    diff --git a/tools/perf/util/stat.h b/tools/perf/util/stat.h
    index eefca5c..afa7002 100644
    --- a/tools/perf/util/stat.h
    +++ b/tools/perf/util/stat.h
    @@ -5,6 +5,8 @@
    #include <linux/types.h>
    #include <stdio.h>
    #include "xyarray.h"
    +#include "evsel.h"
    +#include "rblist.h"

    struct stats
    {
    @@ -43,11 +45,54 @@ 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;
    FILE *output;
    unsigned int interval;
    + struct runtime_stat *stats;
    + int stats_num;
    };

    void update_stats(struct stats *stats, u64 val);
    @@ -92,7 +137,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,
    --
    2.7.4
    \
     
     \ /
      Last update: 2017-11-29 05:13    [W:2.327 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site