summaryrefslogtreecommitdiffstats
path: root/usr.sbin/apmd
diff options
context:
space:
mode:
authortedu <tedu@openbsd.org>2014-07-22 22:09:36 +0000
committertedu <tedu@openbsd.org>2014-07-22 22:09:36 +0000
commit4d4881ee4ee657fc9fa401cedd962be7d4358227 (patch)
treec955472bc3cce69cfb368d7865405834157b1dbe /usr.sbin/apmd
parentadd 5.7 firmware key (diff)
downloadwireguard-openbsd-4d4881ee4ee657fc9fa401cedd962be7d4358227.tar.xz
wireguard-openbsd-4d4881ee4ee657fc9fa401cedd962be7d4358227.zip
adjust -C algorithm to be more aggressive in scaling up.
works better for me, and others as well.
Diffstat (limited to 'usr.sbin/apmd')
-rw-r--r--usr.sbin/apmd/apmd.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/usr.sbin/apmd/apmd.c b/usr.sbin/apmd/apmd.c
index 98dac884414..20e141e4a56 100644
--- a/usr.sbin/apmd/apmd.c
+++ b/usr.sbin/apmd/apmd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: apmd.c,v 1.63 2013/11/13 04:50:21 deraadt Exp $ */
+/* $OpenBSD: apmd.c,v 1.64 2014/07/22 22:09:36 tedu Exp $ */
/*
* Copyright (c) 1995, 1996 John T. Kohl
@@ -65,8 +65,8 @@ int doperf = PERF_NONE;
#define PERFDEC 20
#define PERFMIN 0
#define PERFMAX 100
-#define PERFINCTHRES 10
-#define PERFDECTHRES 30
+#define PERFINCTHRES 50
+#define PERFDECTHRES 60
extern char *__progname;
@@ -339,9 +339,7 @@ perf_status(struct apm_power_info *pinfo, int ncpu)
syslog(LOG_INFO, "cannot read hw.setperf");
if (forcehi || (avg_idle < PERFINCTHRES && perf < PERFMAX)) {
- perf += PERFINC;
- if (perf > PERFMAX)
- perf = PERFMAX;
+ perf = PERFMAX;
setperf(perf);
} else if (avg_idle > PERFDECTHRES && perf > PERFMIN) {
perf -= PERFDEC;
@@ -643,11 +641,12 @@ main(int argc, char *argv[])
sts = ts;
if (doperf == PERF_AUTO || doperf == PERF_COOL) {
- sts.tv_sec = 1;
+ sts.tv_sec = 0;
+ sts.tv_nsec = 200000000;
perf_status(&pinfo, ncpu);
}
- apmtimeout += sts.tv_sec;
+ apmtimeout += 1;
if ((rv = kevent(kq, NULL, 0, ev, 1, &sts)) < 0)
break;