[PATCH v3 0/3] KVM: x86: Include host suspended time in steal time.

Suleiman Souhlal
2025-01-07T04:25:59Z

This series makes it so that the time that the host is suspended is
included in guests' steal time.

When the host resumes from a suspend, the guest thinks any task
that was running during the suspend ran for a long time, even though
the effective run time was much shorter, which can end up having
negative effects with scheduling. This can be particularly noticeable
if the guest task was RT, as it can end up getting throttled for a
long time.

To mitigate this issue, we include the time that the host was
suspended in steal time, which lets the guest can subtract the
duration from the tasks' runtime.

v3:
- Use PM notifier instead of syscore ops (kvm_suspend()/kvm_resume()),
because the latter doesn't get called on shallow suspend.
- Don't call function under UACCESS.
- Whitespace.

v2: https://lore.kernel.org/lkml/20241118043745.1857272-1-suleiman@google.com/
- Accumulate suspend time at machine-independent kvm layer and track per-VCPU
instead of per-VM.
- Document changes.

v1: https://lore.kernel.org/kvm/20240710074410.770409-1-suleiman@google.com/

Suleiman Souhlal (3):
kvm: Introduce kvm_total_suspend_ns().
KVM: x86: Include host suspended time in steal time.
KVM: x86: Document host suspend being included in steal time.

Documentation/virt/kvm/x86/msr.rst | 6 ++++--
arch/x86/include/asm/kvm_host.h | 1 +
arch/x86/kvm/x86.c | 11 ++++++++++-
include/linux/kvm_host.h | 2 ++
virt/kvm/kvm_main.c | 26 ++++++++++++++++++++++++++
5 files changed, 43 insertions(+), 3 deletions(-)

--
2.47.1.613.gc27f4b7a9f-goog