Hello,

On Mon, 15 Nov 2021 06:09:17 -0800
Jason Thorpe <thor...@me.com> wrote:

> > On Nov 14, 2021, at 4:49 PM, Joerg Sonnenberger <jo...@bec.de> wrote:
> >   
> >> x86 TSC: cycle count from CPU register. Very quick to read, but unreliable 
> >> if 
> >> CPU frequency changes because of power saving. Also each CPU has its own
> >> value (how do we cope with that?)  
> > 
> > It's even more complicated. For older x86 CPUs, different counts could
> > go at different frequencies, but this was fixed around the Netburst era
> > or so. That said, they frequently have issues when used in SMP systems.
> > It's a high resolution timer.  
> 
> This is handled correctly on Alpha now (fixed roughly 1 year ago with
> kern_cctr.c 1.11).  If the cycle counters are running at the same
> nominal frequency, the offset of the counter on the secondary CPUs is
> calibrated periodically (~once per second) relative to the primary
> CPU’s counter.  Alpha is the only port using that code at the moment,
> but there is nothing machine-dependent about it.
> 
> However, that code cannot deal with counters whose frequency changes,
> or counters that run at a different nominal frequency than the
> primary’s.

IIRC on macppc SMP startup we stop the timebase, then zero the counters
on all CPUs while they hatch, then start the timebase again.

have fun
Michael

Reply via email to