[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <90b2e62f-cacc-49b2-acf7-3a33348e2210@linux.dev>
Date: Wed, 21 May 2025 16:48:44 +0800
From: Chengming Zhou <chengming.zhou@...ux.dev>
To: Aaron Lu <ziqianlu@...edance.com>,
Valentin Schneider <vschneid@...hat.com>, Ben Segall <bsegall@...gle.com>,
K Prateek Nayak <kprateek.nayak@....com>,
Peter Zijlstra <peterz@...radead.org>, Josh Don <joshdon@...gle.com>,
Ingo Molnar <mingo@...hat.com>, Vincent Guittot
<vincent.guittot@...aro.org>, Xi Wang <xii@...gle.com>
Cc: linux-kernel@...r.kernel.org, Juri Lelli <juri.lelli@...hat.com>,
Dietmar Eggemann <dietmar.eggemann@....com>,
Steven Rostedt <rostedt@...dmis.org>, Mel Gorman <mgorman@...e.de>,
Chuyi Zhou <zhouchuyi@...edance.com>, Jan Kiszka <jan.kiszka@...mens.com>,
Florian Bezdeka <florian.bezdeka@...mens.com>
Subject: Re: [PATCH 1/7] sched/fair: Add related data structure for task based
throttle
On 2025/5/20 18:41, Aaron Lu wrote:
> From: Valentin Schneider <vschneid@...hat.com>
>
> Add related data structures for this new throttle functionality.
>
> Signed-off-by: Valentin Schneider <vschneid@...hat.com>
> Signed-off-by: Aaron Lu <ziqianlu@...edance.com>
Looks good to me.
Reviewed-by: Chengming Zhou <chengming.zhou@...ux.dev>
Thanks!
> ---
> include/linux/sched.h | 4 ++++
> kernel/sched/core.c | 3 +++
> kernel/sched/fair.c | 12 ++++++++++++
> kernel/sched/sched.h | 2 ++
> 4 files changed, 21 insertions(+)
>
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index b98195991031c..055f3782eeaee 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -879,6 +879,10 @@ struct task_struct {
>
> #ifdef CONFIG_CGROUP_SCHED
> struct task_group *sched_task_group;
> +#ifdef CONFIG_CFS_BANDWIDTH
> + struct callback_head sched_throttle_work;
> + struct list_head throttle_node;
> +#endif
> #endif
>
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index bece0ba6f5b3a..b7ca7cefee54e 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -4499,6 +4499,9 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p)
>
> #ifdef CONFIG_FAIR_GROUP_SCHED
> p->se.cfs_rq = NULL;
> +#ifdef CONFIG_CFS_BANDWIDTH
> + init_cfs_throttle_work(p);
> +#endif
> #endif
>
> #ifdef CONFIG_SCHEDSTATS
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index eb5a2572b4f8b..75bf6186a5137 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -5825,6 +5825,18 @@ static inline int throttled_lb_pair(struct task_group *tg,
> throttled_hierarchy(dest_cfs_rq);
> }
>
> +static void throttle_cfs_rq_work(struct callback_head *work)
> +{
> +}
> +
> +void init_cfs_throttle_work(struct task_struct *p)
> +{
> + init_task_work(&p->sched_throttle_work, throttle_cfs_rq_work);
> + /* Protect against double add, see throttle_cfs_rq() and throttle_cfs_rq_work() */
> + p->sched_throttle_work.next = &p->sched_throttle_work;
> + INIT_LIST_HEAD(&p->throttle_node);
> +}
> +
> static int tg_unthrottle_up(struct task_group *tg, void *data)
> {
> struct rq *rq = data;
> diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
> index c5a6a503eb6de..921527327f107 100644
> --- a/kernel/sched/sched.h
> +++ b/kernel/sched/sched.h
> @@ -2703,6 +2703,8 @@ extern bool sched_rt_bandwidth_account(struct rt_rq *rt_rq);
>
> extern void init_dl_entity(struct sched_dl_entity *dl_se);
>
> +extern void init_cfs_throttle_work(struct task_struct *p);
> +
> #define BW_SHIFT 20
> #define BW_UNIT (1 << BW_SHIFT)
> #define RATIO_SHIFT 8
Powered by blists - more mailing lists