From: Dietmar Eggemann <dietmar.eggemann@arm.com>
To: Vincent Guittot <vincent.guittot@linaro.org>,
mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com,
rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de,
bristot@redhat.com, vschneid@redhat.com,
linux-kernel@vger.kernel.org, parth@linux.ibm.com
Cc: qais.yousef@arm.com, chris.hyser@oracle.com,
valentin.schneider@arm.com, patrick.bellasi@matbug.net,
David.Laight@aculab.com, pjt@google.com, pavel@ucw.cz,
tj@kernel.org, qperret@google.com, tim.c.chen@linux.intel.com,
joshdon@google.com
Subject: Re: [PATCH v4 5/8] sched/fair: Take into account latency priority at wakeup
Date: Mon, 19 Sep 2022 12:05:19 +0200 [thread overview]
Message-ID: <073938c4-ab23-2270-8e60-291f2901e230@arm.com> (raw)
In-Reply-To: <20220916080305.29574-6-vincent.guittot@linaro.org>
On 16/09/2022 10:03, Vincent Guittot wrote:
[...]
> @@ -4512,7 +4519,7 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
> p->prio = current->normal_prio;
>
> /* Propagate the parent's latency requirements to the child as well */
> - p->latency_nice = current->latency_nice;
> + p->latency_prio = current->latency_prio;
Isn't here a `set_latency_offset(p)` missing here?
>
> uclamp_fork(p);
>
[...]
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index e8c1b889dcbb..a20eadb0af97 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -4574,6 +4574,8 @@ dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
> update_idle_cfs_rq_clock_pelt(cfs_rq);
> }
>
> +static long wakeup_latency_gran(struct sched_entity *curr, struct sched_entity *se);
minor: `struct sched_entity *curr` ... doesn't have to be current
(cfs_rq->curr). Isn't this more like `struct sched_entity *sea, struct
sched_entity *seb`? Anyway, it's already the case for
`wakeup_preempt_entity`.
[...]
> @@ -5732,6 +5735,35 @@ static int sched_idle_cpu(int cpu)
> }
> #endif
>
> +static void set_next_buddy(struct sched_entity *se);
> +
> +static void check_preempt_from_others(struct cfs_rq *cfs, struct sched_entity *se)
minor: Why `struct cfs_rq *cfs` and not `struct cfs_rq *cfs_rq` ?
Using `cfs_rq` would make it more consistent when looking for things
like `cfs_rq->nr_running` for example.
> +{
> + struct sched_entity *next;
> +
> + if (se->latency_offset >= 0)
> + return;
> +
> + if (cfs->nr_running <= 1)
> + return;
> + /*
> + * When waking from idle, we don't need to check to preempt at wakeup
s/idle/others ?
> + * the idle thread and don't set next buddy as a candidate for being
> + * picked in priority.
> + * In case of simultaneous wakeup from idle, the latency sensitive tasks
> + * lost opportunity to preempt non sensitive tasks which woke up
> + * simultaneously.
> + */
The position of this comment block within this function is somehow
misleading since it describes the reason for the function rather then a
particular condition within this function. Wouldn't it be more readable
when it would be a function header comment instead?
[...]
> @@ -7148,6 +7181,22 @@ balance_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
> }
> #endif /* CONFIG_SMP */
>
> +static long wakeup_latency_gran(struct sched_entity *curr, struct sched_entity *se)
> +{
> + long latency_offset = se->latency_offset;
> +
> + /*
> + * A negative latency weigth means that the sched_entity has latency
s/weigth/latency_offset ?
> + * requirement that needs to be evaluated versus other entity.
> + * Otherwise, use the latency weight to evaluate how much scheduling
> + * delay is acceptable by se.
> + */
> + if ((se->latency_offset < 0) || (curr->latency_offset < 0))
> + latency_offset -= curr->latency_offset;
I still don't get the rationale behind why when either one (se or curr)
of the latency_nice values is negative, we use the diff between them but
if not, we only care about se's value. Why don't you always use the diff
between se and curr? Since we have a range [-20 ... 19] why shouldn't we
use the difference between let's say se = 19 and curr = 5?
You discussed this with Tao Zhou on the v1 but I didn't understand it fully.
[...]
next prev parent reply other threads:[~2022-09-19 10:05 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-16 8:02 [PATCH v4 0/8] Add latency priority for CFS class Vincent Guittot
2022-09-16 8:02 ` [PATCH v4 1/8] sched: Introduce latency-nice as a per-task attribute Vincent Guittot
2022-09-16 8:02 ` [PATCH v4 2/8] sched/core: Propagate parent task's latency requirements to the child task Vincent Guittot
2022-09-16 8:03 ` [PATCH v4 3/8] sched: Allow sched_{get,set}attr to change latency_nice of the task Vincent Guittot
2022-09-16 8:03 ` [PATCH v4 4/8] sched/core: Add permission checks for setting the latency_nice value Vincent Guittot
2022-09-19 8:52 ` timj
2022-09-19 8:52 ` timj
2022-09-19 12:41 ` Vincent Guittot
2022-09-20 10:18 ` Tim Janik
2022-09-20 14:56 ` Vincent Guittot
2022-09-21 16:11 ` Vincent Guittot
2022-09-16 8:03 ` [PATCH v4 5/8] sched/fair: Take into account latency priority at wakeup Vincent Guittot
[not found] ` <20220916120245.2951-1-hdanton@sina.com>
2022-09-16 13:36 ` Vincent Guittot
[not found] ` <20220917225819.817-1-hdanton@sina.com>
2022-09-18 10:46 ` Vincent Guittot
[not found] ` <20220920113238.1176-1-hdanton@sina.com>
2022-09-20 15:17 ` Vincent Guittot
2022-09-19 10:05 ` Dietmar Eggemann [this message]
2022-09-19 15:39 ` Vincent Guittot
2022-09-20 13:18 ` Dietmar Eggemann
2022-09-20 15:49 ` Vincent Guittot
2022-09-21 22:41 ` Dietmar Eggemann
2022-09-22 7:12 ` Vincent Guittot
2022-09-22 16:50 ` Dietmar Eggemann
2022-09-23 6:01 ` Vincent Guittot
2022-09-16 8:03 ` [PATCH v4 6/8] sched/fair: Add sched group latency support Vincent Guittot
2022-09-19 11:55 ` Dietmar Eggemann
2022-09-19 15:49 ` Vincent Guittot
2022-09-19 17:34 ` Tejun Heo
2022-09-20 7:03 ` Vincent Guittot
2022-09-21 16:07 ` Qais Yousef
2022-09-21 16:48 ` Tejun Heo
2022-09-21 17:02 ` Vincent Guittot
2022-09-21 17:12 ` Tejun Heo
2022-09-22 6:40 ` Vincent Guittot
2022-09-22 10:49 ` Qais Yousef
2022-09-20 18:17 ` Dietmar Eggemann
2022-09-21 7:48 ` Vincent Guittot
2022-09-19 17:34 ` Tejun Heo
2022-09-20 7:02 ` Vincent Guittot
2022-09-16 8:03 ` [PATCH v4 7/8] sched/core: support latency priority with sched core Vincent Guittot
2022-09-16 8:03 ` [PATCH v4 8/8] sched/fair: Add latency list Vincent Guittot
2022-09-21 16:08 ` [PATCH v4 0/8] Add latency priority for CFS class Qais Yousef
2022-09-22 7:19 ` Vincent Guittot
2022-09-22 11:00 ` Qais Yousef
2022-09-22 13:03 ` 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=073938c4-ab23-2270-8e60-291f2901e230@arm.com \
--to=dietmar.eggemann@arm.com \
--cc=David.Laight@aculab.com \
--cc=bristot@redhat.com \
--cc=bsegall@google.com \
--cc=chris.hyser@oracle.com \
--cc=joshdon@google.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=parth@linux.ibm.com \
--cc=patrick.bellasi@matbug.net \
--cc=pavel@ucw.cz \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=qais.yousef@arm.com \
--cc=qperret@google.com \
--cc=rostedt@goodmis.org \
--cc=tim.c.chen@linux.intel.com \
--cc=tj@kernel.org \
--cc=valentin.schneider@arm.com \
--cc=vincent.guittot@linaro.org \
--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
all inboxes | Powered by JetHome®