From: "Liang, Kan" <kan.liang@linux.intel.com>
To: Namhyung Kim <namhyung@kernel.org>, Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Dapeng Mi <dapeng1.mi@linux.intel.com>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
Yongwei Ma <yongwei.ma@intel.com>,
Dapeng Mi <dapeng1.mi@intel.com>
Subject: Re: [Patch v5 0/6] Bug fixes on topdown events reordering
Date: Thu, 3 Oct 2024 15:45:11 -0400 [thread overview]
Message-ID: <690ddcd6-276a-4b7b-bd21-fb4ef2349990@linux.intel.com> (raw)
In-Reply-To: <Zv7KHGQx0y3rAGWx@google.com>
On 2024-10-03 12:45 p.m., Namhyung Kim wrote:
>>> If the algorithms cannot be changed, can you please give some
>>> suggestions, especially for the sample read failure?
>> So this is symmetric:
>> ```
>> if (arch_is_topdown_metrics(lhs) && !arch_is_topdown_metrics(rhs))
>> return -1;
>> if (!arch_is_topdown_metrics(lhs) && arch_is_topdown_metrics(rhs))
>> return 1;
>> ```
>> That is were lhs and rhs swapped then you'd get the expected comparison order.
>> ```
>> if (arch_is_topdown_metrics(lhs) && !arch_is_topdown_metrics(rhs) &&
>> lhs->core.leader != rhs->core.leader)
>> return -1;
>> if (!arch_is_topdown_metrics(lhs) && arch_is_topdown_metrics(rhs) &&
>> lhs->core.leader != rhs->core.leader)
>> return 1;
>> ```
>> Is symmetric as well.
>> ```
>> if (arch_is_topdown_metrics(lhs) && !arch_is_topdown_metrics(rhs))
>> return -1;
>> if (!arch_is_topdown_metrics(lhs) && arch_is_topdown_metrics(rhs) &&
>> lhs->core.leader != rhs->core.leader)
>> return 1;
>> ```
>> (what this patch does) is not symmetric as the group leader impacts
>> the greater-than case but not the less-than case.
>>
>> It is not uncommon to see in a sort function:
>> ```
>> if (cmp(a, b) <= 0) {
>> assert(cmp(b,a) >= 0 && "check for unstable/broken compare functions");
>> ```
> I see. So are you proposing this?
>
> diff --git a/tools/perf/arch/x86/util/evlist.c b/tools/perf/arch/x86/util/evlist.c
> index 438e4639fa892304..46884fa17fe658a6 100644
> --- a/tools/perf/arch/x86/util/evlist.c
> +++ b/tools/perf/arch/x86/util/evlist.c
> @@ -70,7 +70,8 @@ int arch_evlist__cmp(const struct evsel *lhs, const struct evsel *rhs)
> if (arch_is_topdown_slots(rhs))
> return 1;
> /* Followed by topdown events. */
> - if (arch_is_topdown_metrics(lhs) && !arch_is_topdown_metrics(rhs))
> + if (arch_is_topdown_metrics(lhs) && !arch_is_topdown_metrics(rhs) &&
> + lhs->core.leader != rhs->core.leader)
> return -1;
> /*
> * Move topdown events forward only when topdown events
>
> Dapeng and Kan, can you verify if it's ok? My quick tests look ok.
I verified the above change. It works well.
Tested-by: Kan Liang <kan.liang@linux.intel.com>
Thanks,
Kan
next prev parent reply other threads:[~2024-10-03 19:45 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-13 8:47 [Patch v5 0/6] Bug fixes on topdown events reordering Dapeng Mi
2024-09-13 8:47 ` [Patch v5 1/6] perf x86/topdown: Complete topdown slots/metrics events check Dapeng Mi
2024-10-08 5:55 ` Ian Rogers
2024-10-09 9:56 ` Mi, Dapeng
2024-09-13 8:47 ` [Patch v5 2/6] perf x86/topdown: Correct leader selection with sample_read enabled Dapeng Mi
2024-09-13 8:47 ` [Patch v5 3/6] perf x86/topdown: Don't move topdown metric events in group Dapeng Mi
2024-09-13 8:47 ` [Patch v5 4/6] perf tests: Add leader sampling test in record tests Dapeng Mi
2024-09-13 8:47 ` [Patch v5 5/6] perf tests: Add topdown events counting and sampling tests Dapeng Mi
2024-09-13 8:47 ` [Patch v5 6/6] perf tests: Add more topdown events regroup tests Dapeng Mi
2024-10-01 21:02 ` [Patch v5 0/6] Bug fixes on topdown events reordering Namhyung Kim
2024-10-01 22:32 ` Ian Rogers
2024-10-02 14:31 ` Ian Rogers
2024-10-03 0:00 ` Namhyung Kim
2024-10-03 0:57 ` Ian Rogers
2024-10-03 14:57 ` Liang, Kan
2024-10-03 15:55 ` Ian Rogers
2024-10-03 16:45 ` Namhyung Kim
2024-10-03 19:45 ` Liang, Kan [this message]
2024-10-03 21:26 ` Ian Rogers
2024-10-03 22:13 ` Namhyung Kim
2024-10-03 23:29 ` Liang, Kan
2024-10-03 23:36 ` Ian Rogers
2024-10-04 5:19 ` Namhyung Kim
2024-10-08 2:52 ` Mi, Dapeng1
2024-10-08 5:13 ` Ian Rogers
2024-10-08 2:31 ` Mi, Dapeng1
2024-10-08 2:30 ` Mi, Dapeng1
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=690ddcd6-276a-4b7b-bd21-fb4ef2349990@linux.intel.com \
--to=kan.liang@linux.intel.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=dapeng1.mi@intel.com \
--cc=dapeng1.mi@linux.intel.com \
--cc=irogers@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=yongwei.ma@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.