diff options
author | bde <bde@FreeBSD.org> | 1999-02-22 16:57:48 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1999-02-22 16:57:48 +0000 |
commit | d51135c0c3ce43b173e455e0e5a42cf324e3e282 (patch) | |
tree | 66a439581aefbaba2f0a011c5e92e24bcc7ef58a /sys/kern/kern_synch.c | |
parent | 4e6745d688eb7cb27f48a71861157be87705f8c1 (diff) | |
download | FreeBSD-src-d51135c0c3ce43b173e455e0e5a42cf324e3e282.zip FreeBSD-src-d51135c0c3ce43b173e455e0e5a42cf324e3e282.tar.gz |
Improved scheduling in uiomove(), etc. resched_wanted() is true too
often for it to be a good criterion for switching kernel cpu hogs --
it is true after most wakeups. Use the criterion "has been running
for >= 2 quanta" instead.
Diffstat (limited to 'sys/kern/kern_synch.c')
-rw-r--r-- | sys/kern/kern_synch.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index f8baf85..bea45f7 100644 --- a/sys/kern/kern_synch.c +++ b/sys/kern/kern_synch.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)kern_synch.c 8.9 (Berkeley) 5/19/95 - * $Id: kern_synch.c,v 1.71 1999/01/08 17:31:10 eivind Exp $ + * $Id: kern_synch.c,v 1.72 1999/01/10 01:58:24 eivind Exp $ */ #include "opt_ktrace.h" @@ -66,6 +66,7 @@ static void rqinit __P((void *)); SYSINIT(runqueue, SI_SUB_RUN_QUEUE, SI_ORDER_FIRST, rqinit, NULL) u_char curpriority; /* usrpri of curproc */ +int hogticks; int lbolt; /* once a second sleep address */ static void endtsleep __P((void *)); @@ -94,6 +95,7 @@ sysctl_kern_quantum SYSCTL_HANDLER_ARGS error = EINVAL; } } + hogticks = 2 * (hz / quantum); return (error); } @@ -360,6 +362,7 @@ sleepinit() { int i; + hogticks = 2 * (hz / quantum); for (i = 0; i < TABLESIZE; i++) TAILQ_INIT(&slpque[i]); } @@ -828,6 +831,8 @@ mi_switch() p->p_switchtime = switchtime; else microuptime(&p->p_switchtime); + switchticks = ticks; + splx(x); } |