From: Avi Kivity Subject: Re: [PATCH QEMU-KVM 6/7] test: Add ipi_halt benchmark Date: Tue, 22 Sep 2009 09:12:12 +0300 Message-ID: <4AB86ABC.3040205@redhat.com> References: <1253523338-22784-1-git-send-email-avi@redhat.com> <1253523338-22784-7-git-send-email-avi@redhat.com> <20090922015411.GA1967@amt.cnet> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: Marcelo Tosatti Return-path: Received: from mx1.redhat.com ([209.132.183.28]:31732 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751790AbZIVGMK (ORCPT ); Tue, 22 Sep 2009 02:12:10 -0400 Received: from int-mx03.intmail.prod.int.phx2.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n8M6CEC0003976 for ; Tue, 22 Sep 2009 02:12:14 -0400 In-Reply-To: <20090922015411.GA1967@amt.cnet> Sender: kvm-owner@vger.kernel.org List-ID: On 09/22/2009 04:54 AM, Marcelo Tosatti wrote: > On Mon, Sep 21, 2009 at 11:55:37AM +0300, Avi Kivity wrote: > >> Wait for 2000 cycles after the IPI to allow the host to schedule out. >> Measures wake-from-idle overhead. >> >> Signed-off-by: Avi Kivity >> --- >> kvm/user/test/x86/vmexit.c | 11 +++++++++++ >> 1 files changed, 11 insertions(+), 0 deletions(-) >> >> diff --git a/kvm/user/test/x86/vmexit.c b/kvm/user/test/x86/vmexit.c >> index 29bb32a..5088dc9 100644 >> --- a/kvm/user/test/x86/vmexit.c >> +++ b/kvm/user/test/x86/vmexit.c >> @@ -66,6 +66,16 @@ static void ipi(void) >> on_cpu(1, nop, 0); >> } >> >> +static void ipi_halt(void) >> +{ >> + unsigned long long t; >> + >> + on_cpu(1, nop, 0); >> + t = rdtsc() + 2000; >> + while (rdtsc()< t) >> + ; >> > I don't get the 2000 cycle thing. Since vcpu1 is on hlt by default, just > IPI'ing it to do nop() already includes wake-from-idle overhead? > Without the delay, by the time vcpu1 gets to schedule() it will already have been woken up by vcpu0. So it never switches to the idle thread. The purpose of this test was to measure the just-in-time MSR switching, and that only helps if a context switch takes place. -- Do not meddle in the internals of kernels, for they are subtle and quick to panic.