for reference, i use this. faster query interval and when not idle, slam high immediately.
Index: apmd.c =================================================================== RCS file: /cvs/src/usr.sbin/apmd/apmd.c,v retrieving revision 1.63 diff -u -p -r1.63 apmd.c --- apmd.c 13 Nov 2013 04:50:21 -0000 1.63 +++ apmd.c 1 Jul 2014 01:16:29 -0000 @@ -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 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;