cvs commit: src/sys/i386/i386 pmap.c

Alan Cox alc at cs.rice.edu
Sat Oct 25 21:19:13 PDT 2003


On Sat, Oct 25, 2003 at 11:14:48PM -0400, Jeff Roberson wrote:
> 
> Uhm, dumb question, why don't we just allocate one page of kva per
> processor and avoid the mutex, the switchin/out, etc?  To save KVA? At 3
> pages per processor and a max of 8 processors on intel, that's 192k.  We
> can probably spare it.  I just saved that much with some UMA tuning.
> 

The mutex and the switchin mechanism are addressing two distinct needs.

The mutex exists because there is a single KVA for some low-level pmap
functions on i386.  (This could be changed, eliminating the need for
the mutex.)

If, however, you eliminate the need for the mutex, you still require
the switchin mechanism as a means of handling preemption,
specifically, migration of the preempted thread between CPUs.  The
alternative is to make pmap_zero_page() and the like critical
sections.

In short, preemption and per-processor anything don't mix well.

Looking into the future, I see other uses for the switchin mechanism
when we begin optimizing in earnest.  For example, in the context of
pipes, if we move the pmap_qenter() from the sending side to the
receiving side (just before the copy), the mapping becomes thread
private, just like the mapping in pmap_zero_page().  Consequently, the
IPI on SMPs for TLB shootdown could be eliminated.

Alan


More information about the cvs-all mailing list