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