When running a VM using KVM by means of the qemu-system-x86_64
command, your VMs may not have access to the performance monitoring unit.
To check if you have access to PMU drivers, run the following command in your VMs:
$ dmesg | grep PMU
[ 0.307792] Performance Events: PMU not available due to virtualization, using software events only.
PMU not available!
What you need to do when invoking qemu-system-x86_64
is to add the following argument: -cpu host
$ dmesg | grep PMU
[ 0.314750] Performance Events: Skylake events, full-width counters, Intel PMU driver.
Yes! Now we get access to PMUs on the guest VM, meaning we can use the performance counters offered through perf stat
and more tools!