The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Luis Machado <luis.machado@arm.com>
To: Vincent Guittot <vincent.guittot@linaro.org>,
	mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com,
	dietmar.eggemann@arm.com, rostedt@goodmis.org,
	bsegall@google.com, mgorman@suse.de, vschneid@redhat.com,
	linux-kernel@vger.kernel.org
Cc: kprateek.nayak@amd.com, pauld@redhat.com, efault@gmx.de,
	tj@kernel.org, void@manifault.com
Subject: Re: [PATCH 0/11 v3] sched/fair: Fix statistics with delayed dequeue
Date: Wed, 4 Dec 2024 19:10:01 +0000	[thread overview]
Message-ID: <d36ed494-0143-4afa-8c14-cac7b5d20245@arm.com> (raw)
In-Reply-To: <20241202174606.4074512-1-vincent.guittot@linaro.org>

On 12/2/24 17:45, Vincent Guittot wrote:
> Delayed dequeued feature keeps a sleeping sched_entitiy enqueued until its
> lag has elapsed. As a result, it stays also visible in the statistics that
> are used to balance the system and in particular the field h_nr_running.
> 
> This serie fixes those metrics by creating a new h_nr_runnable that tracks
> only tasks that want to run. It renames h_nr_running into h_nr_runnable.
> 
> h_nr_runnable is used in several places to make decision on load balance:
>   - PELT runnable_avg
>   - deciding if a group is overloaded or has spare capacity
>   - numa stats
>   - reduced capacity management
>   - load balance between groups
> 
> While fixing h_nr_running, some fields have been renamed to follow the
> same pattern. We now have:
>   - cfs.h_nr_runnable : running tasks in the hierarchy
>   - cfs.h_nr_queued : enqueued tasks in the hierarchy either running or
>       delayed dequeue
>   - cfs.h_nr_idle : enqueued sched idle tasks in the hierarchy
> 
> cfs.nr_running has been rename cfs.nr_queued because it includes the
> delayed dequeued entities
> 
> The unused cfs.idle_nr_running has been removed
> 
> Load balance compares the number of running tasks when selecting the
> busiest group or runqueue and tries to migrate a runnable task and not a
> sleeping delayed dequeue one. delayed dequeue tasks are considered only
> when migrating load as they continue to impact it.
> 
> It should be noticed that this serie doesn't fix the problem of delayed
> dequeued tasks that can't migrate at wakeup.
> 
> Some additional cleanups have been added:
>   - move variable declaration at the beginning of pick_next_entity()
>     and dequeue_entity() 
>   - sched_can_stop_tick() should use cfs.h_nr_queued instead of
>     cfs.nr_queued (previously cfs.nr_running) to know how many tasks
>     are running in the whole hierarchy instead of how many entities at
>     root level
> 
> Changes since v2:
> - Fix h_nr_runnable after removing h_nr_delayed (reported by Mike and Prateek)
> - Move "sched/fair: Fix sched_can_stop_tick() for fair tasks" at the
>   beginning of the series so it can be easily backported (asked by Prateek)
> - Split "sched/fair: Add new cfs_rq.h_nr_runnable" in 2 patches. One
>   for the creation of h_nr_runnable and one for its use (asked by Peter)
> - Fix more variable declarations (reported Prateek)
> 
> 
> Changes since v1:
> - reorder the patches
> - rename fields into:
>   - h_nr_queued for all tasks queued both runnable and delayed dequeue
>   - h_nr_runnable for all runnable tasks
>   - h_nr_idle for all tasks with sched_idle policy
> - Cleanup how h_nr_runnable is updated in enqueue_task_fair() and
>   dequeue_entities
> 
> Peter Zijlstra (1):
>   sched/eevdf: More PELT vs DELAYED_DEQUEUE
> 
> Vincent Guittot (10):
>   sched/fair: Fix sched_can_stop_tick() for fair tasks
>   sched/fair: Rename h_nr_running into h_nr_queued
>   sched/fair: Add new cfs_rq.h_nr_runnable
>   sched/fair: Use the new cfs_rq.h_nr_runnable
>   sched/fair: Removed unsued cfs_rq.h_nr_delayed
>   sched/fair: Rename cfs_rq.idle_h_nr_running into h_nr_idle
>   sched/fair: Remove unused cfs_rq.idle_nr_running
>   sched/fair: Rename cfs_rq.nr_running into nr_queued
>   sched/fair: Do not try to migrate delayed dequeue task
>   sched/fair: Fix variable declaration position
> 
>  kernel/sched/core.c  |   4 +-
>  kernel/sched/debug.c |  14 ++-
>  kernel/sched/fair.c  | 240 ++++++++++++++++++++++++-------------------
>  kernel/sched/pelt.c  |   4 +-
>  kernel/sched/sched.h |  12 +--
>  5 files changed, 153 insertions(+), 121 deletions(-)
> 

