mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Waiman Long <longman@redhat.com>
To: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: juri.lelli@redhat.com, peterz@infradead.org, mingo@redhat.com,
	vincent.guittot@linaro.org, linux-kernel@vger.kernel.org,
	tglx@kernel.org, will@kernel.org, boqun@kernel.org,
	dietmar.eggemann@arm.com, rostedt@goodmis.org,
	bsegall@google.com, mgorman@suse.de, vschneid@redhat.com,
	kprateek.nayak@amd.com, luca.abeni@santannapisa.it,
	mathieu.poirier@linaro.org, ridong.chen@linux.dev, tj@kernel.org,
	hannes@cmpxchg.org, mkoutny@suse.com, shuah@kernel.org,
	bigeasy@linutronix.de, clrkwllms@kernel.org,
	parri.andrea@gmail.com, m.szyprowski@samsung.com,
	kayracizmeci@gmail.com, weihengqiuu@gmail.com,
	cgroups@vger.kernel.org, linux-kselftest@vger.kernel.org,
	linux-rt-devel@lists.linux.dev
Subject: Re: [PATCH v5 18/29] sched/deadline: Move a task's bandwidth only where room was made
Date: Fri, 13 Nov 2026 12:33:21 -0500	[thread overview]
Message-ID: <638e3138-1dfe-42a0-97bf-2acb32970fa3@redhat.com> (raw)
In-Reply-To: <20261113135110.160083-1-mathieu.desnoyers@efficios.com>

On 11/13/26 8:51 AM, Mathieu Desnoyers wrote:
> Hi Waiman,
>
> On 2026-11-12 23:37, Waiman Long wrote:
>> For cpuset v2, it is not possible for a cpuset to span two root domains.
>> I believe it is not possible for v1 too, though I am not 100% sure.
>> Please let me know if you are aware of a way to do that.
> It happens with isolcpus="domain". The CPUs it isolates stay in the
> effective CPUs of the top cpuset, and of any cpuset that is not a
> partition root. They are in the default root domain. The other CPUs
> are in another root domain.
>
> The message should have named isolcpus. The planned next version does.
Right, top_cpuset is the exception here. Boot isolated CPUs are not 
allowed in a root partition. They are only allowed in isolated 
partitions. So root partition other than the top one cannot span more 
than one root domain.
>
> This is on tip sched/urgent (v7.4-rc1 based), in a 5-CPU guest booted
> with isolcpus=domain,1,2. A is a plain cgroup v2 cpuset:
>
>    # cat /sys/devices/system/cpu/isolated
>    1-2
>    # echo 0-4 > A/cpuset.cpus
>    # cat A/cpuset.cpus.effective
>    0-4
>    # cat A/cpuset.cpus.partition
>    member
>
> Two tasks in A call sched_setattr(SCHED_DEADLINE). Task 95 is pinned to
> CPUs 0,3,4 and asks for 10%. Task 98 is pinned to CPUs 1,2 and asks for
> 20%. Both are admitted. /sys/kernel/debug/sched/debug gives total_bw of
> the root domain of each CPU. "Before" is the fair servers alone:
>
>    CPU     before    with the two tasks
>    0,3,4   157284    262141   (+10%)
>    1,2     104856    314571   (+20%)
>
> So the two tasks are in the same cpuset and are counted in two root
> domains. Then task 95 is given CPU 1 alone:
>
>    # taskset -p 2 95
>    taskset: can't set pid 95's affinity: Device or resource busy
>    # echo -1 > /proc/sys/kernel/sched_rt_runtime_us
>    # taskset -p 2 95
>    pid 95's new affinity mask: 2
>
> After that, total_bw is 157284 for CPUs 0,3,4 and still 314571 for
> CPUs 1,2. The 10% of task 95 is counted nowhere. That is the case the
> patch fixes.
>
> I did not test cgroup v1.
>
> The planned next version has a new cpuset patch for the same
> configuration. A deadline task in such a cpuset can also change root
> domain when its cpuset loses CPUs. The patch refuses that:
> - a write to cpuset.cpus fails with EBUSY if it leaves a deadline task
>    no CPU in the root domain that counts it;
> - cpuset makes a partition root invalid if it would do the same.

We already have pending cpuset patch that will disallow taking the last 
housekeeping CPU from the top_cpuset partition.  The partition will be 
disabled in that patch if users attempt to do so. So it is effectively 
changing the root domain to that of the parent cpuset.

