Issue: Compiling a program while trying to use X results in the mouse
repeatedly freezing for a moment, then coming back to life.
This is due to the problem discussed on tech-kern using the highly
technical designation ``sucky performance''. :-)
For more details see the email from
Ross Harvey
http://mail-index.netbsd.org/tech-kern/1999/01/23/0002.html
and
Bill Sommerfeld
http://mail-index.netbsd.org/tech-kern/1999/01/23/0003.html
This problem was solved by scheduler mods in -current on 1/23/99
The following patch should apply to NetBSD 1.3, 1.3.1, 1.3.2, and 1.3.3.
Instructions:
Assuming you have the kernel source extracted and ready to build,
patch -d /sys/kern < 1.3schedpatch
Index: kern_exit.c
===================================================================
RCS file: /cvsroot/src/sys/kern/kern_exit.c,v
retrieving revision 1.61
retrieving revision 1.63
diff -u -r1.61 -r1.63
--- kern_exit.c 1998/11/11 22:37:13 1.61
+++ kern_exit.c 1999/01/23 22:23:19 1.63
@@ -452,6 +452,11 @@
wakeup((caddr_t)p->p_pptr);
return (0);
}
+
+ /* Charge us for our child's sins */
+ curproc->p_estcpu = min(curproc->p_estcpu +
+ p->p_estcpu, UCHAR_MAX);
+
p->p_xstat = 0;
ruadd(&q->p_stats->p_cru, p->p_ru);
pool_put(&rusage_pool, p->p_ru);
Index: kern_fork.c
===================================================================
RCS file: /cvsroot/src/sys/kern/kern_fork.c,v
retrieving revision 1.50
retrieving revision 1.52
diff -u -r1.50 -r1.52
--- kern_fork.c 1998/11/11 22:44:25 1.50
+++ kern_fork.c 1999/01/23 22:23:19 1.52
@@ -315,6 +315,13 @@
ktradref(p2);
}
#endif
+
+ /*
+ * set priority of child to be that of parent
+ * XXX should move p_estcpu into the region of struct proc which gets
+ * copied.
+ */
+ p2->p_estcpu = p1->p_estcpu;
/*
* This begins the section where we must prevent the parent