> Date: Thu, 27 Jul 2023 11:17:30 -0400 > From: Brad Spencer <b...@anduin.eldar.org> > > On the system that I have that exhibits the negative runtime problem, it > may very well be the case that hardclocks are missed for 4.3sec. The > system has to have been up for a while and busy as a prereq., but if I > then run: > > dtrace -x nolibs -n 'sdt:xen:clock:, sdt:xen:hardclock:, sdt:xen:timecounter: > { printf("%d %d %d %d %d %d %d %d", arg0, arg1, arg2, arg3, arg4, arg5, arg6, > arg7) }'
Update xen_clock.c, and try this now (one in each of two terminals): dtrace -x nolibs -n 'sdt:xen:hardclock:jump { @ = quantize(arg1 - arg0) } tick-10s { printa(@) }' dtrace -x nolibs -n 'sdt:xen:hardclock:jump /arg2 >= 430/ { printf("TIMECOUNTER BAD: hardclock delayed by %d ns (%d tick)", arg1 - arg0, arg2) }' Let it run for a while until the second one fires, or until you get bored, then share the last histogram from the first one? (Note: I added a probe sdt:xen:hardclock:tick which fires on every tick, so the original dtrace script will be a little too noisy. If you want to do it again for some reason, narrow the scope from `sdt:xen:hardclock:' to just `sdt:xen:hardclock:missed, sdt:xen:hardclock:jump'.)