> Reading the source, system time is always included in the calculation. > There is an option to decide whether to include or exclude nice'd > processes, but user, system, irq, and softirq time is always included.
In the mean time, I changed the way, powernowd calculates the system's load. I added the iowait time to the calculation (see attached tiny patch). Since then I haven't noticed that powernowd didn't scale up the cpu frequency when the load was high. Even if the name "iowait" suggests that it's not an active load to the system, there seems to be enough iowait "load" in certain situations t0 kep powernowd from scaling up the frequency. I'm running this modified powernowd since about 10 days and haven't noticed any negative side effects. Instead, it does exactly what I expect it to do. Any changes to include this change upstream? Thanks, Thomas -- Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer
diff -aur powernowd-0.97.orig/powernowd.c powernowd-0.97/powernowd.c --- powernowd-0.97.orig/powernowd.c 2006-02-13 05:29:24.000000000 +0100 +++ powernowd-0.97/powernowd.c 2006-06-11 10:01:04.000000000 +0200 @@ -341,12 +341,14 @@ if (ignore_nice) { usage = (cpu->reading->user - cpu->last_reading->user) + (cpu->reading->system - cpu->last_reading->system) + + (cpu->reading->iowait - cpu->last_reading->iowait) + (cpu->reading->irq - cpu->last_reading->irq) + (cpu->reading->softirq - cpu->last_reading->softirq); } else { usage = (cpu->reading->user - cpu->last_reading->user) + (cpu->reading->mynice - cpu->last_reading->mynice) + (cpu->reading->system - cpu->last_reading->system) + + (cpu->reading->iowait - cpu->last_reading->iowait) + (cpu->reading->irq - cpu->last_reading->irq) + (cpu->reading->softirq - cpu->last_reading->softirq); }