make the CPU frequency scaling duration relative to the load
authorsolene <solene@openbsd.org>
Tue, 10 May 2022 22:18:06 +0000 (22:18 +0000)
committersolene <solene@openbsd.org>
Tue, 10 May 2022 22:18:06 +0000 (22:18 +0000)
in the pre-change behavior, if the CPU frequency is raised, it will stay up
for 5 cycles minimum (with one cycle being run every 100ms).
With this change, the time to keep the frequency raised is incremented at
each cycle up to 5. This mean short load need triggering the frequency
increase will last less than the current minimum of 500ms.

this only affect the automatic mode when on battery, extending the battery
life for most interactive use scenarios and idling loads.

tested by many with good results
ok ketennis@

sys/kern/sched_bsd.c

index 4929548..7419b26 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: sched_bsd.c,v 1.70 2021/10/30 23:24:48 deraadt Exp $  */
+/*     $OpenBSD: sched_bsd.c,v 1.71 2022/05/10 22:18:06 solene Exp $   */
 /*     $NetBSD: kern_synch.c,v 1.37 1996/04/22 01:38:37 christos Exp $ */
 
 /*-
@@ -579,8 +579,8 @@ setperf_auto(void *v)
        }
        if (allidle < alltotal / 2)
                speedup = 1;
-       if (speedup)
-               downbeats = 5;
+       if (speedup && downbeats < 5)
+               downbeats++;
 
        if (speedup && perflevel != 100) {
 faster: