From: Suleiman Souhlal <suleiman@google.com>
To: Ingo Molnar <mingo@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Juri Lelli <juri.lelli@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>
Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>,
Steven Rostedt <rostedt@goodmis.org>,
Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
Valentin Schneider <vschneid@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
joelaf@google.com, vineethrp@google.com,
linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
ssouhlal@freebsd.org, Srikar Dronamraju <srikar@linux.ibm.com>,
David Woodhouse <dwmw2@infradead.org>,
Sean Christopherson <seanjc@google.com>,
Suleiman Souhlal <suleiman@google.com>
Subject: [PATCH v2] sched: Don't try to catch up excess steal time.
Date: Wed, 11 Sep 2024 20:15:22 +0900 [thread overview]
Message-ID: <20240911111522.1110074-1-suleiman@google.com> (raw)
When steal time exceeds the measured delta when updating clock_task, we
currently try to catch up the excess in future updates.
However, this results in inaccurate run times for the future things using
clock_task, as they end up getting additional steal time that did not
actually happen.
For example, suppose a task in a VM runs for 10ms and had 15ms of steal
time reported while it ran. clock_task rightly doesn't advance. Then, a
different taks runs on the same rq for 10ms without any time stolen in
the host.
Because of the current catch up mechanism, clock_sched inaccurately ends
up advancing by only 5ms instead of 10ms even though there wasn't any
actual time stolen. The second task is getting charged for less time
than it ran, even though it didn't deserve it.
This can result in tasks getting more run time than they should actually
get.
So, we instead don't make future updates pay back past excess stolen time.
Signed-off-by: Suleiman Souhlal <suleiman@google.com>
---
v2:
- Slightly changed to simply moving one line up instead of adding
new variable.
v1: https://lore.kernel.org/lkml/20240806111157.1336532-1-suleiman@google.com
---
kernel/sched/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index f3951e4a55e5..6c34de8b3fbb 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -730,11 +730,11 @@ static void update_rq_clock_task(struct rq *rq, s64 delta)
if (static_key_false((¶virt_steal_rq_enabled))) {
steal = paravirt_steal_clock(cpu_of(rq));
steal -= rq->prev_steal_time_rq;
+ rq->prev_steal_time_rq += steal;
if (unlikely(steal > delta))
steal = delta;
- rq->prev_steal_time_rq += steal;
delta -= steal;
}
#endif
--
2.46.0.598.g6f2099f65c-goog
next reply other threads:[~2024-09-11 11:16 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-11 11:15 Suleiman Souhlal [this message]
2024-09-12 14:47 ` [PATCH v2] sched: Don't try to catch up excess steal time Srikar Dronamraju
2024-09-25 11:04 ` Suleiman Souhlal
2024-09-25 11:45 ` David Woodhouse
2024-09-25 13:25 ` Suleiman Souhlal
2024-09-25 14:26 ` David Woodhouse
2024-09-25 15:15 ` Suleiman Souhlal
2024-09-25 15:34 ` David Woodhouse
2024-09-25 16:29 ` Suleiman Souhlal
[not found] ` <CAJWu+oqkMNr6kxndEw3HP_Ap14W38xpUGjS=3EeSqTXZEmDBQQ@mail.gmail.com>
2024-09-25 14:02 ` David Woodhouse
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=20240911111522.1110074-1-suleiman@google.com \
--to=suleiman@google.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=dwmw2@infradead.org \
--cc=joelaf@google.com \
--cc=juri.lelli@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=seanjc@google.com \
--cc=srikar@linux.ibm.com \
--cc=ssouhlal@freebsd.org \
--cc=vincent.guittot@linaro.org \
--cc=vineethrp@google.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