tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: PSA: Clock drift and pkgin
On 2023-12-23 14:35, Mouse wrote:
} else if (sec <= (LONG_MAX / 1000000))
ticks = (((sec * 1000000) + (unsigned long)usec + (tick - 1))
/ tick) + 1;
The delay is always rounded up to the resolution of the clock, so
waiting for 1 microsecond waits at least 10ms.
But it is increased by 1 tick when it is an exact multiple of the clock
resolution, too. For sleeps, that makes some sense. For timer
reloads, it doesn't.
I would probably agree that for timer reloads it should not do that
rounding up when the interval is evenly divisible. It is a very
different case than a sleep. For the reload we know that this happens at
a specific time.
I could of course be wrong about that code being responsible, but
reading realtimerexpire() makes me think not; it uses tshzto, which
calls tstohz, which calls tvtohz, which is where the code quoted above
comes from. Maybe realtimerexpire should be using other code?
Agreed.
Two options are to increase HZ on the host as suggested, or halve HZ
on the guest.
I suppose actually fixing the bug isn't an option?
I don't know whether that would mean using different code for timer
reloads and sleeps or what. But 1.4T is demonstration-by-example that
it is entirely possible to get this right, even in a tickful system.
(I don't know whether 1.4T sleeps may be slightly too short; I haven't
tested that. But, even if so, fixing that should not involve breaking
timer reloads.)
A tickless system do not fundamentally change anything either. You can't
go below the resolution of a timer, and sleeps are supposed to be
sleeping for *at least* the given time, but it could be more.
But in this case, we end up where the expected, and reasonable behaviour
would be to get alarms/interrupts at the specified frequency, because it
is the resolution of the clock, but we are in fact rounding it up to the
double amount of time between alarms/interrupts. Not what I think anyone
would have expected.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt%softjar.se@localhost || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol
Home |
Main Index |
Thread Index |
Old Index