From: Sean Christopherson <seanjc@google.com>
To: Leonardo Bras <leobras@redhat.com>
Cc: Frederic Weisbecker <frederic@kernel.org>,
"Paul E. McKenney" <paulmck@kernel.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
linux-kernel@vger.kernel.org, kvm@vger.kernel.org
Subject: Re: [RFC PATCH 1/1] kvm: Note an RCU quiescent state on guest exit
Date: Mon, 13 May 2024 12:40:45 -0700 [thread overview]
Message-ID: <ZkJsvTH3Nye-TGVa@google.com> (raw)
In-Reply-To: <20240511020557.1198200-1-leobras@redhat.com>
On Fri, May 10, 2024, Leonardo Bras wrote:
> As of today, KVM notes a quiescent state only in guest entry, which is good
> as it avoids the guest being interrupted for current RCU operations.
>
> While the guest vcpu runs, it can be interrupted by a timer IRQ that will
> check for any RCU operations waiting for this CPU. In case there are any of
> such, it invokes rcu_core() in order to sched-out the current thread and
> note a quiescent state.
>
> This occasional schedule work will introduce tens of microsseconds of
> latency, which is really bad for vcpus running latency-sensitive
> applications, such as real-time workloads.
>
> So, note a quiescent state in guest exit, so the interrupted guests is able
> to deal with any pending RCU operations before being required to invoke
> rcu_core(), and thus avoid the overhead of related scheduler work.
Are there any downsides to this? E.g. extra latency or anything? KVM will note
a context switch on the next VM-Enter, so even if there is extra latency or
something, KVM will eventually take the hit in the common case no matter what.
But I know some setups are sensitive to handling select VM-Exits as soon as possible.
I ask mainly because it seems like a no brainer to me to have both VM-Entry and
VM-Exit note the context switch, which begs the question of why KVM isn't already
doing that. I assume it was just oversight when commit 126a6a542446 ("kvm,rcu,nohz:
use RCU extended quiescent state when running KVM guest") handled the VM-Entry
case?
next prev parent reply other threads:[~2024-05-13 19:40 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-11 2:05 [RFC PATCH 1/1] kvm: Note an RCU quiescent state on guest exit Leonardo Bras
2024-05-11 2:11 ` Leonardo Bras
2024-05-11 14:55 ` Paul E. McKenney
2024-05-11 20:31 ` Leonardo Bras
2024-05-12 21:44 ` Marcelo Tosatti
2024-05-13 1:06 ` Marcelo Tosatti
2024-05-13 3:14 ` Leonardo Bras
2024-05-13 19:14 ` Marcelo Tosatti
2024-05-13 19:40 ` Sean Christopherson [this message]
2024-05-13 21:47 ` Leonardo Bras Soares Passos
2024-05-14 22:54 ` Paul E. McKenney
2024-05-15 4:45 ` Leonardo Bras
2024-05-15 14:57 ` Paul E. McKenney
2024-06-20 7:03 ` Leonardo Bras
2024-06-20 17:26 ` Paul E. McKenney
2024-06-25 2:31 ` Leonardo Bras
2024-06-25 2:34 ` Leonardo Bras
2024-07-10 23:18 ` Leonardo Bras
2024-07-12 15:57 ` Paolo Bonzini
2024-07-12 20:02 ` Leonardo Bras
2024-07-29 11:28 ` Leonardo Bras Soares Passos
2024-08-27 19:50 ` Leonardo Bras Soares Passos
2024-09-03 18:07 ` Sean Christopherson
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=ZkJsvTH3Nye-TGVa@google.com \
--to=seanjc@google.com \
--cc=frederic@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=leobras@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=paulmck@kernel.org \
--cc=pbonzini@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