As said above, a partition below the top_cpuset cannot span more than 
one root domain. Are you referring to the case that shrinking the cpuset 
CPU count to reduce the total DL bandwidth will fail with EBUSY when it 
is less than what the existing DL tasks require?

Thanks,
Longman
>
> My reply to Juri on patch 20 describes it with two related patches:
> https://lore.kernel.org/all/e21aaf40-b929-444c-b707-3200e21d7301@efficios.com/
>
> I would like your opinion on these two refusals before I post the
> patch.
>
> Thanks,
>
> Mathieu


  reply	other threads:[~2026-11-13 17:33 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-08 18:53 [PATCH v5 00/29] sched/deadline: bandwidth accounting fixes and selftests Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 01/29] sched: Fix cpuset_mutex double unlock in __sched_setscheduler() Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 02/29] sched: Refuse SCHED_FLAG_KEEP_PARAMS that would change the policy or the class Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 03/29] sched/deadline: Do not admit bandwidth for parameters that are kept Mathieu Desnoyers
2026-11-09 12:42   ` Juri Lelli
2026-11-09 13:16     ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 04/29] sched: Let a task boosted by a deadline waiter change its policy Mathieu Desnoyers
2026-11-09 13:38   ` Juri Lelli
2026-11-08 18:53 ` [PATCH v5 05/29] sched/deadline: Do not divide by zero active CPUs of a root domain Mathieu Desnoyers
2026-11-09 14:30   ` Juri Lelli
2026-11-09 14:57     ` Mathieu Desnoyers
2026-11-09 15:09       ` Juri Lelli
2026-11-09 15:22         ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 06/29] sched: Take cpuset_mutex for a deadline policy change only with pi Mathieu Desnoyers
2026-11-09 15:06   ` Juri Lelli
2026-11-09 15:22     ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 07/29] sched/deadline: Do not lose a throttled task switched out and back Mathieu Desnoyers
2026-11-09 16:05   ` Juri Lelli
2026-11-09 16:29     ` Mathieu Desnoyers
2026-11-09 18:55       ` Mathieu Desnoyers
2026-11-09 18:56       ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 08/29] sched/deadline: Take a deadline boost from the waiter's rt_mutex node Mathieu Desnoyers
2026-11-10 11:14   ` Juri Lelli
2026-11-10 13:48     ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 09/29] sched/deadline: Reset the deadline and the runtime with the parameters Mathieu Desnoyers
2026-11-10 13:18   ` Juri Lelli
2026-11-10 13:41     ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 10/29] sched/deadline: Reset the donor's runtime at a deboost in the class Mathieu Desnoyers
2026-11-08 19:17   ` sashiko-bot
2026-11-09  2:56     ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 11/29] sched/deadline: Release the bandwidth of a task that leaves the class asleep Mathieu Desnoyers
2026-11-10 19:47   ` Juri Lelli
2026-11-10 20:26     ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 12/29] sched/deadline: Reject SCHED_DEADLINE on exited tasks Mathieu Desnoyers
2026-11-11  6:55   ` Juri Lelli
2026-11-08 18:53 ` [PATCH v5 13/29] sched/deadline: Keep departing bandwidth across a root domain rebuild Mathieu Desnoyers
2026-11-11 12:59   ` Juri Lelli
2026-11-11 15:35     ` Mathieu Desnoyers
2026-11-11 16:19       ` Peter Zijlstra
2026-11-11 19:19         ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 14/29] sched/deadline: Fix this_bw when a task is changed during a remote wakeup Mathieu Desnoyers
2026-11-11 13:49   ` Juri Lelli
2026-11-08 18:53 ` [PATCH v5 15/29] sched/deadline: Rebuild the root domains' accounting from the task list Mathieu Desnoyers
2026-11-11 14:24   ` Juri Lelli
2026-11-13 13:31     ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 16/29] sched/deadline: Record the root domain holding a task's bandwidth Mathieu Desnoyers
2026-11-11 15:54   ` Juri Lelli
2026-11-13 13:33     ` Mathieu Desnoyers
2026-11-13 15:06       ` Juri Lelli
2026-11-08 18:53 ` [PATCH v5 17/29] sched/deadline: Leave a dying task out of a rebuild of the accounting Mathieu Desnoyers
2026-11-12  6:40   ` Juri Lelli
2026-11-13 13:34     ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 18/29] sched/deadline: Move a task's bandwidth only where room was made Mathieu Desnoyers
2026-11-08 19:30   ` sashiko-bot
2026-11-09  2:57     ` Mathieu Desnoyers
2026-11-12  7:03   ` Juri Lelli
2026-11-13 13:35     ` Mathieu Desnoyers
2026-11-13 15:04       ` Andrea Parri
2026-11-13 15:20         ` Mathieu Desnoyers
2026-11-13 15:49           ` Andrea Parri
2026-11-13  4:37   ` Waiman Long
2026-11-13 13:51     ` Mathieu Desnoyers
2026-11-13 17:33       ` Waiman Long [this message]
2026-11-08 18:53 ` [PATCH v5 19/29] cgroup/cpuset: Wait for an attach before rebuilding the sched domains Mathieu Desnoyers
2026-11-12  7:50   ` Juri Lelli
2026-11-13 15:58   ` Waiman Long
2026-11-13 16:16     ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 20/29] cgroup/cpuset: Give back the bandwidth an attach did not move Mathieu Desnoyers
2026-11-12  9:19   ` Juri Lelli
2026-11-13 13:12     ` Mathieu Desnoyers
2026-11-13 15:57       ` Juri Lelli
2026-11-13 16:14         ` Mathieu Desnoyers
2026-11-13 16:57           ` Juri Lelli
2026-11-08 18:53 ` [PATCH v5 21/29] cgroup/cpuset: Reserve the bandwidth in the root domain a task moves to Mathieu Desnoyers
2026-11-08 19:32   ` sashiko-bot
2026-11-09  2:57     ` Mathieu Desnoyers
2026-11-08 18:53 ` [PATCH v5 22/29] sched/deadline: Make a rebuild use the CPU recorded with a task's bandwidth Mathieu Desnoyers
2026-11-08 19:25   ` sashiko-bot
2026-11-09  2:58     ` Mathieu Desnoyers
2026-11-08 18:54 ` [PATCH v5 23/29] sched/deadline: Move a task's bandwidth when it must leave its CPU Mathieu Desnoyers
2026-11-08 19:41   ` sashiko-bot
2026-11-09  2:58     ` Mathieu Desnoyers
2026-11-08 18:54 ` [PATCH v5 24/29] sched/deadline: Cancel the replenishment timer with the parameters Mathieu Desnoyers
2026-11-12  9:37   ` Juri Lelli
2026-11-08 18:54 ` [PATCH v5 25/29] sched/deadline: Count the bandwidth a boosted task is given Mathieu Desnoyers
2026-11-12 10:29   ` Juri Lelli
2026-11-08 18:54 ` [PATCH v5 26/29] sched/debug: Show the deadline bandwidth of each runqueue Mathieu Desnoyers
2026-11-12 10:36   ` Juri Lelli
2026-11-13 13:36     ` Mathieu Desnoyers
2026-11-13 15:04       ` Juri Lelli
2026-11-08 18:54 ` [PATCH v5 27/29] selftests/sched: Add a test of SCHED_DEADLINE policy round trips Mathieu Desnoyers
2026-11-08 18:54 ` [PATCH v5 28/29] selftests/sched: Test SCHED_DEADLINE bandwidth across a root domain rebuild Mathieu Desnoyers
2026-11-08 18:54 ` [PATCH v5 29/29] selftests/sched: Add a test of SCHED_DEADLINE bandwidth accounting Mathieu Desnoyers

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=638e3138-1dfe-42a0-97bf-2acb32970fa3@redhat.com \
    --to=longman@redhat.com \
    --cc=bigeasy@linutronix.de \
    --cc=boqun@kernel.org \
    --cc=bsegall@google.com \
    --cc=cgroups@vger.kernel.org \
    --cc=clrkwllms@kernel.org \
    --cc=dietmar.eggemann@arm.com \
    --cc=hannes@cmpxchg.org \
    --cc=juri.lelli@redhat.com \
    --cc=kayracizmeci@gmail.com \
    --cc=kprateek.nayak@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-rt-devel@lists.linux.dev \
    --cc=luca.abeni@santannapisa.it \
    --cc=m.szyprowski@samsung.com \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mathieu.poirier@linaro.org \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=mkoutny@suse.com \
    --cc=parri.andrea@gmail.com \
    --cc=peterz@infradead.org \
    --cc=ridong.chen@linux.dev \
    --cc=rostedt@goodmis.org \
    --cc=shuah@kernel.org \
    --cc=tglx@kernel.org \
    --cc=tj@kernel.org \
    --cc=vincent.guittot@linaro.org \
    --cc=vschneid@redhat.com \
    --cc=weihengqiuu@gmail.com \
    --cc=will@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®