wangt13
wangt13

Reputation: 1325

how to enable PMU in KVM guest

I am running KVM/QEMU in my Lenovo X1 laptop.

The guest OS is Ubuntu 15.04 x86_64.

Now, I want to run 'perf' command in guest OS, but I found followings in guest OS in dmesg.

...

[ 0.055442] smpboot: CPU0: Intel Xeon E3-12xx v2 (Ivy Bridge) (fam: 06, model: 3a, stepping: 09)

[ 0.056000] Performance Events: unsupported p6 CPU model 58 no PMU driver, software events only.

[ 0.057602] x86: Booting SMP configuration:

[ 0.058686] .... node #0, CPUs: #1

[ 0.008000] kvm-clock: cpu 1, msr 0:1ffd6041, secondary cpu clock

... So, the perf command could NOT work hardware PMU event in guest OS.

How could I enable hardware PMU from my host to the Ubuntu guest?

Thanks,

-Tao

Upvotes: 1

Views: 5047

Answers (1)

osgx
osgx

Reputation: 94485

Page https://github.com/mozilla/rr/wiki/Building-And-Installing gives some hints how to enable guest PMU:

Qemu: On QEMU command line use

 -cpu host

Libvirt/KVM: Specify CPU passthrough in domain XML definition:

 <cpu mode='host-passthrough'/>

Same advice in https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_tuning_and_optimization_guide/sect-virtualization_tuning_optimization_guide-monitoring_tools-vpmu

I edit <cpu mode='host-passthrough'/> line into /etc/libvirt/qemu/my_vm_name.xml file instead of <cpu>...</cpu> block.

(In virt-manager use "host-passthrough" as CPU "Model:" field - http://blog.wikichoon.com/2016/01/using-cpu-host-passthrough-with-virt.html)

Now PMU works, tested with perf stat echo inside the VM, there are "arch_perfmon" in /proc/cpuinfo and PMUs are enabled in dmesg|grep PMU.

-cpu host option of Qemu was used according to /var/log/libvirt/qemu/vm_name.log:

/usr/bin/kvm-spice ... -machine ...,accel=kvm,... -cpu host ...

Upvotes: 4

Related Questions