On 8/27/2021 19:01, Chris Johns wrote:
On 27/8/21 9:36 am, Kinsey Moore wrote:
Since I'm working on SMP and I've had some of those tests failing sporadically
as well, I took a dive into smpschededf01.exe on AArch64 and the issue that
particular test seems to be encountering is a mismatch between the busy wait
delay using rtems_test_busy_cpu_usage() and the number of kernel ticks that have
been experienced. My hypothesis is that QEMU is prone to dumping a pile of timer
ticks into the virtual CPU all at once to catch up to wall time after returning
from a context switch on the host OS. This would support the observation that
failures are sporadic and increase under system load.  I instrumented the code
and can see that the loop in rtems_test_busy_cpu_usage() isn't running
substantially between these tick interrupts if at all.
Oh that would confuse things.
I bumped RSB qemu locally from 5.2-rc1 to 5.2.0 release and the behavior got better, but it's still not great and will cause a failure rate of approximately 30% with my stripped down and instrumented test. At least it's better than 90+% failure rate of 4.1.0 or 5.2-rc1. I previously had QEMU 3.1.0 installed from the debian buster package repo and it behaved even better than the 5.2.0 release, so there was definitely some kind of regression in the interim that got partially fixed.
I guess my next step is seeing if QEMU has an option to run its timers closer to
the illusion of metal instead of being based on the wall clock.
QEMU would need to handle instruction or a CPU timer to manage this.

There don't seem to be any options to manipulate this that I've found, but there are a couple of internal timer types. It looks like the QEMU virtual timers fall back to a QEMU realtime timer if the virtual timer hooks aren't available. I didn't see many of the virtual timer hooks defined in the QEMU codebase, so I assume that's what's happening since the timer definitions in QEMU for the ARM Generic Timers are of the virtual variety.

I'm not sure what can be done from this point beyond updating RSB QEMU to 5.2.0 release from 5.2-rc1 barring inordinate time spent in the bowels of QEMU.


Kinsey

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to