Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [vmlocking] src/sys/kern



Module Name:    src
Committed By:   ad
Date:           Thu Oct 18 15:47:00 UTC 2007

Modified Files:
        src/sys/kern [vmlocking]: kern_softint.c

Log Message:
Soft interrupt changes. This speeds up the slow mechanism quite a bit and
removes the requirement that IPL_SCHED == IPL_HIGH. On a DECstation 3100
using the slow mechanism, FTP transfers are about 7% slower than HEAD on
the few simple tests that I have done.

- Instead of using the run queues to schedule soft interrupts, poll for soft
  interrupt activity in mi_switch(). If there is a soft interrupt to run, we
  pick a new soft interrupt LWP to run in preference to checking the run
  queues.

- If a soft interrupt occurs while the CPU is running in userspace, hijack
  the user LWP in userret() to run the soft interrupt, thus avoiding context
  switches. This is OK to do, since in userret() the LWP can hold no locks.
  Soft interrupts will very rarely block in this configuration, and any
  blocking activity will be short term, so the user process will ~never be
  delayed by much. The downside to this approach is that it prevents the
  architecture from doing anything useful with real-time LWPs or kernel
  preemption, but that is not a problem is the fast path is implemented.

- Steal an idea from powerpc, and use DONETISR to set up multiple soft
  interrupt handlers for the legacy netisrs. Now schednetisr() just does
  softint_schedule() on the relevant handle.


To generate a diff of this commit:
cvs rdiff -r1.1.2.17 -r1.1.2.18 src/sys/kern/kern_softint.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index