From: Gleb Natapov <gleb@redhat.com>
To: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
Cc: avi@redhat.com, mtosatti@redhat.com, kvm@vger.kernel.org
Subject: Re: [RFC PATCH] KVM: x86: Skip request checking branches in vcpu_enter_guest() more effectively
Date: Mon, 24 Sep 2012 09:16:12 +0200 [thread overview]
Message-ID: <20120924071612.GE20907@redhat.com> (raw)
In-Reply-To: <20120924152447.36c71b8f.yoshikawa_takuya_b1@lab.ntt.co.jp>
On Mon, Sep 24, 2012 at 03:24:47PM +0900, Takuya Yoshikawa wrote:
> This is an RFC since I have not done any comparison with the approach
> using for_each_set_bit() which can be seen in Avi's work.
>
> Takuya
> ---
>
> We did a simple test to see which requests we would get at the same time
> in vcpu_enter_guest() and got the following numbers:
>
> |...........|...............|........|...............|.|
> (N) (E) (S) (ES) others
> 22.3% 30.7% 16.0% 29.5% 1.4%
>
> (N) : Nothing
> (E) : Only KVM_REQ_EVENT
> (S) : Only KVM_REQ_STEAL_UPDATE
> (ES): Only KVM_REQ_EVENT and KVM_REQ_STEAL_UPDATE
>
> * Note that the exact numbers can change for other guests.
>
Yes, for guests that do not enable steal time KVM_REQ_STEAL_UPDATE
should be never set, but currently it is. The patch (not tested) should
fix this.
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 901ad00..01572f5 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1544,6 +1544,8 @@ static void accumulate_steal_time(struct kvm_vcpu *vcpu)
delta = current->sched_info.run_delay - vcpu->arch.st.last_steal;
vcpu->arch.st.last_steal = current->sched_info.run_delay;
vcpu->arch.st.accum_steal = delta;
+
+ kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu);
}
static void record_steal_time(struct kvm_vcpu *vcpu)
@@ -1673,8 +1675,6 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
accumulate_steal_time(vcpu);
preempt_enable();
- kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu);
-
break;
case MSR_KVM_PV_EOI_EN:
if (kvm_lapic_enable_pv_eoi(vcpu, data))
@@ -2336,7 +2336,6 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
}
accumulate_steal_time(vcpu);
- kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu);
}
void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
--
Gleb.
next prev parent reply other threads:[~2012-09-24 7:16 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-24 6:24 [RFC PATCH] KVM: x86: Skip request checking branches in vcpu_enter_guest() more effectively Takuya Yoshikawa
2012-09-24 6:59 ` Xiao Guangrong
2012-09-24 10:09 ` Avi Kivity
2012-09-24 14:32 ` Takuya Yoshikawa
2012-09-24 14:53 ` Avi Kivity
2012-09-24 13:55 ` Takuya Yoshikawa
2012-09-24 7:16 ` Gleb Natapov [this message]
2012-09-24 10:10 ` Avi Kivity
2012-09-24 13:58 ` Takuya Yoshikawa
2012-10-04 16:11 ` Takuya Yoshikawa
2012-09-24 10:18 ` Avi Kivity
2012-09-24 14:14 ` Takuya Yoshikawa
2012-09-24 14:50 ` Avi Kivity
2012-09-26 2:06 ` Takuya Yoshikawa
2012-09-27 9:28 ` Avi Kivity
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=20120924071612.GE20907@redhat.com \
--to=gleb@redhat.com \
--cc=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=yoshikawa_takuya_b1@lab.ntt.co.jp \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.