Frank Kardel wrote:
> Could you check which timecounter is used under qemu?
> 
> sysctl kern.timecounter.hardware

# sysctl kern.timecounter.hardware
kern.timecounter.hardware = hpet0

> Usually the timecounters are hardware-based and have no relation
> to the clockinterrupt. In case of qemu you might get a good
> emulated timecounter, but a suboptimal clockinterupt.
> If this is the case it helps to use the clockinterrupt
> itself as timecounter for the wall clock time to avoid a discrepancy 
> between clockinterrupt-driven timeout handling and wall-clock time tracking.
> 
> sysctl -w kern.timecounter.hardware=clockinterrupt

# sysctl -w kern.timecounter.hardware=clockinterrupt
kern.timecounter.hardware: hpet0 -> clockinterrupt
# time sleep 10
       10.02 real         0.00 user         0.00 sys

This actually took 20 seconds of real time (manually timed with a
stopwatch).

> This is the opposite from deducing the missed clock interrupts
> from the wall clock time and keeps timeout handling and in the emulation 
> observed wall-time synchronized no matter how slow
> the clock-interrupts are - the emulated wall clock time will be
> at the same rate.

Right, but I would still rather see the bug fixed than worked around
this way.
-- 
Andreas Gustafsson, g...@gson.org

Reply via email to