From: Peter Zijlstra <peterz@infradead.org>
To: Yuri Andriaccio <yurand2000@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>,
Juri Lelli <juri.lelli@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Steven Rostedt <rostedt@goodmis.org>,
Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
Valentin Schneider <vschneid@redhat.com>,
linux-kernel@vger.kernel.org,
Luca Abeni <luca.abeni@santannapisa.it>,
Yuri Andriaccio <yuri.andriaccio@santannapisa.it>
Subject: Re: [RFC PATCH v5 22/29] sched/rt: Add rt-cgroup migration functions
Date: Tue, 5 May 2026 17:20:54 +0200 [thread overview]
Message-ID: <20260505152054.GG3102624@noisy.programming.kicks-ass.net> (raw)
In-Reply-To: <20260430213835.62217-23-yurand2000@gmail.com>
On Thu, Apr 30, 2026 at 11:38:26PM +0200, Yuri Andriaccio wrote:
> +static int group_find_lowest_rt_rq(struct task_struct *task, struct rt_rq *task_rt_rq)
> +{
> + struct sched_domain *sd;
> + struct cpumask lowest_mask;
> + struct sched_dl_entity *dl_se;
> + struct rt_rq *rt_rq;
> + int prio, lowest_prio;
> + int cpu, this_cpu = smp_processor_id();
> +
> + if (task->nr_cpus_allowed == 1)
> + return -1; /* No other targets possible */
> +
> + lowest_prio = task->prio - 1;
> + cpumask_clear(&lowest_mask);
> + for_each_cpu_and(cpu, cpu_online_mask, task->cpus_ptr) {
> + dl_se = task_rt_rq->tg->dl_se[cpu];
> + rt_rq = &dl_se->my_q->rt;
> + prio = rt_rq->highest_prio.curr;
> +
> + /*
> + * If we're on asym system ensure we consider the different capacities
> + * of the CPUs when searching for the lowest_mask.
> + */
> + if (dl_se->dl_throttled || !rt_task_fits_capacity(task, cpu))
> + continue;
> +
> + if (prio >= lowest_prio) {
> + if (prio > lowest_prio) {
> + cpumask_clear(&lowest_mask);
> + lowest_prio = prio;
> + }
> +
> + cpumask_set_cpu(cpu, &lowest_mask);
> + }
> + }
> +
> + if (cpumask_empty(&lowest_mask))
> + return -1;
> +
> + /*
> + * At this point we have built a mask of CPUs representing the
> + * lowest priority tasks in the system. Now we want to elect
> + * the best one based on our affinity and topology.
> + *
> + * We prioritize the last CPU that the task executed on since
> + * it is most likely cache-hot in that location.
> + */
> + cpu = task_cpu(task);
> + if (cpumask_test_cpu(cpu, &lowest_mask))
> + return cpu;
> +
> + /*
> + * Otherwise, we consult the sched_domains span maps to figure
> + * out which CPU is logically closest to our hot cache data.
> + */
> + if (!cpumask_test_cpu(this_cpu, &lowest_mask))
> + this_cpu = -1; /* Skip this_cpu opt if not among lowest */
> +
> + scoped_guard(rcu) {
> + for_each_domain(cpu, sd) {
> + if (sd->flags & SD_WAKE_AFFINE) {
> + int best_cpu;
> +
> + /*
> + * "this_cpu" is cheaper to preempt than a
> + * remote processor.
> + */
> + if (this_cpu != -1 &&
> + cpumask_test_cpu(this_cpu, sched_domain_span(sd)))
> + return this_cpu;
> +
> + best_cpu = cpumask_any_and_distribute(&lowest_mask,
> + sched_domain_span(sd));
> + if (best_cpu < nr_cpu_ids)
> + return best_cpu;
> + }
> + }
> + }
I appreciate you trying to save on indent, but this does violate
coding-style, please indent as normal.
> +
> + /*
> + * And finally, if there were no matches within the domains
> + * just give the caller *something* to work with from the compatible
> + * locations.
> + */
> + if (this_cpu != -1)
> + return this_cpu;
> +
> + cpu = cpumask_any_distribute(&lowest_mask);
> + if (cpu < nr_cpu_ids)
> + return cpu;
> +
> + return -1;
> +}
next prev parent reply other threads:[~2026-05-05 15:21 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20260430213835.62217-1-yurand2000@gmail.com>
[not found] ` <20260430213835.62217-14-yurand2000@gmail.com>
2026-05-05 13:04 ` [RFC PATCH v5 13/29] sched/rt: Implement dl-server operations for rt-cgroups Peter Zijlstra
[not found] ` <20260430213835.62217-15-yurand2000@gmail.com>
2026-05-05 13:16 ` [RFC PATCH v5 14/29] sched/rt: Update task event callbacks for HCBS scheduling Peter Zijlstra
[not found] ` <20260430213835.62217-16-yurand2000@gmail.com>
2026-05-05 14:36 ` [RFC PATCH v5 15/29] sched/rt: Update rt-cgroup schedulability checks Peter Zijlstra
[not found] ` <20260430213835.62217-19-yurand2000@gmail.com>
2026-05-05 14:59 ` [RFC PATCH v5 18/29] sched/core: Cgroup v2 support Peter Zijlstra
2026-05-06 19:58 ` luca abeni
2026-05-07 7:01 ` Peter Zijlstra
2026-05-07 13:30 ` luca abeni
2026-05-07 14:16 ` Peter Zijlstra
[not found] ` <20260430213835.62217-20-yurand2000@gmail.com>
2026-05-05 15:01 ` [RFC PATCH v5 19/29] sched/rt: Remove support for cgroups-v1 Peter Zijlstra
2026-05-07 15:35 ` Juri Lelli
2026-05-13 12:15 ` Yuri Andriaccio
2026-05-13 14:37 ` Juri Lelli
[not found] ` <20260430213835.62217-21-yurand2000@gmail.com>
2026-05-05 15:15 ` [RFC PATCH v5 20/29] sched/deadline: Allow deeper hierarchies of RT cgroups Peter Zijlstra
2026-05-05 19:56 ` Tejun Heo
2026-05-07 10:53 ` Peter Zijlstra
2026-05-07 15:03 ` Juri Lelli
2026-05-07 15:05 ` Peter Zijlstra
2026-05-07 16:39 ` luca abeni
2026-05-11 9:29 ` Juri Lelli
2026-05-11 17:52 ` Tejun Heo
2026-05-07 16:44 ` luca abeni
2026-05-11 9:40 ` luca abeni
2026-05-11 18:15 ` Tejun Heo
2026-05-11 17:37 ` Tejun Heo
2026-05-07 14:30 ` luca abeni
2026-05-11 18:28 ` Tejun Heo
2026-05-12 17:38 ` Yuri Andriaccio
2026-05-12 18:19 ` Tejun Heo
2026-05-12 18:20 ` Tejun Heo
2026-05-13 12:08 ` Yuri Andriaccio
2026-05-13 19:10 ` Tejun Heo
2026-05-14 7:25 ` luca abeni
2026-05-14 22:20 ` Tejun Heo
[not found] ` <20260430213835.62217-23-yurand2000@gmail.com>
2026-05-05 15:20 ` Peter Zijlstra [this message]
2026-05-05 15:24 ` [RFC PATCH v5 22/29] sched/rt: Add rt-cgroup migration functions Peter Zijlstra
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=20260505152054.GG3102624@noisy.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luca.abeni@santannapisa.it \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=rostedt@goodmis.org \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=yurand2000@gmail.com \
--cc=yuri.andriaccio@santannapisa.it \
/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.