aboutsummaryrefslogtreecommitdiff
path: root/block/blk-core.c
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2013-04-24 17:12:56 +0530
committerMoyster <oysterized@gmail.com>2016-08-26 20:22:04 +0200
commit9576289196a2bbf411ce3f263730606d6d1782ba (patch)
treec79bbafd6e9b82fae29ce06439ace98c836d01eb /block/blk-core.c
parentc510b699c618941b9bd207a4c7c0c25ee64216ea (diff)
block: queue work on power efficient wq
Block layer uses workqueues for multiple purposes. There is no real dependency of scheduling these on the cpu which scheduled them. On a idle system, it is observed that and idle cpu wakes up many times just to service this work. It would be better if we can schedule it on a cpu which the scheduler believes to be the most appropriate one. This patch replaces normal workqueues with power efficient versions. Cc: Jens Axboe <axboe@kernel.dk> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Tejun Heo <tj@kernel.org> (cherry picked from commit 695588f9454bdbc7c1a2fbb8a6bfdcfba6183348) Signed-off-by: Mark Brown <broonie@linaro.org> Signed-off-by: Stefan Guendhoer <stefan@guendhoer.com>
Diffstat (limited to 'block/blk-core.c')
-rw-r--r--block/blk-core.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/block/blk-core.c b/block/blk-core.c
index 9f671cd6c..9131c0f4d 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -3300,7 +3300,8 @@ int __init blk_dev_init(void)
/* used for unplugging and affects IO latency/throughput - HIGHPRI */
kblockd_workqueue = alloc_workqueue("kblockd",
- WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
+ WQ_MEM_RECLAIM | WQ_HIGHPRI |
+ WQ_POWER_EFFICIENT, 0);
if (!kblockd_workqueue)
panic("Failed to create kblockd\n");