From: Shivam Kumar <shivam.kumar1@nutanix.com>
To: Sean Christopherson <seanjc@google.com>
Cc: pbonzini@redhat.com, kvm@vger.kernel.org, agraf@csgraf.de,
Shaju Abraham <shaju.abraham@nutanix.com>,
Manish Mishra <manish.mishra@nutanix.com>,
Anurag Madnawat <anurag.madnawat@nutanix.com>
Subject: Re: [PATCH v2 1/1] KVM: Implement dirty quota-based throttling of vcpus
Date: Mon, 24 Jan 2022 00:28:49 +0530 [thread overview]
Message-ID: <d610ce6d-3753-405b-80c7-b6c5f261fce2@nutanix.com> (raw)
In-Reply-To: <Ydx2EW6U3fpJoJF0@google.com>
On 10/01/22 11:38 pm, Sean Christopherson wrote:
> On Mon, Dec 20, 2021, Shivam Kumar wrote:
>> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
>> index 9a2972fdae82..723f24909314 100644
>> --- a/arch/x86/kvm/x86.c
>> +++ b/arch/x86/kvm/x86.c
>> @@ -10042,6 +10042,11 @@ static inline bool kvm_vcpu_running(struct kvm_vcpu *vcpu)
>> !vcpu->arch.apf.halted);
>> }
>>
>> +static inline bool is_dirty_quota_full(struct kvm_vcpu *vcpu)
>> +{
>> + return (vcpu->stat.generic.dirty_count >= vcpu->run->dirty_quota);
>> +}
>> +
>> static int vcpu_run(struct kvm_vcpu *vcpu)
>> {
>> int r;
>> @@ -10079,6 +10084,18 @@ static int vcpu_run(struct kvm_vcpu *vcpu)
>> return r;
>> vcpu->srcu_idx = srcu_read_lock(&kvm->srcu);
>> }
>> +
>> + /*
>> + * Exit to userspace when dirty quota is full (if dirty quota
>> + * throttling is enabled, i.e. dirty quota is non-zero).
>> + */
>> + if (vcpu->run->dirty_quota > 0 && is_dirty_quota_full(vcpu)) {
> Kernel style is to omit the "> 0" when checking for non-zero. It matters here
> because the "> 0" suggests dirty_quota can be negative, which it can't.
>
> To allow userspace to modify dirty_quota on the fly, run->dirty_quota should be
> READ_ONCE() with the result used for both the !0 and >= checks. And then also
> capture the effective dirty_quota in the exit union struct (free from a memory
> perspective because the exit union is padded to 256 bytes). That way if userspace
> wants to modify the dirty_quota while the vCPU running it will get coherent data
> even though the behavior is somewhat non-deterministic.
>
> And then to simplify the code and also make this logic reusable for other
> architectures, move it all into the helper and put the helper in kvm_host.h.
>
> For other architectures, unless the arch maintainers explicitly don't want to
> support this, I would prefer we enable at least arm64 right away to prevent this
> from becoming a de facto x86-only feature. s390 also appears to be easy to support.
> I almost suggested moving the check to generic code, but then I looked at MIPS
> and PPC and lost all hope :-/
>
>> + vcpu->run->exit_reason = KVM_EXIT_DIRTY_QUOTA_FULL;
>>
>>
>> --
>>
I am not able to test this on arm64 and s390 as I don't have access to
arm64 and s390 hardware. Looking forward to your suggestions. Thank you!
next prev parent reply other threads:[~2022-01-23 18:59 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-20 5:57 [PATCH v2 0/1] KVM: Dirty quota-based throttling Shivam Kumar
2021-12-20 5:57 ` [PATCH v2 1/1] KVM: Implement dirty quota-based throttling of vcpus Shivam Kumar
2022-01-10 18:08 ` Sean Christopherson
[not found] ` <eca3faed-5f2c-6217-fb2c-298855510265@nutanix.com>
2022-01-11 16:59 ` Sean Christopherson
2022-01-23 18:58 ` Shivam Kumar [this message]
2022-01-26 21:04 ` Sean Christopherson
2022-01-03 8:46 ` [PATCH v2 0/1] KVM: Dirty quota-based throttling Shivam Kumar
2022-01-04 17:01 ` Sean Christopherson
2022-01-05 15:39 ` Shivam Kumar
2022-03-08 14:59 ` Paolo Bonzini
2022-03-08 15:53 ` Sean Christopherson
2022-03-08 18:22 ` Shivam Kumar
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=d610ce6d-3753-405b-80c7-b6c5f261fce2@nutanix.com \
--to=shivam.kumar1@nutanix.com \
--cc=agraf@csgraf.de \
--cc=anurag.madnawat@nutanix.com \
--cc=kvm@vger.kernel.org \
--cc=manish.mishra@nutanix.com \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=shaju.abraham@nutanix.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;
as well as URLs for NNTP newsgroup(s).