summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2011-01-03 15:01:47 +0100
committerJens Axboe <jaxboe@fusionio.com>2011-01-03 15:01:47 +0100
commit89b90be2d877a904b1704e4029db65655bfc6282 (patch)
tree0dbeda7f0efa17373bdd3c59793a36c417fa9d1c
parentblock: Clean up exit_io_context() source code. (diff)
downloadlinux-89b90be2d877a904b1704e4029db65655bfc6282.tar.xz
linux-89b90be2d877a904b1704e4029db65655bfc6282.zip
block: make kblockd_workqueue smarter
kblockd is used for unplugging and may affect IO latency and throughput and the max number of concurrent work items are bound by the number of block devices. Make it HIGHPRI workqueue w/ default max concurrency. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
-rw-r--r--block/blk-core.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/block/blk-core.c b/block/blk-core.c
index 151070541e21..3689319a5974 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -2606,7 +2606,9 @@ int __init blk_dev_init(void)
BUILD_BUG_ON(__REQ_NR_BITS > 8 *
sizeof(((struct request *)0)->cmd_flags));
- kblockd_workqueue = create_workqueue("kblockd");
+ /* used for unplugging and affects IO latency/throughput - HIGHPRI */
+ kblockd_workqueue = alloc_workqueue("kblockd",
+ WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
if (!kblockd_workqueue)
panic("Failed to create kblockd\n");