Re: KVM: arm64: pmu: Reset sample period on overflow handling

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

 



Hi Aman,

[- Andrew]

On Tue, 15 Jun 2021 16:15:28 +0100,
Aman Priyadarshi <apeureka@xxxxxxxxx> wrote:
> 
> Hey,
> 
> I have been chasing down a regression on guest side related to pmu cycle
> counters, and I found that reverting these two patches help:
> 
> - 30d97754b2d1 ("KVM: arm/arm64: Re-create event when setting counter
> value")
> - 8c3252c06516 ("KVM: arm64: pmu: Reset sample period on overflow
> handling")
> 
> However, I do not yet fully understand the underlying problem.
> 
> Regression can be reproduced by running simple userspace processes
> consuming 100% of cpus and checking the number of pmu cycles.
> 
> ```
> $ cat foo.c
> #include <stdio.h>
> 
> int main()
> {
>     while (1) ;
>     return 0;
> }
> 
> 
> $ gcc -o foo foo.c
> $ for x in {0..63}; do ./foo & done
> $ sudo perf stat -A -a -e cpu-clock:pppH,cycles -- sleep 10
> CPU0        22,397,323,233      cycles                    #    2.240 GHz
> CPU1         6,444,741,327      cycles                    #    0.644 GHz
> CPU2        17,029,444,425      cycles                    #    1.703 GHz
> CPU3         4,298,054,663      cycles                    #    0.430 GHz
> CPU4         6,444,769,216      cycles                    #    0.644 GHz
> CPU5         6,045,456,891      cycles                    #    0.605 GHz
> CPU6         4,298,204,814      cycles                    #    0.430 GHz
> CPU7         6,444,346,686      cycles                    #    0.644 GHz
> CPU8         4,298,012,726      cycles                    #    0.430 GHz
> CPU9         6,445,547,392      cycles                    #    0.645 GHz
> CPU10        4,297,996,144      cycles                    #    0.430 GHz
> ...
> ```
> 
> Expected behavior is to have all cores around 2.5GHz on all CPUs given that
> all CPUs are 100% in the guest.
> 
> The nonsensical values reported by the pmu counters is only observed on
> certain combination of host and guest kernel.
> 
> I was able to reproduce it on v5.4.34 and v5.13.0-rc5 running on the host
> side, and 4.14.10 on the guest side.
> 
> I am running Ubuntu 18.04 cloud image with 4.14.10 kernel headers
> installed:
> 
> https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-arm64.img
> 
> Note, cloud image comes with 4.15.y kernel installed, which does not show
> any regression.

Can you reproduce the issue with vanilla guest kernels? It'd be
interesting to understand what makes it work on the guest side. Can
you please bisect it?

Thanks,

	M.

-- 
Without deviation from the norm, progress is not possible.
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm



[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux