Re: unnecessary timer interrupt of slab.c and bdi tasks when thesystem is in sleep state

From: Christoph Lameter
Date: Thu Sep 30 2010 - 10:13:18 EST


On Thu, 30 Sep 2010, Wu, Xia wrote:

> I found some unnecessary timer interrupts when the system enter sleep state.
> (1) /mm/slab.c
> cache_reap() clean up on allocated memory every 2s. If the system is in sleep state, the system is waked-up when this timer expires. In fact,
> there isn't more slabs to been cleaned up in sleep state.

Right. We could switch off the timer when idle without much of an issue.
The expiration of the caches wont occur and so we will have stale objects
on the queues when we exit sleep state. You could flush the queues before
switching off the timers?

(The alternate allocator SLUB does not use timers)

> I think these timers should not wake-up the system when the system is in
> sleep state. In these cases, these timers only waste the CPU resource
> and consume more power.

Agreed. In addition I would like these timers to also switch off if the
code running on this hardward thread does not engage in any memory
allocation (slab) or if there is no dirty writeback on a cpu. These timers
can cause unexpected latencies and introduce undesirable variability into
processes needing either full processor speed or low latency responses to
events.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/