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);
        }

Reply via email to