Sorry, it took me a bit to work the backports for 6.8/Android. I gave this series a try
on the Pixel 6 with a couple workloads (Speedometer and a UI-based one) and I didn't
spot any significant performance/frame metric differences or power metric differences compared
to a 6.8 kernel with this series applied.

Also, checking the statistics for the cores didn't show any numbers that are obviously wrong.

Though the kernel version is a bit behind mainline, I hope that's useful.

Tested-By: Luis Machado <luis.machado@arm.com>

  parent reply	other threads:[~2024-12-04 19:10 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-02 17:45 [PATCH 0/11 v3] sched/fair: Fix statistics with delayed dequeue Vincent Guittot
2024-12-02 17:45 ` [PATCH 01/11 v3] sched/fair: Fix sched_can_stop_tick() for fair tasks Vincent Guittot
2024-12-09 11:00   ` [tip: sched/core] " tip-bot2 for Vincent Guittot
2024-12-02 17:45 ` [PATCH 02/11 v3] sched/eevdf: More PELT vs DELAYED_DEQUEUE Vincent Guittot
2024-12-09 11:00   ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2024-12-02 17:45 ` [PATCH 03/11 v3] sched/fair: Rename h_nr_running into h_nr_queued Vincent Guittot
2024-12-09 11:00   ` [tip: sched/core] " tip-bot2 for Vincent Guittot
2024-12-02 17:45 ` [PATCH 04/11 v3] sched/fair: Add new cfs_rq.h_nr_runnable Vincent Guittot
2024-12-09 11:00   ` [tip: sched/core] " tip-bot2 for Vincent Guittot
2024-12-02 17:46 ` [PATCH 05/11 v3] sched/fair: Use the " Vincent Guittot
2024-12-09 11:00   ` [tip: sched/core] " tip-bot2 for Vincent Guittot
2024-12-02 17:46 ` [PATCH 06/11 v3] sched/fair: Removed unsued cfs_rq.h_nr_delayed Vincent Guittot
2024-12-09 11:00   ` [tip: sched/core] " tip-bot2 for Vincent Guittot
2024-12-02 17:46 ` [PATCH 07/11 v3] sched/fair: Rename cfs_rq.idle_h_nr_running into h_nr_idle Vincent Guittot
2024-12-09 11:00   ` [tip: sched/core] " tip-bot2 for Vincent Guittot
2024-12-02 17:46 ` [PATCH 08/11 v3] sched/fair: Remove unused cfs_rq.idle_nr_running Vincent Guittot
2024-12-09 11:00   ` [tip: sched/core] " tip-bot2 for Vincent Guittot
2024-12-02 17:46 ` [PATCH 09/11 v3] sched/fair: Rename cfs_rq.nr_running into nr_queued Vincent Guittot
2024-12-09 11:00   ` [tip: sched/core] " tip-bot2 for Vincent Guittot
2024-12-02 17:46 ` [PATCH 10/11 v3] sched/fair: Do not try to migrate delayed dequeue task Vincent Guittot
2024-12-09 11:00   ` [tip: sched/core] " tip-bot2 for Vincent Guittot
2024-12-02 17:46 ` [PATCH 11/11 v3] sched/fair: Fix variable declaration position Vincent Guittot
2024-12-09 11:00   ` [tip: sched/core] " tip-bot2 for Vincent Guittot
2024-12-03 10:41 ` [PATCH 0/11 v3] sched/fair: Fix statistics with delayed dequeue Dietmar Eggemann
2024-12-03 11:18   ` Peter Zijlstra
2024-12-03 13:37     ` Vincent Guittot
2024-12-04 19:10 ` Luis Machado [this message]
2024-12-05  7:23   ` Vincent Guittot

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=d36ed494-0143-4afa-8c14-cac7b5d20245@arm.com \
    --to=luis.machado@arm.com \
    --cc=bsegall@google.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=efault@gmx.de \
    --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=pauld@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tj@kernel.org \
    --cc=vincent.guittot@linaro.org \
    --cc=void@manifault.com \
    --cc=vschneid@redhat.com \
    /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