diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2013-06-25 12:59:04 +0530 |
---|---|---|
committer | Viresh Kumar <viresh.kumar@linaro.org> | 2013-06-26 14:59:09 +0530 |
commit | f86f292cf9fa2aa61b2af6d1c465d0bc5c408342 (patch) | |
tree | 6de4dd624c65f9d4b0627a77f6818de557374d60 | |
parent | f18487883271a1677a49d04aeacf08e8ae68e918 (diff) |
Revert "workqueues: Introduce new flag WQ_POWER_EFFICIENT for power oriented workqueues"tracking-big-LITTLE-MP-master-llct-20130715.0tracking-big-LITTLE-MP-master-llct-20130708.0tracking-big-LITTLE-MP-master-llct-20130701.0tracking-big-LITTLE-MP-master-llct-20130626.0big-LITTLE-MP-master-v18
This reverts commit cee22a15052faa817e3ec8985a28154d3fabc7aa.
-rw-r--r-- | Documentation/kernel-parameters.txt | 15 | ||||
-rw-r--r-- | include/linux/workqueue.h | 27 | ||||
-rw-r--r-- | kernel/power/Kconfig | 20 | ||||
-rw-r--r-- | kernel/workqueue.c | 13 |
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]); |