We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I'm trying to measure performance of my code by using pmu. Code placed in EL1. To test pmu I created simple loop of couple operations. I did it under spinlock with disabled interrupts to prevent any preemption. Then I printed cycle counter to check how much cycles this my test code takes. But I see very different values at each print, ex: 100, 200, 10000, 50,
...
My question is: why output is so different? What cause this?
PS: in countrary to cycle counter, pmu's instructions counter is stable and I observe same output at each time.
Also I tried to use ARM timer, but it also showing different values similarly to pmu's cycles counter.
Android is still the Linux-like environment. The EL3 firmware may still respond to the GIC interrupts based on the GIC configuration so that your non-secure EL1 or secure EL1 may not be so accurate.
Suggest to run in bare-mental environment if you want to benchmark your loop code.