Hi,
Getting lots of messages about people loving the new timekeep
functionality, which I am very happy about, but also some that have the
skew too large for it to be enabled.
I plan on sending a diff next week to improve the situation via RDTSCP
on the machines that have it. Which is basically all modern machines.
The plan is to have an auxiliary value returned by RDTSCP which
identifies the CPU we got the info from so that we can look-up its
associated skew in a table saved at init inside the timekeep structure:
static inline u_int
rdtscp(void)
{
uint32_t hi, lo, aux;
asm volatile("rdtscp" : "=a"(lo), "=d"(hi), "=c" (aux) : : );
skew = get_cpu_skew(aux);
return ((uint64_t)lo)|(((uint64_t)hi)<<32) + skew;
}
Have a nice weekend,
Paul