• Kajol Jain's avatar
    perf metricgroups: Enhance JSON/metric infrastructure to handle "?" · 1e1a873d
    Kajol Jain authored
    Patch enhances current metric infrastructure to handle "?" in the metric
    expression. The "?" can be use for parameters whose value not known
    while creating metric events and which can be replace later at runtime
    to the proper value. It also add flexibility to create multiple events
    out of single metric event added in JSON file.
    
    Patch adds function 'arch_get_runtimeparam' which is a arch specific
    function, returns the count of metric events need to be created.  By
    default it return 1.
    
    This infrastructure needed for hv_24x7 socket/chip level events.
    "hv_24x7" chip level events needs specific chip-id to which the data is
    requested. Function 'arch_get_runtimeparam' implemented in header.c
    which extract number of sockets from sysfs file "sockets" under
    "/sys/devices/hv_24x7/interface/".
    
    With this patch basically we are trying to create as many metric events
    as define by runtime_param.
    
    For that one loop is added in function 'metricgroup__add_metric', which
    create multiple events at run time depend on return value of
    'arch_get_runtimeparam' and merge that event in 'group_list'.
    
    To achieve that we are actually passing this parameter value as part of
    `expr__find_other` function and changing "?" present in metric
    expression with this value.
    
    As in our JSON file, there gonna be single metric event, and out of
    which we are creating multiple events.
    
    To understand which data count belongs to which parameter value,
    we also printing param value in generic_metric function.
    
    For example,
    
      command:# ./perf stat  -M PowerBUS_Frequency -C 0 -I 1000
        1.000101867  9,356,933  hv_24x7/pm_pb_cyc,chip=0/ #  2.3 GHz  PowerBUS_Frequency_0
        1.000101867  9,366,134  hv_24x7/pm_pb_cyc,chip=1/ #  2.3 GHz  PowerBUS_Frequency_1
        2.000314878  9,365,868  hv_24x7/pm_pb_cyc,chip=0/ #  2.3 GHz  PowerBUS_Frequency_0
        2.000314878  9,366,092  hv_24x7/pm_pb_cyc,chip=1/ #  2.3 GHz  PowerBUS_Frequency_1
    
    So, here _0 and _1 after PowerBUS_Frequency specify parameter value.
    Signed-off-by: default avatarKajol Jain <kjain@linux.ibm.com>
    Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Anju T Sudhakar <anju@linux.vnet.ibm.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Joe Mario <jmario@redhat.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
    Cc: Mamatha Inamdar <mamatha4@linux.vnet.ibm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Paul Mackerras <paulus@ozlabs.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linuxppc-dev@lists.ozlabs.org
    Link: http://lore.kernel.org/lkml/20200401203340.31402-5-kjain@linux.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    1e1a873d
metricgroup.h 905 Bytes