From: Peter Zijlstra <peterz@infradead.org>
To: kan.liang@linux.intel.com
Cc: mingo@redhat.com, namhyung@kernel.org, irogers@google.com,
mark.rutland@arm.com, linux-kernel@vger.kernel.org,
linux-perf-users@vger.kernel.org, eranian@google.com,
ctshao@google.com, tmricht@linux.ibm.com
Subject: Re: [RFC PATCH 01/15] perf: Fix the throttle logic for a group
Date: Tue, 13 May 2025 11:45:05 +0200 [thread overview]
Message-ID: <20250513094505.GD25891@noisy.programming.kicks-ass.net> (raw)
In-Reply-To: <20250513094155.GD25763@noisy.programming.kicks-ass.net>
On Tue, May 13, 2025 at 11:41:55AM +0200, Peter Zijlstra wrote:
> On Tue, May 06, 2025 at 09:47:26AM -0700, kan.liang@linux.intel.com wrote:
>
> > diff --git a/kernel/events/core.c b/kernel/events/core.c
> > index a84abc2b7f20..eb0dc871f4f1 100644
> > --- a/kernel/events/core.c
> > +++ b/kernel/events/core.c
> > @@ -2734,6 +2734,38 @@ void perf_event_disable_inatomic(struct perf_event *event)
> > static void perf_log_throttle(struct perf_event *event, int enable);
> > static void perf_log_itrace_start(struct perf_event *event);
> >
> > +static void perf_event_group_unthrottle(struct perf_event *event, bool start_event)
> > +{
> > + struct perf_event *leader = event->group_leader;
> > + struct perf_event *sibling;
> > +
> > + if (leader != event || start_event)
> > + leader->pmu->start(leader, 0);
> > + leader->hw.interrupts = 0;
> > +
> > + for_each_sibling_event(sibling, leader) {
> > + if (sibling != event || start_event)
> > + sibling->pmu->start(sibling, 0);
> > + sibling->hw.interrupts = 0;
> > + }
> > +
> > + perf_log_throttle(leader, 1);
> > +}
> > +
> > +static void perf_event_group_throttle(struct perf_event *event)
> > +{
> > + struct perf_event *leader = event->group_leader;
> > + struct perf_event *sibling;
> > +
> > + leader->hw.interrupts = MAX_INTERRUPTS;
> > + leader->pmu->stop(leader, 0);
> > +
> > + for_each_sibling_event(sibling, leader)
> > + sibling->pmu->stop(sibling, 0);
> > +
> > + perf_log_throttle(leader, 0);
> > +}
>
> Urgh, this seems inconsistent at best.
>
> - unthrottle will set interrupts to 0 for the whole group
> - throttle will set interrupts for leader
> while the old code would set interrupts for event.
> - interrupts was written with event stopped, while now you consistently
> write when started
> - both now issue perf_log_throttle() on leader, whereas previously it
> was issued on event.
>
> IOW
>
> before: after:
> event stops leader MAX_INTERRUPTS
> event MAX_INTERRUPTS event group stops
> event logs leader logs
>
> event 0 event group 0
> event starts event group starts
> event logs leader logs
Sorry, that should obviously be:
event 0 event group starts
event starts event group 0
event logs leader logs
next prev parent reply other threads:[~2025-05-13 9:45 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-06 16:47 [RFC PATCH 00/15] perf: Fix the throttle logic for group kan.liang
2025-05-06 16:47 ` [RFC PATCH 01/15] perf: Fix the throttle logic for a group kan.liang
2025-05-07 16:52 ` Ian Rogers
2025-05-07 19:00 ` Liang, Kan
2025-05-13 9:41 ` Peter Zijlstra
2025-05-13 9:45 ` Peter Zijlstra [this message]
2025-05-13 14:47 ` Liang, Kan
2025-05-06 16:47 ` [RFC PATCH 02/15] perf/x86/intel: Remove driver-specific throttle support kan.liang
2025-05-06 16:47 ` [RFC PATCH 03/15] perf/x86/amd: " kan.liang
2025-05-13 8:44 ` Ravi Bangoria
2025-05-06 16:47 ` [RFC PATCH 04/15] perf/x86/zhaoxin: " kan.liang
2025-05-06 16:47 ` [RFC PATCH 05/15] powerpc/perf: " kan.liang
2025-05-06 16:47 ` [RFC PATCH 06/15] s390/perf: " kan.liang
2025-05-06 16:47 ` [RFC PATCH 07/15] perf/arm: " kan.liang
2025-05-06 16:47 ` [RFC PATCH 08/15] perf/apple_m1: " kan.liang
2025-05-06 16:47 ` [RFC PATCH 09/15] alpha/perf: " kan.liang
2025-05-06 16:47 ` [RFC PATCH 10/15] arc/perf: " kan.liang
2025-05-06 16:47 ` [RFC PATCH 11/15] csky/perf: " kan.liang
2025-05-06 16:47 ` [RFC PATCH 12/15] loongarch/perf: " kan.liang
2025-05-07 1:17 ` 陈华才
2025-05-07 13:45 ` Liang, Kan
2025-05-06 16:47 ` [RFC PATCH 13/15] sparc/perf: " kan.liang
2025-05-06 16:47 ` [RFC PATCH 14/15] xtensa/perf: " kan.liang
2025-05-11 20:43 ` Max Filippov
2025-05-06 16:47 ` [RFC PATCH 15/15] mips/perf: " kan.liang
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=20250513094505.GD25891@noisy.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=ctshao@google.com \
--cc=eranian@google.com \
--cc=irogers@google.com \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=tmricht@linux.ibm.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.