Module Name:    src
Committed By:   bouyer
Date:           Sat Jun  6 22:12:44 UTC 2009

Modified Files:
        src/sys/kern [netbsd-5]: sched_4bsd.c

Log Message:
Pull up following revision(s) (requested by rmind in ticket #791):
        sys/kern/sched_4bsd.c: revision 1.25
sched_pstats_hook: fix estcpu decay.
this makes my desktop usable when running "make -j4".


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.24.4.1 src/sys/kern/sched_4bsd.c

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

Modified files:

Index: src/sys/kern/sched_4bsd.c
diff -u src/sys/kern/sched_4bsd.c:1.24 src/sys/kern/sched_4bsd.c:1.24.4.1
--- src/sys/kern/sched_4bsd.c:1.24	Tue Oct  7 09:48:27 2008
+++ src/sys/kern/sched_4bsd.c	Sat Jun  6 22:12:44 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: sched_4bsd.c,v 1.24 2008/10/07 09:48:27 rmind Exp $	*/
+/*	$NetBSD: sched_4bsd.c,v 1.24.4.1 2009/06/06 22:12:44 bouyer Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2004, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sched_4bsd.c,v 1.24 2008/10/07 09:48:27 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sched_4bsd.c,v 1.24.4.1 2009/06/06 22:12:44 bouyer Exp $");
 
 #include "opt_ddb.h"
 #include "opt_lockdebug.h"
@@ -288,17 +288,22 @@
 void
 sched_pstats_hook(struct lwp *l, int batch)
 {
+	fixpt_t loadfac;
 
 	/*
 	 * If the LWP has slept an entire second, stop recalculating
 	 * its priority until it wakes up.
 	 */
 	KASSERT(lwp_locked(l, NULL));
-	if (l->l_slptime > 0) {
-		fixpt_t loadfac = 2 * (averunnable.ldavg[0]);
-		l->l_estcpu = decay_cpu(loadfac, l->l_estcpu);
-		resetpriority(l);
+	if (l->l_stat == LSSLEEP || l->l_stat == LSSTOP ||
+	    l->l_stat == LSSUSPENDED) {
+		if (l->l_slptime > 1) {
+			return;
+		}
 	}
+	loadfac = 2 * (averunnable.ldavg[0]);
+	l->l_estcpu = decay_cpu(loadfac, l->l_estcpu);
+	resetpriority(l);
 }
 
 /*

Reply via email to