Re: Questing regarding KVM Guest PMU

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 4, 2012 at 3:59 PM, Gleb Natapov <gleb@xxxxxxxxxx> wrote:
> On Wed, Apr 04, 2012 at 03:49:42PM +0530, shashank rachamalla wrote:
>> tatus: RO
>> Content-Length: 2989
>> Lines: 79
>>
>> On Wed, Apr 4, 2012 at 12:34 PM, Gleb Natapov <gleb@xxxxxxxxxx> wrote:
>> > On Wed, Apr 04, 2012 at 12:24:17AM +0530, shashank rachamalla wrote:
>> >> On Wed, Apr 4, 2012 at 12:13 AM, shashank rachamalla
>> >> <shashank.rachamalla@xxxxxxxxx> wrote:
>> >> > On Tue, Apr 3, 2012 at 10:28 PM, Gleb Natapov <gleb@xxxxxxxxxx> wrote:
>> >> >> On Tue, Apr 03, 2012 at 07:20:04PM +0530, shashank rachamalla wrote:
>> >> >>> On Mon, Mar 19, 2012 at 12:37 PM, Gleb Natapov <gleb@xxxxxxxxxx> wrote:
>> >> >>> > On Mon, Mar 19, 2012 at 12:20:30PM +0530, shashank rachamalla wrote:
>> >> >>> >> On Sun, Mar 18, 2012 at 10:21 PM, Gleb Natapov <gleb@xxxxxxxxxx> wrote:
>> >> >>> >> > On Sun, Mar 18, 2012 at 09:47:55PM +0530, shashank rachamalla wrote:
>> >> >>> >> >> >> I guess things are working fine with perf. But why not with oprofile ?
>> >> >>> >> >> >>
>> >> >>> >> >> > Looks like it. I never tried oprofile. Will try to reproduce your
>> >> >>> >> >> > problem and see what oprofile is doing.
>> >> >>> >> >>
>> >> >>> >> >> I am using ubuntu 10.04 with 2.6.32-21-generic kernel as guest and
>> >> >>> >> >> oprofile 0.9.6.
>> >> >>> >> >> Also, I have tried to capture kvm-events ( perf patch ) in host while
>> >> >>> >> >> running oprofile and perf in guest.
>> >> >>> >> >> Please see the attachment. I have run the tests in three cases for the
>> >> >>> >> >> around 5 secs.
>> >> >>> >> >>
>> >> >>> >> >> There are more number of MSR reads and writes in case of perf which I
>> >> >>> >> >> think is normal. However, there are very few MSR reads and writes with
>> >> >>> >> >> oprofile. Also, the number of NMI exceptions are too high in case of
>> >> >>> >> >> oprofile.
>> >> >>> >> >>
>> >> >>> >> > Which host kernel are you using? Try latest kvm.git and check if you see
>> >> >>> >> > something unusual in dmesg.
>> >> >>> >>
>> >> >>> >> Currenly running 3.3.0-rc5. will try with the latest source from kvm
>> >> >>> >> git and let you know.
>> >> >>> >>
>> >> >>> >>
>> >> >>> > Thanks, there were some fixes that didn't make it into 3.3. rdpmc
>> >> >>> > instruction emulation fix is one of them. If oprofile uses it this can
>> >> >>> > explain the problem.
>> >> >>> >
>> >> >>> I have tried with latest kvm source from git and also with 3.0 guest
>> >> >>> kernel but oprofile fails to collect any samples on guest. I am using
>> >> >>> a core2duo processor which is considered by oprofile as pentium pro
>> >> >>> model.
>> >> >>>
>> >> >> core2duo on the host or the guest? What is your qemu command line?
>> >> >>
>> >> > both. qemu command line below.
>> >> > sudo /usr/local/bin/qemu-system-x86_64 -drive
>> >> > file=vdisk1.img,if=virtio -cpu host -m 2000 -net nic,model=virtio -net
>> >> > user
>> >> >
>> >>
>> >> please find more info ( /proc/cpuinfo and uname of both host and guest
>> >> ) in attached files.
>> >>
>> > oprofile does not work for me even on the host. After trying to use it I can
>> > see why perf was written in the first place.
>> >
>> ok. seems to be. will move over to perf as its working fine inside guest.
>>
> Good riddance IMO. I managed to run it on a guest (but not on my
> host!). The thing is buggy. It does not use global ctrl MSR to enable
> counters and kvm has all of them disabled by default. I didn't find what
> value this MSR should have after reset, so this may be either kvm bug or
> real BIOSes enable all counters in global ctrl MSR for PMUv1
> compatibility. Doing "wrmsr 0x38f 0x70000000f" solves this problem. The
> second problem is that oprofile reprogram PMU counters without
> disabling them first and this is explicitly prohibited by Intel SDM.
> The patch below solve that, but oprofile is the one who should be fixed.
>
> diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c
> index a73f0c1..be05028 100644
> --- a/arch/x86/kvm/pmu.c
> +++ b/arch/x86/kvm/pmu.c
> @@ -396,6 +396,7 @@ int kvm_pmu_set_msr(struct kvm_vcpu *vcpu, u32 index, u64 data)
>                                (pmc = get_fixed_pmc(pmu, index))) {
>                        data = (s64)(s32)data;
>                        pmc->counter += data - read_pmc(pmc);
> +                       reprogram_gp_counter(pmc, pmc->eventsel);
>                        return 0;
>                } else if ((pmc = get_gp_pmc(pmu, index, MSR_P6_EVNTSEL0))) {
>                        if (data == pmc->eventsel)
>
> --
>                        Gleb.

thanks for the patch. will check it out.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux