public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@redhat•com>
To: Kajol Jain <kjain@linux•ibm.com>
Cc: mark.rutland@arm•com, maddy@linux•vnet.ibm.com,
	peterz@infradead•org, yao.jin@linux•intel.com, mingo@kernel•org,
	kan.liang@linux•intel.com, ak@linux•intel.com,
	alexander.shishkin@linux•intel.com, anju@linux•vnet.ibm.com,
	mamatha4@linux•vnet.ibm.com, sukadev@linux•vnet.ibm.com,
	ravi.bangoria@linux•ibm.com, acme@kernel•org, jmario@redhat•com,
	namhyung@kernel•org, tglx@linutronix•de, mpetlan@redhat•com,
	gregkh@linuxfoundation•org, linux-kernel@vger•kernel.org,
	linux-perf-users@vger•kernel.org, jolsa@kernel•org,
	linuxppc-dev@lists•ozlabs.org
Subject: Re: [PATCH v6 09/11] perf/tools: Enhance JSON/metric infrastructure to handle "?"
Date: Tue, 24 Mar 2020 14:11:41 +0100	[thread overview]
Message-ID: <20200324131141.GV1534489@krava> (raw)
In-Reply-To: <20200320125406.30995-10-kjain@linux.ibm.com>

On Fri, Mar 20, 2020 at 06:24:04PM +0530, Kajol Jain wrote:
> 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, I am also merging this value
> to the original metric name to specify parameter value.
> 
> For example,
> command:# ./perf stat  -M PowerBUS_Frequency -C 0 -I 1000
> #           time             counts unit events
>      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.
> 
> As after adding this to group_list, again we call expr__parse
> in 'generic_metric' function present in util/stat-display.c.
> By this time again we need to pass this parameter value. So, now to get this value
> actually I am trying to extract it from metric name itself. Because
> otherwise it gonna point to last updated value present in runtime_param.
> And gonna match for that value only.

so why can't we pass that param as integer value through the metric objects?

it get's created in metricgroup__add_metric_param:
  - as struct egroup *eg
  - we can add egroup::param and store the param value there

then in metricgroup__setup_events it moves to:
  - struct metric_expr *expr
  - we can add metric_expr::param to keep the param

then in perf_stat__print_shadow_stats there's:
  - struct metric_expr *mexp loop
  - calling generic_metric metric - we could call it with mexp::param
  - and pass the param to expr__parse

jirka


  parent reply	other threads:[~2020-03-24 13:26 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-20 12:53 [PATCH v6 00/11] powerpc/perf: Add json file metric support for the hv_24x7 socket/chip level events Kajol Jain
2020-03-20 12:53 ` [PATCH v6 01/11] perf expr: Add expr_ prefix for parse_ctx and parse_id Kajol Jain
2020-03-20 12:53 ` [PATCH v6 02/11] perf expr: Add expr_scanner_ctx object Kajol Jain
2020-03-20 12:53 ` [PATCH v6 03/11] powerpc/perf/hv-24x7: Fix inconsistent output values incase multiple hv-24x7 events run Kajol Jain
2020-03-20 12:53 ` [PATCH v6 04/11] powerpc/hv-24x7: Add rtas call in hv-24x7 driver to get processor details Kajol Jain
2020-03-20 12:54 ` [PATCH v6 05/11] powerpc/hv-24x7: Add sysfs files inside hv-24x7 device to show " Kajol Jain
2020-03-20 12:54 ` [PATCH v6 06/11] Documentation/ABI: Add ABI documentation for chips and sockets Kajol Jain
2020-03-20 12:54 ` [PATCH v6 07/11] powerpc/hv-24x7: Update post_mobility_fixup() to handle migration Kajol Jain
2020-03-20 12:54 ` [PATCH v6 08/11] perf/tools: Refactoring metricgroup__add_metric function Kajol Jain
2020-03-20 12:54 ` [PATCH v6 09/11] perf/tools: Enhance JSON/metric infrastructure to handle "?" Kajol Jain
2020-03-24 13:11   ` Jiri Olsa
2020-03-24 13:11   ` Jiri Olsa [this message]
2020-03-27 10:00     ` kajoljain
2020-03-20 12:54 ` [PATCH v6 10/11] tools/perf: Enable Hz/hz prinitg for --metric-only option Kajol Jain
2020-03-20 12:54 ` [PATCH v6 11/11] perf/tools/pmu-events/powerpc: Add hv_24x7 socket/chip level metric events Kajol Jain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200324131141.GV1534489@krava \
    --to=jolsa@redhat$(echo .)com \
    --cc=acme@kernel$(echo .)org \
    --cc=ak@linux$(echo .)intel.com \
    --cc=alexander.shishkin@linux$(echo .)intel.com \
    --cc=anju@linux$(echo .)vnet.ibm.com \
    --cc=gregkh@linuxfoundation$(echo .)org \
    --cc=jmario@redhat$(echo .)com \
    --cc=jolsa@kernel$(echo .)org \
    --cc=kan.liang@linux$(echo .)intel.com \
    --cc=kjain@linux$(echo .)ibm.com \
    --cc=linux-kernel@vger$(echo .)kernel.org \
    --cc=linux-perf-users@vger$(echo .)kernel.org \
    --cc=linuxppc-dev@lists$(echo .)ozlabs.org \
    --cc=maddy@linux$(echo .)vnet.ibm.com \
    --cc=mamatha4@linux$(echo .)vnet.ibm.com \
    --cc=mark.rutland@arm$(echo .)com \
    --cc=mingo@kernel$(echo .)org \
    --cc=mpetlan@redhat$(echo .)com \
    --cc=namhyung@kernel$(echo .)org \
    --cc=peterz@infradead$(echo .)org \
    --cc=ravi.bangoria@linux$(echo .)ibm.com \
    --cc=sukadev@linux$(echo .)vnet.ibm.com \
    --cc=tglx@linutronix$(echo .)de \
    --cc=yao.jin@linux$(echo .)intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox