lkml.org 
[lkml]   [2021]   [Jan]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRE: [PATCH] perf metricgroup: Fix system PMU metrics
    Date

    > -----Original Message-----
    > From: John Garry <john.garry@huawei.com>
    > Sent: 2021年1月19日 19:05
    > To: Joakim Zhang <qiangqing.zhang@nxp.com>; peterz@infradead.org;
    > mingo@redhat.com; acme@kernel.org; mark.rutland@arm.com;
    > alexander.shishkin@linux.intel.com; jolsa@redhat.com;
    > namhyung@kernel.org; irogers@google.com; kjain@linux.ibm.com
    > Cc: linux-kernel@vger.kernel.org; linuxarm@openeuler.org
    > Subject: Re: [PATCH] perf metricgroup: Fix system PMU metrics
    >
    > On 19/01/2021 10:56, Joakim Zhang wrote:
    > >> Joakim reports that getting "perf stat" for multiple system PMU
    > >> metrics
    > >> segfaults:
    > >> ./perf stat -a -I 1000 -M imx8mm_ddr_write.all,imx8mm_ddr_write.all
    > >> Segmentation fault
    > >>
    > >> While the same works without issue for a single metric.
    > >>
    > >> The logic in metricgroup__add_metric_sys_event_iter() is broken, in
    > >> that
    > >> add_metric() @m argument should be NULL for each new metric. Fix by
    > >> not passing a holder for that, and rather make local in
    > >> metricgroup__add_metric_sys_event_iter().
    > >>
    > >> Fixes: be335ec28efa ("perf metricgroup: Support adding metrics for
    > >> system
    > >> PMUs")
    > >> Reported-by: Joakim Zhang<qiangqing.zhang@nxp.com>
    > >> Signed-off-by: John Garry<john.garry@huawei.com>
    > > root@imx8mmevk:~# ./perf stat -a -I 1000 -M
    > imx8mm_ddr_read.all,imx8mm_ddr_write
    >
    > .all
    > > # time counts unit events
    > > 1.001446500 40832
    > imx8mm_ddr.read_cycles # 638.0 KB imx8mm_ddr_read.all
    > > 1.001446500 16973
    > imx8mm_ddr.write_cycles # 265.2 KB imx8mm_ddr_write.all
    > > 2.003150250 28836
    > imx8mm_ddr.read_cycles # 450.6 KB imx8mm_ddr_read.all
    > > 2.003150250 6705
    > imx8mm_ddr.write_cycles # 104.8 KB imx8mm_ddr_write.all
    > >
    > > For this issue, Tested-by: Joakim Zhang<qiangqing.zhang@nxp.com>
    > >
    > > Hi John,
    > >
    > > It seems have other issue compared to 5.10 kernel after switching to this
    > framework, below metric can't work.
    > > "MetricExpr": "(( imx8_ddr0@read\\-cycles@ + imx8_ddr0@write\\-cycles@ )
    > * 4 * 4 / duration_time) / (750 * 1000000 * 4 * 4)"
    > > After change to:
    > > "MetricExpr": "(( imx8mm_ddr.read_cycles + imx8mm_ddr.write_cycles ) *
    > > 4 * 4 / duration_time) / (750 * 1000000 * 4 * 4)",
    >
    > Hmmm... not sure what you mean by "compared to 5.10 kernel". As far as I'm
    > concerned, none of this was supported in 5.10 and metrics did not work for
    > arm64. Support for sys PMU events+metrics only came in 5.11-rc.

    Yes, 5.10 doesn't support ARM64. I add some code let it work locally. And,
    "MetricExpr": "(( imx8_ddr0@read\\-cycles@ + imx8_ddr0@write\\-cycles@ ) * 4 * 4 / duration_time) / (750 * 1000000 * 4 * 4)"
    Above metric expression can work fine.

    > Anyway, can you share the full metric event which you say does not work, not
    > just the "MetricExpr"?

    OK, Could help check below metric? Thanks.
    "MetricExpr": "(( imx8_ddr0@read\\-cycles@ + imx8_ddr0@write\\-cycles@ ) * 4 * 4 / duration_time) / (750 * 1000000 * 4 * 4)"
    or
    "MetricExpr": "(( imx8mm_ddr.read_cycles + imx8mm_ddr.write_cycles ) * 4 * 4 / duration_time) / (750 * 1000000 * 4 * 4)"

    Best Regards,
    Joakim Zhang

    > Thanks,
    > John
    \
     
     \ /
      Last update: 2021-01-19 14:15    [W:4.394 / U:0.236 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site