don't back down quite so quick. let the system be idle for 5 ticks
before clocking down.
Index: sched_bsd.c
===================================================================
RCS file: /cvs/src/sys/kern/sched_bsd.c,v
retrieving revision 1.38
diff -u -p -r1.38 sched_bsd.c
--- sched_bsd.c 3 Nov 2014 03:08:00 -0000 1.38
+++ sched_bsd.c 11 Nov 2014 02:09:42 -0000
@@ -586,6 +586,7 @@ void
setperf_auto(void *v)
{
static uint64_t *idleticks, *totalticks;
+ static int downbeats;
int i, j;
int speedup;
@@ -628,11 +629,13 @@ setperf_auto(void *v)
}
if (allidle < alltotal / 2)
speedup = 1;
+ if (speedup)
+ downbeats = 5;
if (speedup && perflevel != 100) {
perflevel = 100;
cpu_setperf(perflevel);
- } else if (!speedup && perflevel != 0) {
+ } else if (!speedup && perflevel != 0 && --downbeats <= 0) {
perflevel = 0;
cpu_setperf(perflevel);
}