Re: [PATCH v4 1/5] perf stat: Add AGGR_PCIE_PORT mode

From: Alexander Antonov
Date: Mon Feb 08 2021 - 06:54:05 EST


On 2/4/2021 3:07 PM, Namhyung Kim wrote:
Hello,

On Wed, Feb 3, 2021 at 10:58 PM Alexander Antonov
<alexander.antonov@xxxxxxxxxxxxxxx> wrote:
Adding AGGR_PCIE_PORT mode to be able to distinguish aggr_mode
for root ports in following patches.
I'm not sure adding the AGGR_PCIE_PORT is the right way.
In my understanding, the aggr mode is to specify how we aggregate
counter values of a single event from different cpus. But this seems
to aggregate counter values from different events. Also the new
mode is basically the same as AGGR_GLOBAL.

As you will add stat_config.iostat_run to distinguish the iostat
command, probably we just want to use the global aggr mode
(and it's the default!) and get rid of the AGGR_PCIE_PORT.

Thoughts?

Thanks,
Namhyung
Hello Namhyung,

Actually, you are right. We aggregate counter values from different events of a
single IIO stack (PCIe root port) to calculate metrics for this IO stack.
But the reason is to prevent using of '-e' and '-M' options in 'iostat' mode
because it can be a reason for the mess in the output that can confuse users.

There is an idea to use your suggestion for this part:

status = iostat_prepare(...);
if (status < 0)
        goto out;
if (status == IOSTAT_LIST)
        iostat_list(...);
else
        ...

So, we can check if evlist is empty inside iostat_prepare(). If not, print
a warning, for example, "The -e and -M options are not supported. All chosen
events/metrics will be dropped". Then we can free of evlist by using
evlist__delete(), create new one by using evlist__new() and fill the evlist.

In this case the body of iostat_prepare() function would be:

iostat_prepare()
{
    If (!is_evlist_empty) {
        pr_warning();
        evlist__delete();
        evlist__new()
    }

    iostat_event_group();
}

It will allow to get rid of the AGGR_PCIE_PORT.
What do you think?

Thank you,
Alexander