From: Aman Priyadarshi <apeureka@amazon.de>
To: Marc Zyngier <maz@kernel.org>,
Andrew Murray <andrew.murray@arm.com>,
<kvmarm@lists.cs.columbia.edu>
Cc: Alexander Graf <graf@amazon.com>, Ali Saidi <alisaidi@amazon.com>,
Aman Priyadarshi <apeureka@amazon.de>
Subject: Re: KVM: arm64: pmu: Reset sample period on overflow handling
Date: Tue, 15 Jun 2021 17:15:28 +0200 [thread overview]
Message-ID: <322843db2f986f418d4175ca9c10e0904aa81d7a.camel@amazon.de> (raw)
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.
I can also confirm that reverting the mentioned commits on either tree
(v5.4.34 or v5.13.0-rc5) fixes the problem.
```
CPU51 25020026126 cycles # 2.497 GHz
CPU52 25020153183 cycles # 2.497 GHz
CPU53 25011934659 cycles # 2.496 GHz
CPU54 25020521670 cycles # 2.497 GHz
CPU55 25015920340 cycles # 2.497 GHz
CPU56 25020176871 cycles # 2.497 GHz
CPU57 25013646763 cycles # 2.497 GHz
CPU58 25020736379 cycles # 2.497 GHz
CPU59 25019495291 cycles # 2.497 GHz
CPU60 25020988560 cycles # 2.497 GHz
CPU61 25021343608 cycles # 2.497 GHz
CPU62 25018942029 cycles # 2.497 GHz
CPU63 25019514949 cycles # 2.497 GHz
10.020502287 seconds time elapsed
root@ubuntu:~# cat /proc/version # Guest
Linux version 4.14.10-041410-generic (kernel@kathleen) (gcc version 7.2.0
(Ubuntu/Linaro 7.2.0-6ubuntu1)) #201712291810 SMP Fri Dec 29 18:37:30 UTC
2017
root@ubuntu:~# QEMU: Terminated
ubuntu@ip-10-0-98-166:~/images$ cat /proc/version # Host
Linux version 5.13.0-rc5 (ubuntu@ip-10-0-98-166) (gcc (Ubuntu 9.3.0-
17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #2 SMP Mon
Jun 14 21:05:25 UTC 2021
```
Regards,
Aman Priyadarshi
Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss
Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
Sitz: Berlin
Ust-ID: DE 289 237 879
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
next reply other threads:[~2021-06-15 15:31 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-15 15:15 Aman Priyadarshi [this message]
2021-06-15 17:05 ` KVM: arm64: pmu: Reset sample period on overflow handling Marc Zyngier
2021-06-16 9:17 ` Aman Priyadarshi
2021-06-16 10:31 ` Marc Zyngier
2021-06-16 10:52 ` Aman Priyadarshi
2021-06-16 11:03 ` Marc Zyngier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=322843db2f986f418d4175ca9c10e0904aa81d7a.camel@amazon.de \
--to=apeureka@amazon.de \
--cc=alisaidi@amazon.com \
--cc=andrew.murray@arm.com \
--cc=graf@amazon.com \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=maz@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox