From: Luis Machado <luis.machado@arm.com>
To: Peter Zijlstra <peterz@infradead.org>,
Dietmar Eggemann <dietmar.eggemann@arm.com>
Cc: Vincent Guittot <vincent.guittot@linaro.org>,
Hongyan Xia <hongyan.xia2@arm.com>,
mingo@redhat.com, juri.lelli@redhat.com, rostedt@goodmis.org,
bsegall@google.com, mgorman@suse.de, vschneid@redhat.com,
linux-kernel@vger.kernel.org, kprateek.nayak@amd.com,
wuyun.abel@bytedance.com, youssefesmat@chromium.org,
tglx@linutronix.de, efault@gmx.de
Subject: Re: [PATCH 10/24] sched/uclamg: Handle delayed dequeue
Date: Tue, 10 Sep 2024 12:04:11 +0100 [thread overview]
Message-ID: <8d0d01b9-a430-49cc-93a5-67b4d68aa35c@arm.com> (raw)
In-Reply-To: <20240906104525.GG4928@noisy.programming.kicks-ass.net>
Peter,
On 9/6/24 11:45, Peter Zijlstra wrote:
> On Thu, Sep 05, 2024 at 04:53:54PM +0200, Peter Zijlstra wrote:
>
>>> But then, like you said, __update_load_avg_cfs_rq() needs correct
>>> cfs_rq->h_nr_running.
>>
>> Uff. So yes __update_load_avg_cfs_rq() needs a different number, but
>> I'll contest that h_nr_running is in fact correct, albeit no longer
>> suitable for this purpose.
>>
>> We can track h_nr_delayed I suppose, and subtract that.
>
> Something like so?
>
> ---
> kernel/sched/debug.c | 1 +
> kernel/sched/fair.c | 49 ++++++++++++++++++++++++++++++++++++++++++++-----
> kernel/sched/pelt.c | 2 +-
> kernel/sched/sched.h | 7 +++++--
> 4 files changed, 51 insertions(+), 8 deletions(-)
>
> diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
> index 01ce9a76164c..3d3c5be78075 100644
> --- a/kernel/sched/debug.c
> +++ b/kernel/sched/debug.c
> @@ -829,6 +829,7 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq)
> SEQ_printf(m, " .%-30s: %Ld.%06ld\n", "spread", SPLIT_NS(spread));
> SEQ_printf(m, " .%-30s: %d\n", "nr_running", cfs_rq->nr_running);
> SEQ_printf(m, " .%-30s: %d\n", "h_nr_running", cfs_rq->h_nr_running);
> + SEQ_printf(m, " .%-30s: %d\n", "h_nr_delayed", cfs_rq->h_nr_delayed);
> SEQ_printf(m, " .%-30s: %d\n", "idle_nr_running",
> cfs_rq->idle_nr_running);
> SEQ_printf(m, " .%-30s: %d\n", "idle_h_nr_running",
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 11e890486c1b..629b46308960 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -5456,9 +5456,31 @@ static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)
>
> static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq);
>
> -static inline void finish_delayed_dequeue_entity(struct sched_entity *se)
> +static void set_delayed(struct sched_entity *se)
> +{
> + se->sched_delayed = 1;
> + for_each_sched_entity(se) {
> + struct cfs_rq *cfs_rq = cfs_rq_of(se);
> + cfs_rq->h_nr_delayed++;
> + if (cfs_rq_throttled(cfs_rq))
> + break;
> + }
> +}
> +
> +static void clear_delayed(struct sched_entity *se)
> {
> se->sched_delayed = 0;
> + for_each_sched_entity(se) {
> + struct cfs_rq *cfs_rq = cfs_rq_of(se);
> + cfs_rq->h_nr_delayed--;
> + if (cfs_rq_throttled(cfs_rq))
> + break;
> + }
> +}
> +
> +static inline void finish_delayed_dequeue_entity(struct sched_entity *se)
> +{
> + clear_delayed(se);
> if (sched_feat(DELAY_ZERO) && se->vlag > 0)
> se->vlag = 0;
> }
> @@ -5488,7 +5510,7 @@ dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
> if (cfs_rq->next == se)
> cfs_rq->next = NULL;
> update_load_avg(cfs_rq, se, 0);
> - se->sched_delayed = 1;
> + set_delayed(se);
> return false;
> }
> }
> @@ -5907,7 +5929,7 @@ static bool throttle_cfs_rq(struct cfs_rq *cfs_rq)
> struct rq *rq = rq_of(cfs_rq);
> struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
> struct sched_entity *se;
> - long task_delta, idle_task_delta, dequeue = 1;
> + long task_delta, idle_task_delta, delayed_delta, dequeue = 1;
> long rq_h_nr_running = rq->cfs.h_nr_running;
>
> raw_spin_lock(&cfs_b->lock);
> @@ -5940,6 +5962,7 @@ static bool throttle_cfs_rq(struct cfs_rq *cfs_rq)
>
> task_delta = cfs_rq->h_nr_running;
> idle_task_delta = cfs_rq->idle_h_nr_running;
> + delayed_delta = cfs_rq->h_nr_delayed;
> for_each_sched_entity(se) {
> struct cfs_rq *qcfs_rq = cfs_rq_of(se);
> int flags;
> @@ -5963,6 +5986,7 @@ static bool throttle_cfs_rq(struct cfs_rq *cfs_rq)
>
> qcfs_rq->h_nr_running -= task_delta;
> qcfs_rq->idle_h_nr_running -= idle_task_delta;
> + qcfs_rq->h_nr_delayed -= delayed_delta;
>
> if (qcfs_rq->load.weight) {
> /* Avoid re-evaluating load for this entity: */
> @@ -5985,6 +6009,7 @@ static bool throttle_cfs_rq(struct cfs_rq *cfs_rq)
>
> qcfs_rq->h_nr_running -= task_delta;
> qcfs_rq->idle_h_nr_running -= idle_task_delta;
> + qcfs_rq->h_nr_delayed -= delayed_delta;
> }
>
> /* At this point se is NULL and we are at root level*/
> @@ -6010,7 +6035,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq)
> struct rq *rq = rq_of(cfs_rq);
> struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
> struct sched_entity *se;
> - long task_delta, idle_task_delta;
> + long task_delta, idle_task_delta, delayed_delta;
> long rq_h_nr_running = rq->cfs.h_nr_running;
>
> se = cfs_rq->tg->se[cpu_of(rq)];
> @@ -6046,6 +6071,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq)
>
> task_delta = cfs_rq->h_nr_running;
> idle_task_delta = cfs_rq->idle_h_nr_running;
> + delayed_delta = cfs_rq->h_nr_delayed;
> for_each_sched_entity(se) {
> struct cfs_rq *qcfs_rq = cfs_rq_of(se);
>
> @@ -6060,6 +6086,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq)
>
> qcfs_rq->h_nr_running += task_delta;
> qcfs_rq->idle_h_nr_running += idle_task_delta;
> + qcfs_rq->h_nr_delayed += delayed_delta;
>
> /* end evaluation on encountering a throttled cfs_rq */
> if (cfs_rq_throttled(qcfs_rq))
> @@ -6077,6 +6104,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq)
>
> qcfs_rq->h_nr_running += task_delta;
> qcfs_rq->idle_h_nr_running += idle_task_delta;
> + qcfs_rq->h_nr_delayed += delayed_delta;
>
> /* end evaluation on encountering a throttled cfs_rq */
> if (cfs_rq_throttled(qcfs_rq))
> @@ -6930,7 +6958,7 @@ requeue_delayed_entity(struct sched_entity *se)
> }
>
> update_load_avg(cfs_rq, se, 0);
> - se->sched_delayed = 0;
> + clear_delayed(se);
> }
>
> /*
> @@ -6944,6 +6972,7 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
> struct cfs_rq *cfs_rq;
> struct sched_entity *se = &p->se;
> int idle_h_nr_running = task_has_idle_policy(p);
> + int h_nr_delayed = 0;
> int task_new = !(flags & ENQUEUE_WAKEUP);
> int rq_h_nr_running = rq->cfs.h_nr_running;
> u64 slice = 0;
> @@ -6953,6 +6982,9 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
> return;
> }
>
> + if (task_new)
> + h_nr_delayed = !!se->sched_delayed;
> +
> /*
> * The code below (indirectly) updates schedutil which looks at
> * the cfs_rq utilization to select a frequency.
> @@ -6991,6 +7023,7 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
>
> cfs_rq->h_nr_running++;
> cfs_rq->idle_h_nr_running += idle_h_nr_running;
> + cfs_rq->h_nr_delayed += h_nr_delayed;
>
> if (cfs_rq_is_idle(cfs_rq))
> idle_h_nr_running = 1;
> @@ -7014,6 +7047,7 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
>
> cfs_rq->h_nr_running++;
> cfs_rq->idle_h_nr_running += idle_h_nr_running;
> + cfs_rq->h_nr_delayed += h_nr_delayed;
>
> if (cfs_rq_is_idle(cfs_rq))
> idle_h_nr_running = 1;
> @@ -7076,6 +7110,7 @@ static int dequeue_entities(struct rq *rq, struct sched_entity *se, int flags)
> struct task_struct *p = NULL;
> int idle_h_nr_running = 0;
> int h_nr_running = 0;
> + int h_nr_delayed = 0;
> struct cfs_rq *cfs_rq;
> u64 slice = 0;
>
> @@ -7083,6 +7118,8 @@ static int dequeue_entities(struct rq *rq, struct sched_entity *se, int flags)
> p = task_of(se);
> h_nr_running = 1;
> idle_h_nr_running = task_has_idle_policy(p);
> + if (!task_sleep && !task_delayed)
> + h_nr_delayed = !!se->sched_delayed;
> } else {
> cfs_rq = group_cfs_rq(se);
> slice = cfs_rq_min_slice(cfs_rq);
> @@ -7100,6 +7137,7 @@ static int dequeue_entities(struct rq *rq, struct sched_entity *se, int flags)
>
> cfs_rq->h_nr_running -= h_nr_running;
> cfs_rq->idle_h_nr_running -= idle_h_nr_running;
> + cfs_rq->h_nr_delayed -= h_nr_delayed;
>
> if (cfs_rq_is_idle(cfs_rq))
> idle_h_nr_running = h_nr_running;
> @@ -7138,6 +7176,7 @@ static int dequeue_entities(struct rq *rq, struct sched_entity *se, int flags)
>
> cfs_rq->h_nr_running -= h_nr_running;
> cfs_rq->idle_h_nr_running -= idle_h_nr_running;
> + cfs_rq->h_nr_delayed -= h_nr_delayed;
>
> if (cfs_rq_is_idle(cfs_rq))
> idle_h_nr_running = h_nr_running;
> diff --git a/kernel/sched/pelt.c b/kernel/sched/pelt.c
> index fa52906a4478..21e3ff5eb77a 100644
> --- a/kernel/sched/pelt.c
> +++ b/kernel/sched/pelt.c
> @@ -321,7 +321,7 @@ int __update_load_avg_cfs_rq(u64 now, struct cfs_rq *cfs_rq)
> {
> if (___update_load_sum(now, &cfs_rq->avg,
> scale_load_down(cfs_rq->load.weight),
> - cfs_rq->h_nr_running,
> + cfs_rq->h_nr_running - cfs_rq->h_nr_delayed,
> cfs_rq->curr != NULL)) {
>
> ___update_load_avg(&cfs_rq->avg, 1);
> diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
> index 3744f16a1293..d91360b0cca1 100644
> --- a/kernel/sched/sched.h
> +++ b/kernel/sched/sched.h
> @@ -603,6 +603,7 @@ struct cfs_rq {
> unsigned int h_nr_running; /* SCHED_{NORMAL,BATCH,IDLE} */
> unsigned int idle_nr_running; /* SCHED_IDLE */
> unsigned int idle_h_nr_running; /* SCHED_IDLE */
> + unsigned int h_nr_delayed;
>
> s64 avg_vruntime;
> u64 avg_load;
> @@ -813,8 +814,10 @@ struct dl_rq {
>
> static inline void se_update_runnable(struct sched_entity *se)
> {
> - if (!entity_is_task(se))
> - se->runnable_weight = se->my_q->h_nr_running;
> + if (!entity_is_task(se)) {
> + struct cfs_rq *cfs_rq = se->my_q;
> + se->runnable_weight = cfs_rq->h_nr_running - cfs_rq->h_nr_delayed;
> + }
> }
>
> static inline long se_runnable(struct sched_entity *se)
I gave the above patch a try on our Android workload running on the Pixel 6 with a 6.8-based kernel.
First I'd like to confirm that Dietmar's fix that was pushed to tip:sched/core (Fix util_est
accounting for DELAY_DEQUEUE) helps bring the frequencies and power use down to more sensible levels.
As for the above changes, unfortunately I'm seeing high frequencies and high power usage again. The
pattern looks similar to what we observed with the uclamp inc/dec imbalance.
I haven't investigated this in depth yet, but I'll go stare at some traces and the code, and hopefully
something will ring bells.
next prev parent reply other threads:[~2024-09-10 11:04 UTC|newest]
Thread overview: 241+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-27 10:27 [PATCH 00/24] Complete EEVDF Peter Zijlstra
2024-07-27 10:27 ` [PATCH 01/24] sched/eevdf: Add feature comments Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 02/24] sched/eevdf: Remove min_vruntime_copy Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 03/24] sched/fair: Cleanup pick_task_fair() vs throttle Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 04/24] sched/fair: Cleanup pick_task_fair()s curr Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] sched/fair: Cleanup pick_task_fair()'s curr tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 05/24] sched/fair: Unify pick_{,next_}_task_fair() Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 06/24] sched: Allow sched_class::dequeue_task() to fail Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 07/24] sched/fair: Re-organize dequeue_task_fair() Peter Zijlstra
2024-08-09 16:53 ` Valentin Schneider
2024-08-10 22:17 ` Peter Zijlstra
2024-08-12 10:02 ` Valentin Schneider
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 08/24] sched: Split DEQUEUE_SLEEP from deactivate_task() Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 09/24] sched: Prepare generic code for delayed dequeue Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 10/24] sched/uclamg: Handle " Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-08-19 9:14 ` Christian Loehle
2024-08-20 16:23 ` [PATCH 10/24] " Hongyan Xia
2024-08-21 13:34 ` Hongyan Xia
2024-08-22 8:19 ` Vincent Guittot
2024-08-22 8:21 ` Vincent Guittot
2024-08-22 9:21 ` Luis Machado
2024-08-22 9:53 ` Vincent Guittot
2024-08-22 10:20 ` Vincent Guittot
2024-08-22 10:28 ` Luis Machado
2024-08-22 12:07 ` Luis Machado
2024-08-22 12:10 ` Vincent Guittot
2024-08-22 14:58 ` Vincent Guittot
2024-08-29 15:42 ` Hongyan Xia
2024-09-05 13:02 ` Dietmar Eggemann
2024-09-05 13:33 ` Vincent Guittot
2024-09-05 14:07 ` Dietmar Eggemann
2024-09-05 14:29 ` Vincent Guittot
2024-09-05 14:50 ` Dietmar Eggemann
2024-09-05 14:53 ` Peter Zijlstra
2024-09-06 6:14 ` Vincent Guittot
2024-09-06 10:45 ` Peter Zijlstra
2024-09-08 7:43 ` Mike Galbraith
2024-09-10 8:09 ` [tip: sched/core] sched/eevdf: More PELT vs DELAYED_DEQUEUE tip-bot2 for Peter Zijlstra
2024-11-27 4:17 ` K Prateek Nayak
2024-11-27 9:34 ` Luis Machado
2024-11-28 6:35 ` K Prateek Nayak
2024-09-10 11:04 ` Luis Machado [this message]
2024-09-10 14:05 ` [PATCH 10/24] sched/uclamg: Handle delayed dequeue Peter Zijlstra
2024-09-11 8:35 ` Luis Machado
2024-09-11 8:45 ` Peter Zijlstra
2024-09-11 8:55 ` Luis Machado
2024-09-11 9:10 ` Mike Galbraith
2024-09-11 9:13 ` Peter Zijlstra
2024-09-11 9:27 ` Mike Galbraith
2024-09-12 14:00 ` Mike Galbraith
2024-09-13 16:39 ` Mike Galbraith
2024-09-14 3:40 ` Mike Galbraith
2024-09-24 15:16 ` Luis Machado
2024-09-24 17:35 ` Mike Galbraith
2024-09-25 5:14 ` Mike Galbraith
2024-09-11 11:49 ` Dietmar Eggemann
2024-09-11 9:38 ` Luis Machado
2024-09-12 12:58 ` Luis Machado
2024-09-12 20:44 ` Dietmar Eggemann
2024-09-11 10:46 ` Luis Machado
2024-09-06 9:55 ` Dietmar Eggemann
2024-09-05 14:18 ` Peter Zijlstra
2024-09-10 8:09 ` [tip: sched/core] kernel/sched: Fix util_est accounting for DELAY_DEQUEUE tip-bot2 for Dietmar Eggemann
2024-07-27 10:27 ` [PATCH 11/24] sched/fair: Assert {set_next,put_prev}_entity() are properly balanced Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 12/24] sched/fair: Prepare exit/cleanup paths for delayed_dequeue Peter Zijlstra
2024-08-13 12:43 ` Valentin Schneider
2024-08-13 21:54 ` Peter Zijlstra
2024-08-13 22:07 ` Peter Zijlstra
2024-08-14 5:53 ` Peter Zijlstra
2024-08-27 9:35 ` Chen Yu
2024-08-27 20:29 ` Valentin Schneider
2024-08-28 2:55 ` Chen Yu
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-08-27 9:17 ` [PATCH 12/24] " Chen Yu
2024-08-28 3:06 ` Chen Yu
2024-07-27 10:27 ` [PATCH 13/24] sched/fair: Prepare pick_next_task() for delayed dequeue Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-09-10 9:16 ` [PATCH 13/24] " Luis Machado
2024-07-27 10:27 ` [PATCH 14/24] sched/fair: Implement ENQUEUE_DELAYED Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 15/24] sched,freezer: Mark TASK_FROZEN special Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 16/24] sched: Teach dequeue_task() about special task states Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 17/24] sched/fair: Implement delayed dequeue Peter Zijlstra
2024-08-02 14:39 ` Valentin Schneider
2024-08-02 14:59 ` Peter Zijlstra
2024-08-02 16:32 ` Valentin Schneider
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-08-19 10:01 ` [PATCH 17/24] " Luis Machado
[not found] ` <CGME20240828223802eucas1p16755f4531ed0611dc4871649746ea774@eucas1p1.samsung.com>
2024-08-28 22:38 ` Marek Szyprowski
2024-10-10 2:49 ` Sean Christopherson
2024-10-10 7:57 ` Mike Galbraith
2024-10-10 16:18 ` Sean Christopherson
2024-10-10 17:12 ` Mike Galbraith
2024-10-10 8:19 ` Peter Zijlstra
2024-10-10 9:18 ` Peter Zijlstra
2024-10-10 18:23 ` Sean Christopherson
2024-10-12 14:15 ` [tip: sched/urgent] sched: Fix external p->on_rq users tip-bot2 for Peter Zijlstra
2024-10-14 7:28 ` [tip: sched/urgent] sched/fair: " tip-bot2 for Peter Zijlstra
2024-11-01 12:47 ` [PATCH 17/24] sched/fair: Implement delayed dequeue Phil Auld
2024-11-01 12:56 ` Peter Zijlstra
2024-11-01 13:38 ` Phil Auld
2024-11-01 14:26 ` Peter Zijlstra
2024-11-01 14:42 ` Phil Auld
2024-11-01 18:08 ` Mike Galbraith
2024-11-01 20:07 ` Phil Auld
2024-11-02 4:32 ` Mike Galbraith
2024-11-04 13:05 ` Phil Auld
2024-11-05 4:05 ` Mike Galbraith
2024-11-05 4:22 ` K Prateek Nayak
2024-11-05 6:46 ` Mike Galbraith
2024-11-06 3:02 ` K Prateek Nayak
2024-11-05 15:20 ` Phil Auld
2024-11-05 19:05 ` Phil Auld
2024-11-06 2:45 ` Mike Galbraith
2024-11-06 13:53 ` Peter Zijlstra
2024-11-06 14:14 ` Peter Zijlstra
2024-11-06 14:38 ` Peter Zijlstra
2024-11-06 15:22 ` Mike Galbraith
2024-11-07 4:03 ` Mike Galbraith
2024-11-07 9:46 ` Mike Galbraith
2024-11-07 14:02 ` Mike Galbraith
2024-11-07 14:09 ` Peter Zijlstra
2024-11-08 0:24 ` [PATCH] sched/fair: Dequeue sched_delayed tasks when waking to a busy CPU Mike Galbraith
2024-11-08 13:34 ` Phil Auld
2024-11-11 2:46 ` Xuewen Yan
2024-11-11 3:53 ` Mike Galbraith
2024-11-12 7:05 ` Mike Galbraith
2024-11-12 12:41 ` Phil Auld
2024-11-12 14:23 ` Peter Zijlstra
2024-11-12 14:23 ` Mike Galbraith
2024-11-12 15:41 ` Phil Auld
2024-11-12 16:15 ` Mike Galbraith
2024-11-14 11:07 ` Mike Galbraith
2024-11-14 11:28 ` Phil Auld
2024-11-19 11:30 ` Phil Auld
2024-11-19 11:51 ` Mike Galbraith
2024-11-20 18:37 ` Mike Galbraith
2024-11-21 11:56 ` Phil Auld
2024-11-21 12:07 ` Phil Auld
2024-11-21 21:21 ` Phil Auld
2024-11-23 8:44 ` [PATCH V2] " Mike Galbraith
2024-11-26 5:32 ` K Prateek Nayak
2024-11-26 6:30 ` Mike Galbraith
2024-11-26 9:42 ` Mike Galbraith
2024-12-02 19:15 ` Phil Auld
2024-11-27 14:13 ` Mike Galbraith
2024-12-02 16:24 ` Phil Auld
2024-12-02 16:55 ` Mike Galbraith
2024-12-02 19:12 ` Phil Auld
2024-12-09 13:11 ` Phil Auld
2024-12-09 15:06 ` Mike Galbraith
2024-11-06 14:14 ` [PATCH 17/24] sched/fair: Implement delayed dequeue Mike Galbraith
2024-11-06 14:33 ` Peter Zijlstra
2024-11-04 9:28 ` Dietmar Eggemann
2024-11-04 11:55 ` Dietmar Eggemann
2024-11-04 12:50 ` Phil Auld
2024-11-05 9:53 ` Christian Loehle
2024-11-05 15:55 ` Phil Auld
2024-11-08 14:53 ` Dietmar Eggemann
2024-11-08 18:16 ` Phil Auld
2024-11-11 11:29 ` Dietmar Eggemann
2024-07-27 10:27 ` [PATCH 18/24] sched/fair: Implement DELAY_ZERO Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 19/24] sched/eevdf: Fixup PELT vs DELAYED_DEQUEUE Peter Zijlstra
2024-08-13 12:43 ` Valentin Schneider
2024-08-13 22:18 ` Peter Zijlstra
2024-08-14 7:25 ` Peter Zijlstra
2024-08-14 7:28 ` Peter Zijlstra
2024-08-14 10:23 ` Valentin Schneider
2024-08-14 12:59 ` Vincent Guittot
2024-08-17 23:06 ` Peter Zijlstra
2024-08-19 12:50 ` Vincent Guittot
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 20/24] sched/fair: Avoid re-setting virtual deadline on migrations Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] sched/fair: Avoid re-setting virtual deadline on 'migrations' tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 21/24] sched/eevdf: Allow shorter slices to wakeup-preempt Peter Zijlstra
2024-08-05 12:24 ` Chunxin Zang
2024-08-07 17:54 ` Peter Zijlstra
2024-08-13 10:44 ` Chunxin Zang
2024-08-08 10:15 ` Chen Yu
2024-08-08 10:22 ` Peter Zijlstra
2024-08-08 12:31 ` Chen Yu
2024-08-09 7:35 ` Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 22/24] sched/eevdf: Use sched_attr::sched_runtime to set request/slice suggestion Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-07-27 10:27 ` [PATCH 23/24] sched/eevdf: Propagate min_slice up the cgroup hierarchy Peter Zijlstra
2024-08-18 6:23 ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-09-29 2:02 ` [PATCH 23/24] " Tianchen Ding
2024-07-27 10:27 ` [RFC PATCH 24/24] sched/time: Introduce CLOCK_THREAD_DVFS_ID Peter Zijlstra
2024-07-28 21:30 ` Thomas Gleixner
2024-07-29 7:53 ` Juri Lelli
2024-08-02 11:29 ` Peter Zijlstra
2024-08-19 11:11 ` Christian Loehle
2024-08-01 12:08 ` [PATCH 00/24] Complete EEVDF Luis Machado
2024-08-14 14:34 ` Vincent Guittot
2024-08-14 16:45 ` Mike Galbraith
2024-08-14 16:59 ` Vincent Guittot
2024-08-14 17:18 ` Mike Galbraith
2024-08-14 17:25 ` Vincent Guittot
2024-08-14 17:35 ` K Prateek Nayak
2024-08-16 15:22 ` Valentin Schneider
2024-08-20 16:43 ` Hongyan Xia
2024-08-21 9:46 ` Hongyan Xia
2024-08-21 16:25 ` Mike Galbraith
2024-08-22 15:55 ` Peter Zijlstra
2024-08-27 9:43 ` Hongyan Xia
2024-08-29 17:02 ` Aleksandr Nogikh
2024-09-10 11:45 ` Sven Schnelle
2024-09-10 12:21 ` Sven Schnelle
2024-09-10 14:07 ` Peter Zijlstra
2024-09-10 14:52 ` Sven Schnelle
2024-11-06 1:07 ` Saravana Kannan
2024-11-06 6:19 ` K Prateek Nayak
2024-11-06 11:09 ` Peter Zijlstra
2024-11-06 12:06 ` Luis Machado
2024-11-08 7:07 ` Saravana Kannan
2024-11-08 23:17 ` Samuel Wu
2024-11-11 4:07 ` K Prateek Nayak
2024-11-26 23:32 ` Saravana Kannan
2024-11-28 10:32 ` [REGRESSION] " Marcel Ziswiler
2024-11-28 10:58 ` Peter Zijlstra
2024-11-28 11:37 ` Marcel Ziswiler
2024-11-29 9:08 ` Peter Zijlstra
2024-12-02 18:46 ` Marcel Ziswiler
2024-12-09 9:49 ` Peter Zijlstra
2024-12-10 16:05 ` Marcel Ziswiler
2024-12-10 16:13 ` Steven Rostedt
2024-12-10 8:45 ` Luis Machado
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=8d0d01b9-a430-49cc-93a5-67b4d68aa35c@arm.com \
--to=luis.machado@arm.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=efault@gmx.de \
--cc=hongyan.xia2@arm.com \
--cc=juri.lelli@redhat.com \
--cc=kprateek.nayak@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=wuyun.abel@bytedance.com \
--cc=youssefesmat@chromium.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®