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)
committerMark Brown <broonie@linaro.org>
Thu, 18 Jul 2013 13:29:31 +0000 (14:29 +0100)
commit61a10f9763d989e6716fe35030951f2ccfca822a
treea4bbce82fd37ff6ec366511312efe17dc5468fff
parent8bb495e3f02401ee6f76d1b1d77f3ac9f079e376
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>
(cherry picked from commit cee22a15052faa817e3ec8985a28154d3fabc7aa)
Signed-off-by: Mark Brown <broonie@linaro.org>
Documentation/kernel-parameters.txt
include/linux/workqueue.h
kernel/power/Kconfig
kernel/workqueue.c