From: Waiman Long <longman@redhat.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Will Deacon <will@kernel.org>,
linux-kernel@vger.kernel.org, kernel-team@android.com,
Zefan Li <lizefan.x@bytedance.com>, Tejun Heo <tj@kernel.org>,
Johannes Weiner <hannes@cmpxchg.org>,
cgroups@vger.kernel.org
Subject: Re: [PATCH 1/2] cpuset: Fix cpuset_cpus_allowed() to not filter offline CPUs
Date: Wed, 1 Feb 2023 22:34:00 -0500 [thread overview]
Message-ID: <773e2f22-211e-163f-64bb-15ae29ad161b@redhat.com> (raw)
In-Reply-To: <Y9rVVldS19oyIZ+g@hirez.programming.kicks-ass.net>
On 2/1/23 16:10, Peter Zijlstra wrote:
> On Wed, Feb 01, 2023 at 01:46:11PM -0500, Waiman Long wrote:
>
>> Note that using cpus_allowed directly in cgroup v2 may not be right because
>> cpus_allowed may have no relationship to effective_cpus at all in some
>> cases, e.g.
>>
>> root
>> |
>> V
>> A (cpus_allowed = 1-4, effective_cpus = 1-4)
>> |
>> V
>> B (cpus_allowed = 5-8, effective_cpus = 1-4)
>>
>> In the case of cpuset B, passing back cpus 5-8 as the allowed_cpus is wrong.
> I think my patch as written does the right thing here. Since the
> intersection of (1-4) and (5-8) is empty it will move up the hierarchy
> and we'll end up with (1-4) from the cgroup side of things.
>
> So the purpose of __cs_cpus_allowed() is to override the cpus_allowed of
> the root set and force it to cpu_possible_mask.
>
> Then cs_cpus_allowed() computes the intersection of cs->cpus_allowed and
> all it's parents. This will, in the case of B above, result in the empty
> mask.
>
> Then cpuset_cpus_allowed() has a loop that starts with
> task_cpu_possible_mask(), intersects that with cs_cpus_allowed() and if
> the intersection of that and cpu_online_mask is empty, moves up the
> hierarchy. Given cs_cpus_allowed(B) is the empty mask, we'll move to A.
>
> Note that since we force the mask of root to cpu_possible_mask,
> cs_cpus_allowed(root) will be a no-op and if we guarantee (in arch code)
> that cpu_online_mask always has a non-empty intersection with
> task_cpu_possible_mask(), this loop is guaranteed to terminate with a
> viable mask.
I will take a closer look at that tomorrow. I will be more comfortable
ack'ing that if this is specific to v1 cpuset instead of applying this
in both v1 and v2 since it is only v1 that is problematic.
Cheers,
Longman
next prev parent reply other threads:[~2023-02-02 3:35 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-31 22:17 [PATCH 0/2] Fix broken cpuset affinity handling on heterogeneous systems Will Deacon
2023-01-31 22:17 ` [PATCH 1/2] cpuset: Fix cpuset_cpus_allowed() to not filter offline CPUs Will Deacon
2023-02-01 4:14 ` Waiman Long
2023-02-01 9:14 ` Peter Zijlstra
2023-02-01 15:16 ` Waiman Long
2023-02-01 18:46 ` Waiman Long
2023-02-01 19:14 ` Waiman Long
2023-02-01 19:17 ` Waiman Long
2023-02-01 21:10 ` Peter Zijlstra
2023-02-02 3:34 ` Waiman Long [this message]
2023-02-03 11:50 ` Will Deacon
2023-02-03 15:13 ` Waiman Long
2023-02-03 15:26 ` Peter Zijlstra
2023-02-03 15:35 ` Waiman Long
2023-02-02 8:34 ` Peter Zijlstra
2023-02-02 16:06 ` Waiman Long
2023-02-02 19:42 ` Peter Zijlstra
2023-02-02 20:46 ` Waiman Long
2023-02-02 20:48 ` Tejun Heo
2023-02-02 20:53 ` Waiman Long
2023-02-02 21:05 ` Waiman Long
2023-02-02 21:50 ` Tejun Heo
2023-02-03 0:54 ` Waiman Long
2023-02-03 16:31 ` Will Deacon
2023-01-31 22:17 ` [PATCH 2/2] cpuset: Call set_cpus_allowed_ptr() with appropriate mask for task Will Deacon
2023-02-01 2:22 ` Waiman Long
2023-02-01 9:15 ` Peter Zijlstra
2023-02-01 15:03 ` Waiman Long
2023-02-01 9:27 ` Peter Zijlstra
2023-02-03 17:55 ` Waiman Long
2023-02-06 20:21 ` Tejun Heo
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=773e2f22-211e-163f-64bb-15ae29ad161b@redhat.com \
--to=longman@redhat.com \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@android.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan.x@bytedance.com \
--cc=peterz@infradead.org \
--cc=tj@kernel.org \
--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
Powered by JetHome