Messages in this thread Patch in this message |  | | Date | Tue, 22 Mar 2011 13:25:55 -0700 | From | Jesse Barnes <> | Subject | Re: intel_ips produces constant load of 1 |
| |
On Mon, 21 Mar 2011 11:04:04 -0700 Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
> > ps aux | grep ips > > root 593 0.0 0.0 0 0 ? S 17:20 0:00 > > [ips-adjust] > > root 594 0.0 0.0 0 0 ? D 17:20 0:00 > > [ips-monitor] > > > > If the module isn't loaded, the load of the machine in idle mode is 0 as > > expected. > > This is a reporting problem, and probably due to the schedule() call > and associated task state in the ips-monitor thread. I thought setting > the task state to interruptible would prevent this, but it seems like > it's not enough for the deferrable on-stack timers? > > At any rate, it's not actually causing increased CPU usage, so you can > safely ignore it until we have a fix.
Oops, one task uses interruptible correctly, but the monitor thread doesn't.
Does this patch fix your load average?
-- Jesse Barnes, Intel Open Source Technology Center
diff --git a/drivers/platform/x86/intel_ips.c b/drivers/platform/x86/intel_ips.c index 1294a39..85c8ad4 100644 --- a/drivers/platform/x86/intel_ips.c +++ b/drivers/platform/x86/intel_ips.c @@ -1111,7 +1111,7 @@ static int ips_monitor(void *data) last_msecs = jiffies_to_msecs(jiffies); expire = jiffies + msecs_to_jiffies(IPS_SAMPLE_PERIOD); - __set_current_state(TASK_UNINTERRUPTIBLE); + __set_current_state(TASK_INTERRUPTIBLE); mod_timer(&timer, expire); schedule();
|  |