cvs commit: src/sys/amd64/amd64 cpu_switch.S machdep.c
Andrew Gallatin
gallatin at cs.duke.edu
Tue Oct 18 06:44:11 PDT 2005
David Xu [davidxu at FreeBSD.org] wrote:
> davidxu 2005-10-17 23:10:31 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/amd64/amd64 cpu_switch.S machdep.c
> Log:
> Micro optimization for context switch. Eliminate code for saving gs.base
> and fs.base. We always update pcb.pcb_gsbase and pcb.pcb_fsbase
> when user wants to set them, in context switch routine, we only need to
> write them into registers, we never have to read them out from registers
> when thread is switched away. Since rdmsr is a serialization instruction,
> micro benchmark shows it is worthy to do.
Nice. This reduces lmbench context switch latency by about 0.4us (7.2
-> 6.8us), and reduces TCP loopback latency by about 0.9us (36.1 ->
35.2) on my dual core 3800+
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.
Drew
More information about the cvs-src
mailing list