summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2013-06-25 12:59:04 +0530
committerViresh Kumar <viresh.kumar@linaro.org>2013-06-26 14:59:09 +0530
commitf86f292cf9fa2aa61b2af6d1c465d0bc5c408342 (patch)
tree6de4dd624c65f9d4b0627a77f6818de557374d60
parentf18487883271a1677a49d04aeacf08e8ae68e918 (diff)
This reverts commit cee22a15052faa817e3ec8985a28154d3fabc7aa.
-rw-r--r--Documentation/kernel-parameters.txt15
-rw-r--r--include/linux/workqueue.h27
-rw-r--r--kernel/power/Kconfig20
-rw-r--r--kernel/workqueue.c13
4 files changed, 0 insertions, 75 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 09382f35d583..d1179e6eb8af 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -3329,21 +3329,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
that this also can be controlled per-workqueue for
workqueues visible under /sys/bus/workqueue/.
- workqueue.power_efficient
- Per-cpu workqueues are generally preferred because
- they show better performance thanks to cache
- locality; unfortunately, per-cpu workqueues tend to
- be more power hungry than unbound workqueues.
-
- Enabling this makes the per-cpu workqueues which
- were observed to contribute significantly to power
- consumption unbound, leading to measurably lower
- power usage at the cost of small performance
- overhead.
-
- The default value of this parameter is determined by
- the config option CONFIG_WQ_POWER_EFFICIENT_DEFAULT.
-
x2apic_phys [X86-64,APIC] Use x2apic physical mode instead of
default x2apic cluster mode on platforms
supporting x2apic.
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index fc0136b604f2..623488fdc1f5 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -303,33 +303,6 @@ enum {
WQ_CPU_INTENSIVE = 1 << 5, /* cpu instensive workqueue */
WQ_SYSFS = 1 << 6, /* visible in sysfs, see wq_sysfs_register() */
- /*
- * Per-cpu workqueues are generally preferred because they tend to
- * show better performance thanks to cache locality. Per-cpu
- * workqueues exclude the scheduler from choosing the CPU to
- * execute the worker threads, which has an unfortunate side effect
- * of increasing power consumption.
- *
- * The scheduler considers a CPU idle if it doesn't have any task
- * to execute and tries to keep idle cores idle to conserve power;
- * however, for example, a per-cpu work item scheduled from an
- * interrupt handler on an idle CPU will force the scheduler to
- * excute the work item on that CPU breaking the idleness, which in
- * turn may lead to more scheduling choices which are sub-optimal
- * in terms of power consumption.
- *
- * Workqueues marked with WQ_POWER_EFFICIENT are per-cpu by default
- * but become unbound if workqueue.power_efficient kernel param is
- * specified. Per-cpu workqueues which are identified to
- * contribute significantly to power-consumption are identified and
- * marked with this flag and enabling the power_efficient mode
- * leads to noticeable power saving at the cost of small
- * performance disadvantage.
- *
- * http://thread.gmane.org/gmane.linux.kernel/1480396
- */
- WQ_POWER_EFFICIENT = 1 << 7,
-
__WQ_DRAINING = 1 << 16, /* internal: workqueue is draining */
__WQ_ORDERED = 1 << 17, /* internal: workqueue is ordered */
diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig
index 46455961a88f..5dfdc9ea180b 100644
--- a/kernel/power/Kconfig
+++ b/kernel/power/Kconfig
@@ -263,26 +263,6 @@ config PM_GENERIC_DOMAINS
bool
depends on PM
-config WQ_POWER_EFFICIENT_DEFAULT
- bool "Enable workqueue power-efficient mode by default"
- depends on PM
- default n
- help
- Per-cpu workqueues are generally preferred because they show
- better performance thanks to cache locality; unfortunately,
- per-cpu workqueues tend to be more power hungry than unbound
- workqueues.
-
- Enabling workqueue.power_efficient kernel parameter makes the
- per-cpu workqueues which were observed to contribute
- significantly to power consumption unbound, leading to measurably
- lower power usage at the cost of small performance overhead.
-
- This config option determines whether workqueue.power_efficient
- is enabled by default.
-
- If in doubt, say N.
-
config PM_GENERIC_DOMAINS_SLEEP
def_bool y
depends on PM_SLEEP && PM_GENERIC_DOMAINS
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 8068d97ce141..4aa9f5bc6b2d 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -272,15 +272,6 @@ static cpumask_var_t *wq_numa_possible_cpumask;
static bool wq_disable_numa;
module_param_named(disable_numa, wq_disable_numa, bool, 0444);
-/* see the comment above the definition of WQ_POWER_EFFICIENT */
-#ifdef CONFIG_WQ_POWER_EFFICIENT_DEFAULT
-static bool wq_power_efficient = true;
-#else
-static bool wq_power_efficient;
-#endif
-
-module_param_named(power_efficient, wq_power_efficient, bool, 0444);
-
static bool wq_numa_enabled; /* unbound NUMA affinity enabled */
/* buf for wq_update_unbound_numa_attrs(), protected by CPU hotplug exclusion */
@@ -4094,10 +4085,6 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt,
struct workqueue_struct *wq;
struct pool_workqueue *pwq;
- /* see the comment above the definition of WQ_POWER_EFFICIENT */
- if ((flags & WQ_POWER_EFFICIENT) && wq_power_efficient)
- flags |= WQ_UNBOUND;
-
/* allocate wq and format name */
if (flags & WQ_UNBOUND)
tbl_size = wq_numa_tbl_len * sizeof(wq->numa_pwq_tbl[0]);