workqueues: Introduce new flag WQ_POWER_EFFICIENT for power oriented workqueues
authorViresh Kumar <viresh.kumar@linaro.org>
Mon, 8 Apr 2013 11:15:40 +0000 (16:45 +0530)
committerTejun Heo <tj@kernel.org>
Tue, 14 May 2013 17:50:06 +0000 (10:50 -0700)
commitcee22a15052faa817e3ec8985a28154d3fabc7aa
tree506028de7bd3bf7de08a7933b5601355f27c5262
parentf722406faae2d073cc1d01063d1123c35425939e
workqueues: Introduce new flag WQ_POWER_EFFICIENT for power oriented workqueues

Workqueues can be performance or power-oriented. Currently, most workqueues are
bound to the CPU they were created on. This gives good performance (due to cache
effects) at the cost of potentially waking up otherwise idle cores (Idle from
scheduler's perspective. Which may or may not be physically idle) just to
process some work. To save power, we can allow the work to be rescheduled on a
core that is already awake.

Workqueues created with the WQ_UNBOUND flag will allow some power savings.
However, we don't change the default behaviour of the system.  To enable
power-saving behaviour, a new config option CONFIG_WQ_POWER_EFFICIENT needs to
be turned on. This option can also be overridden by the
workqueue.power_efficient boot parameter.

tj: Updated config description and comments.  Renamed
    CONFIG_WQ_POWER_EFFICIENT to CONFIG_WQ_POWER_EFFICIENT_DEFAULT.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
Documentation/kernel-parameters.txt
include/linux/workqueue.h
kernel/power/Kconfig
kernel/workqueue.c