From: Ionela Voinescu <ionela.voinescu@arm.com>
To: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
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>,
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 v2 09/22] sched/fair: Use IPC class score to select a busiest runqueue
Date: Wed, 14 Dec 2022 23:16:39 +0000 [thread overview]
Message-ID: <Y5pZV0txyK2Fkkg6@arm.com> (raw)
In-Reply-To: <20221214003243.GC30234@ranerica-svr.sc.intel.com>
Hi Ricardo,
On Tuesday 13 Dec 2022 at 16:32:43 (-0800), Ricardo Neri wrote:
[..]
> > > /**
> > > @@ -10419,8 +10442,8 @@ static struct rq *find_busiest_queue(struct lb_env *env,
> > > {
> > > struct rq *busiest = NULL, *rq;
> > > unsigned long busiest_util = 0, busiest_load = 0, busiest_capacity = 1;
> > > + int i, busiest_ipcc_delta = INT_MIN;
> > > unsigned int busiest_nr = 0;
> > > - int i;
> > >
> > > for_each_cpu_and(i, sched_group_span(group), env->cpus) {
> > > unsigned long capacity, load, util;
> > > @@ -10526,8 +10549,37 @@ static struct rq *find_busiest_queue(struct lb_env *env,
> > >
> > > case migrate_task:
> > > if (busiest_nr < nr_running) {
> > > + struct task_struct *curr;
> > > +
> > > busiest_nr = nr_running;
> > > busiest = rq;
> > > +
> > > + /*
> > > + * Remember the IPC score delta of busiest::curr.
> > > + * We may need it to break a tie with other queues
> > > + * with equal nr_running.
> > > + */
> > > + curr = rcu_dereference(busiest->curr);
> > > + busiest_ipcc_delta = ipcc_score_delta(curr,
> > > + env->dst_cpu);
> > > + /*
> > > + * If rq and busiest have the same number of running
> > > + * tasks, pick rq if doing so would give rq::curr a
> > > + * bigger IPC boost on dst_cpu.
> > > + */
> > > + } else if (sched_ipcc_enabled() &&
> > > + busiest_nr == nr_running) {
> > > + struct task_struct *curr;
> > > + int delta;
> > > +
> > > + curr = rcu_dereference(rq->curr);
> > > + delta = ipcc_score_delta(curr, env->dst_cpu);
> > > +
> > > + if (busiest_ipcc_delta < delta) {
> > > + busiest_ipcc_delta = delta;
> > > + busiest_nr = nr_running;
> > > + busiest = rq;
> > > + }
> > > }
> > > break;
> > >
> >
> > While in the commit message you describe this as breaking a tie for
> > asym_packing,
>
> Are you referring to the overall series or this specific patch? I checked
> commit message and I do not see references to asym_packing.
Sorry, my bad, I was thinking about the cover letter, not the commit
message. It's under "+++ Balancing load using classes of tasks. Theory
of operation".
>
> > the code here does not only affect asym_packing. If
> > another architecture would have sched_ipcc_enabled() it would use this
> > as generic policy, and that might not be desired.
>
> Indeed, the patchset implements support to use IPCC classes for asym_packing,
> but it is not limited to it.
>
So is your current intention to support IPC classes only for asym_packing
for now? What would be the impact on you if you were to limit the
functionality in this patch to asym_packing only?
> It is true that I don't check here for asym_packing, but it should not be a
> problem, IMO. I compare two runqueues with equal nr_running, either runqueue
> is a good choice. This tie breaker is an overall improvement, no?
>
It could be, but equally there could be other better policies as well -
other ways to consider IPC class information to break the tie.
If other architectures start having sched_ipcc_enabled() they would
automatically use the policy you've decided on here. If other policies
are better for those architectures this generic policy would be difficult
to modify to ensure there are no regressions for all other architectures
that use it, or it would be difficult to work around it.
For this and for future support of IPC classes I am just wondering if we
can better design how we enable different architectures to have different
policies.
Thanks,
Ionela.
> Thanks and BR,
> Ricardo
next prev parent reply other threads:[~2022-12-14 23:16 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-28 13:20 [PATCH v2 00/22] sched: Introduce IPC classes for load balance Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 01/22] sched/task_struct: Introduce IPC classes of tasks Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 02/22] sched: Add interfaces for IPC classes Ricardo Neri
2022-12-08 8:48 ` Ionela Voinescu
2022-12-14 0:31 ` Ricardo Neri
2022-12-14 23:15 ` Ionela Voinescu
2022-12-20 0:12 ` Ricardo Neri
2022-12-14 7:36 ` Lukasz Luba
2022-12-16 21:56 ` Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 03/22] sched/core: Initialize the IPC class of a new task Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 04/22] sched/core: Add user_tick as argument to scheduler_tick() Ricardo Neri
2022-12-07 12:21 ` Dietmar Eggemann
2022-12-12 18:47 ` Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 05/22] sched/core: Update the IPC class of the current task Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 06/22] sched/fair: Collect load-balancing stats for IPC classes Ricardo Neri
2022-12-07 17:00 ` Dietmar Eggemann
2022-12-12 21:41 ` Ricardo Neri
2022-12-08 8:50 ` Ionela Voinescu
2022-12-14 0:31 ` Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 07/22] sched/fair: Compute IPC class scores for load balancing Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 08/22] sched/fair: Use IPC class to pick the busiest group Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 09/22] sched/fair: Use IPC class score to select a busiest runqueue Ricardo Neri
2022-12-08 8:51 ` Ionela Voinescu
2022-12-14 0:32 ` Ricardo Neri
2022-12-14 23:16 ` Ionela Voinescu [this message]
2022-12-16 23:24 ` Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 10/22] thermal: intel: hfi: Introduce Intel Thread Director classes Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 11/22] thermal: intel: hfi: Store per-CPU IPCC scores Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 12/22] x86/cpufeatures: Add the Intel Thread Director feature definitions Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 13/22] thermal: intel: hfi: Update the IPC class of the current task Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 14/22] thermal: intel: hfi: Report the IPC class score of a CPU Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 15/22] thermal: intel: hfi: Define a default class for unclassified tasks Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 16/22] thermal: intel: hfi: Enable the Intel Thread Director Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 17/22] sched/task_struct: Add helpers for IPC classification Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 18/22] sched/core: Initialize helpers of task classification Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 19/22] thermal: intel: hfi: Implement model-specific checks for " Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 20/22] x86/cpufeatures: Add feature bit for HRESET Ricardo Neri
2022-11-28 13:20 ` [PATCH v2 21/22] x86/hreset: Configure history reset Ricardo Neri
2022-11-28 13:21 ` [PATCH v2 22/22] x86/process: Reset hardware history in context switch 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=Y5pZV0txyK2Fkkg6@arm.com \
--to=ionela.voinescu@arm.com \
--cc=bristot@redhat.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@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=mgorman@suse.de \
--cc=peterz@infradead.org \
--cc=rafael.j.wysocki@intel.com \
--cc=ravi.v.shankar@intel.com \
--cc=ricardo.neri-calderon@linux.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;
as well as URLs for NNTP newsgroup(s).