From: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>,
Juri Lelli <juri.lelli@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Ricardo Neri <ricardo.neri@intel.com>,
"Ravi V. Shankar" <ravi.v.shankar@intel.com>,
Ben Segall <bsegall@google.com>,
Daniel Bristot de Oliveira <bristot@redhat.com>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Len Brown <len.brown@intel.com>, Mel Gorman <mgorman@suse.de>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>,
Steven Rostedt <rostedt@goodmis.org>,
Tim Chen <tim.c.chen@linux.intel.com>,
Valentin Schneider <vschneid@redhat.com>,
Lukasz Luba <lukasz.luba@arm.com>,
Ionela Voinescu <ionela.voinescu@arm.com>,
x86@kernel.org,
"Joel Fernandes (Google)" <joel@joelfernandes.org>,
linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
"Tim C . Chen" <tim.c.chen@intel.com>
Subject: Re: [PATCH v3 21/24] thermal: intel: hfi: Implement model-specific checks for task classification
Date: Wed, 29 Mar 2023 19:41:57 -0700 [thread overview]
Message-ID: <20230330024157.GD26315@ranerica-svr.sc.intel.com> (raw)
In-Reply-To: <CAJZ5v0iHJrXDU=C0oaf-3DJfatWGj4No_J1rwN6PCpRTZMXqyA@mail.gmail.com>
On Wed, Mar 29, 2023 at 02:21:57PM +0200, Rafael J. Wysocki wrote:
> On Wed, Mar 29, 2023 at 2:04 AM Ricardo Neri
> <ricardo.neri-calderon@linux.intel.com> wrote:
> >
> > On Mon, Mar 27, 2023 at 07:03:08PM +0200, Rafael J. Wysocki wrote:
> > > On Tue, Feb 7, 2023 at 6:02 AM Ricardo Neri
> > > <ricardo.neri-calderon@linux.intel.com> wrote:
> > > >
> > > > In Alder Lake and Raptor Lake, the result of thread classification is more
> > > > accurate when only one SMT sibling is busy. Classification results for
> > > > class 2 and 3 are always reliable.
> > > >
> > > > To avoid unnecessary migrations, only update the class of a task if it has
> > > > been the same during 4 consecutive user ticks.
> > > >
> > > > Cc: Ben Segall <bsegall@google.com>
> > > > Cc: Daniel Bristot de Oliveira <bristot@redhat.com>
> > > > Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
> > > > Cc: Ionela Voinescu <ionela.voinescu@arm.com>
> > > > Cc: Joel Fernandes (Google) <joel@joelfernandes.org>
> > > > Cc: Len Brown <len.brown@intel.com>
> > > > Cc: Lukasz Luba <lukasz.luba@arm.com>
> > > > Cc: Mel Gorman <mgorman@suse.de>
> > > > Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > > > Cc: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
> > > > Cc: Steven Rostedt <rostedt@goodmis.org>
> > > > Cc: Tim C. Chen <tim.c.chen@intel.com>
> > > > Cc: Valentin Schneider <vschneid@redhat.com>
> > > > Cc: x86@kernel.org
> > > > Cc: linux-pm@vger.kernel.org
> > > > Cc: linux-kernel@vger.kernel.org
> > > > Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
> > > > ---
> > > > Changes since v2:
> > > > * None
> > > >
> > > > Changes since v1:
> > > > * Adjusted the result the classification of Intel Thread Director to start
> > > > at class 1. Class 0 for the scheduler means that the task is
> > > > unclassified.
> > > > * Used the new names of the IPC classes members in task_struct.
> > > > * Reworked helper functions to use sched_smt_siblings_idle() to query
> > > > the idle state of the SMT siblings of a CPU.
> > > > ---
> > > > drivers/thermal/intel/intel_hfi.c | 60 ++++++++++++++++++++++++++++++-
> > > > 1 file changed, 59 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/thermal/intel/intel_hfi.c b/drivers/thermal/intel/intel_hfi.c
> > > > index 35d947f47550..fdb53e4cabc1 100644
> > > > --- a/drivers/thermal/intel/intel_hfi.c
> > > > +++ b/drivers/thermal/intel/intel_hfi.c
> > > > @@ -40,6 +40,7 @@
> > > > #include <linux/workqueue.h>
> > > >
> > > > #include <asm/msr.h>
> > > > +#include <asm/intel-family.h>
> > > >
> > > > #include "../thermal_core.h"
> > > > #include "intel_hfi.h"
> > > > @@ -209,9 +210,64 @@ static int __percpu *hfi_ipcc_scores;
> > > > */
> > > > #define HFI_UNCLASSIFIED_DEFAULT 1
> > > >
> > > > +#define CLASS_DEBOUNCER_SKIPS 4
> > > > +
> > > > +/**
> > > > + * debounce_and_update_class() - Process and update a task's classification
> > > > + *
> > > > + * @p: The task of which the classification will be updated
> > > > + * @new_ipcc: The new IPC classification
> > > > + *
> > > > + * Update the classification of @p with the new value that hardware provides.
> > > > + * Only update the classification of @p if it has been the same during
> > > > + * CLASS_DEBOUNCER_SKIPS consecutive ticks.
> > > > + */
> > > > +static void debounce_and_update_class(struct task_struct *p, u8 new_ipcc)
> > > > +{
> > > > + u16 debounce_skip;
> > > > +
> > > > + /* The class of @p changed. Only restart the debounce counter. */
> > > > + if (p->ipcc_tmp != new_ipcc) {
> > > > + p->ipcc_cntr = 1;
> > > > + goto out;
> > > > + }
> > > > +
> > > > + /*
> > > > + * The class of @p did not change. Update it if it has been the same
> > > > + * for CLASS_DEBOUNCER_SKIPS user ticks.
> > > > + */
> > > > + debounce_skip = p->ipcc_cntr + 1;
> > > > + if (debounce_skip < CLASS_DEBOUNCER_SKIPS)
> > > > + p->ipcc_cntr++;
> > > > + else
> > > > + p->ipcc = new_ipcc;
> > > > +
> > > > +out:
> > > > + p->ipcc_tmp = new_ipcc;
> > > > +}
> > >
> > > Why does the code above belong to the Intel HFI driver? It doesn't
> > > look like there is anything driver-specific in it.
> >
> > That is a good point. This post-processing is specific to the
> > implementation of IPCC classes using Intel Thread Director.
>
> Well, the implementation-specific part is the processor model check
> whose only contribution is to say whether or not the classification is
> valid. The rest appears to be fairly generic to me.
I meant to say that we use Intel Thread Director and the HFI driver to
implement the interfaces defined in patch 2. Other architectures may
implement those interfaces differently.
For Intel, we may even need different filters and debouncers for different
models.
>
> > Maybe a new file called drivers/thermal/intel/intel_itd.c would be better?
>
> So which part of this code other than the processor model check
> mentioned above is Intel-specific?
debounce_and_update_class() is needed for Intel processors, other
architectures may not need it or have a different solution.
next prev parent reply other threads:[~2023-03-30 2:31 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-07 5:10 [PATCH v3 00/24] sched: Introduce classes of tasks for load balance Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 01/24] sched/task_struct: Introduce IPC classes of tasks Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 02/24] sched: Add interfaces for IPC classes Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 03/24] sched/core: Initialize the IPC class of a new task Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 04/24] sched/core: Add user_tick as argument to scheduler_tick() Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 05/24] sched/core: Update the IPC class of the current task Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 06/24] sched/fair: Collect load-balancing stats for IPC classes Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 07/24] sched/fair: Compute IPC class scores for load balancing Ricardo Neri
2023-03-28 10:00 ` Vincent Guittot
2023-03-30 2:07 ` Ricardo Neri
2023-03-31 12:20 ` Vincent Guittot
2023-04-17 22:52 ` Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 08/24] sched/fair: Use IPCC stats to break ties between asym_packing sched groups Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 09/24] sched/fair: Use IPCC stats to break ties between fully_busy SMT groups Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 10/24] sched/fair: Use IPCC scores to select a busiest runqueue Ricardo Neri
2023-03-28 10:03 ` Vincent Guittot
2023-03-30 2:14 ` Ricardo Neri
2023-03-31 12:23 ` Vincent Guittot
2023-04-17 23:01 ` Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 11/24] thermal: intel: hfi: Introduce Intel Thread Director classes Ricardo Neri
2023-03-27 16:31 ` Rafael J. Wysocki
2023-03-28 23:42 ` Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 12/24] x86/cpufeatures: Add the Intel Thread Director feature definitions Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 13/24] thermal: intel: hfi: Store per-CPU IPCC scores Ricardo Neri
2023-03-27 16:37 ` Rafael J. Wysocki
2023-03-28 23:43 ` Ricardo Neri
2023-03-29 12:08 ` Rafael J. Wysocki
2023-03-30 2:15 ` Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 14/24] thermal: intel: hfi: Update the IPC class of the current task Ricardo Neri
2023-03-27 16:42 ` Rafael J. Wysocki
2023-03-28 23:41 ` Ricardo Neri
2023-03-29 12:13 ` Rafael J. Wysocki
2023-03-30 3:06 ` Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 15/24] thermal: intel: hfi: Report the IPC class score of a CPU Ricardo Neri
2023-03-27 16:50 ` Rafael J. Wysocki
2023-03-28 23:41 ` Ricardo Neri
2023-03-29 12:17 ` Rafael J. Wysocki
2023-03-31 2:07 ` Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 16/24] thermal: intel: hfi: Define a default class for unclassified tasks Ricardo Neri
2023-03-27 16:51 ` Rafael J. Wysocki
2023-03-28 23:49 ` Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 17/24] thermal: intel: hfi: Enable the Intel Thread Director Ricardo Neri
2023-03-27 16:53 ` Rafael J. Wysocki
2023-03-28 23:50 ` Ricardo Neri
2023-02-07 5:10 ` [PATCH v3 18/24] sched/task_struct: Add helpers for IPC classification Ricardo Neri
2023-02-07 5:11 ` [PATCH v3 19/24] sched/core: Initialize helpers of task classification Ricardo Neri
2023-02-07 5:11 ` [PATCH v3 20/24] sched/fair: Introduce sched_smt_siblings_idle() Ricardo Neri
2023-02-07 5:11 ` [PATCH v3 21/24] thermal: intel: hfi: Implement model-specific checks for task classification Ricardo Neri
2023-03-27 17:03 ` Rafael J. Wysocki
2023-03-29 0:15 ` Ricardo Neri
2023-03-29 12:21 ` Rafael J. Wysocki
2023-03-30 2:41 ` Ricardo Neri [this message]
2023-03-31 17:08 ` Rafael J. Wysocki
2023-04-03 14:12 ` Ricardo Neri
2023-02-07 5:11 ` [PATCH v3 22/24] x86/cpufeatures: Add feature bit for HRESET Ricardo Neri
2023-02-07 5:11 ` [PATCH v3 23/24] x86/hreset: Configure history reset Ricardo Neri
2023-02-07 5:11 ` [PATCH v3 24/24] x86/process: Reset hardware history in context switch Ricardo Neri
2023-03-05 22:49 ` [PATCH v3 00/24] sched: Introduce classes of tasks for load balance Ricardo Neri
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=20230330024157.GD26315@ranerica-svr.sc.intel.com \
--to=ricardo.neri-calderon@linux.intel.com \
--cc=bristot@redhat.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=ionela.voinescu@arm.com \
--cc=joel@joelfernandes.org \
--cc=juri.lelli@redhat.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lukasz.luba@arm.com \
--cc=mgorman@suse.de \
--cc=peterz@infradead.org \
--cc=rafael.j.wysocki@intel.com \
--cc=rafael@kernel.org \
--cc=ravi.v.shankar@intel.com \
--cc=ricardo.neri@intel.com \
--cc=rostedt@goodmis.org \
--cc=srinivas.pandruvada@linux.intel.com \
--cc=tim.c.chen@intel.com \
--cc=tim.c.chen@linux.intel.com \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=x86@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®