cvs commit: src/sys/amd64/amd64 cpu_switch.S machdep.c

Andrew Gallatin gallatin at cs.duke.edu
Tue Oct 18 07:05:24 PDT 2005


Poul-Henning Kamp writes:
 > In message <20051018094402.A29138 at grasshopper.cs.duke.edu>, Andrew Gallatin wri
 > tes:
 > 
 > >It is a shame we can't find a way to use the TSC as a timecounter on
 > >SMP systems.  It seems that about 40% of the context switch time is
 > >spent just waiting for the PIO read of the ACPI-fast or i8254 to
 > >return.
 > 
 > No, the shame is that the scheduler tries to partition time rather
 > than cpu cycles because that approximation got goldplated in some
 > random standard years back.

Sorry if I mi-spoke.  I guess the shame twofold.  

First we insist on not trying keep the TSC in sync and so we don't use
it for SMP timekeeping like other OSes do, which means that getting a
micro-second granularity timestamp is orders of magnitude more
expensive for us.  To compound the problem, we insist on using the
expensive non-TSC binuptime() to get a runtime measurement on each
context switch, rather than being able to use something cheap like
ticks, or a per-cpu cycle counter.

If anybody is looking for low-hanging fruit in the SMP context switch
path, figuring some acceptable way to avoid reading the ACPI or i8254
timecounter is it.


Drew



More information about the cvs-src mailing list