[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9777b2f5-2dae-679e-4fe6-f5019ac7a18f@redhat.com>
Date: Thu, 6 Oct 2022 17:31:11 -0400
From: Waiman Long <longman@...hat.com>
To: Peter Zijlstra <peterz@...radead.org>
Cc: linux-kernel@...r.kernel.org,
Linus Torvalds <torvalds@...ux-foundation.org>,
Lai Jiangshan <jiangshanlai@...il.com>,
Juri Lelli <juri.lelli@...hat.com>,
Ingo Molnar <mingo@...hat.com>,
Vincent Guittot <vincent.guittot@...aro.org>,
Dietmar Eggemann <dietmar.eggemann@....com>,
Steven Rostedt <rostedt@...dmis.org>,
Ben Segall <bsegall@...gle.com>, Mel Gorman <mgorman@...e.de>,
Daniel Bristot de Oliveira <bristot@...hat.com>,
Valentin Schneider <vschneid@...hat.com>,
Tejun Heo <tj@...nel.org>, Zefan Li <lizefan.x@...edance.com>,
Johannes Weiner <hannes@...xchg.org>,
Will Deacon <will@...nel.org>
Subject: Re: [PATCH v10 0/5] sched: Persistent user requested affinity
On 9/22/22 14:00, Waiman Long wrote:
> v10:
> - Squash patches 4, 5 & 6 together into a single patch as suggested
> by PeterZ.
>
> v9:
> - Fix non-SMP config build errors in patch 4 reported by kernel test
> robot.
> - Disable user_cpus_ptr masking also when any of the SCA_MIGRATE_*
> flags are set.
>
> v8:
> - Add patches "sched: Introduce affinity_context structure" and
> "sched: Always clear user_cpus_ptr in do_set_cpus_allowed()" as
> suggested by PeterZ.
> - Better handle cpuset and sched_setaffinity() race in patch 5.
>
> v7:
> - Make changes recommended by Peter such as making scratch_mask
> allocation earlier and using percpu variable to pass information.
>
> The user_cpus_ptr field is added by commit b90ca8badbd1 ("sched:
> Introduce task_struct::user_cpus_ptr to track requested affinity")
> which uses it narrowly to allow keeping cpus affinity intact with
> asymmetric cpu setup.
>
> This patchset extends user_cpus_ptr to store user requested cpus affinity
> via the sched_setaffinity() API. With that information available, it will
> enable cpuset and other callers of set_cpus_allowed_ptr() like hotplug
> to keep cpus afinity as close to what the user wants as possible within
> the cpu list constraint of the current cpuset. Otherwise some change
> to the cpuset hierarchy or a hotplug event may reset the cpumask of
> the tasks in the affected cpusets to the default cpuset value even if
> those tasks have cpus affinity explicitly set by the users before.
>
> It also means that once sched_setaffinity() is called successfully,
> user_cpus_ptr will remain allocated until the task exits except in some
> rare circumstances.
>
> Waiman Long (5):
> sched: Add __releases annotations to affine_move_task()
> sched: Use user_cpus_ptr for saving user provided cpumask in
> sched_setaffinity()
> sched: Enforce user requested affinity
> sched: Handle set_cpus_allowed_ptr(), sched_setaffinity() & other
> races
> sched: Always clear user_cpus_ptr in do_set_cpus_allowed()
>
> kernel/sched/core.c | 231 +++++++++++++++++++++++++---------------
> kernel/sched/deadline.c | 7 +-
> kernel/sched/sched.h | 22 +++-
> 3 files changed, 169 insertions(+), 91 deletions(-)
>
Peter, do you have any further suggestion on how to improve this series?
Thanks,
Longman
Powered by blists - more mailing lists