[dm-devel] [PATCH 0/4] dm: simplify request-based DM a bit and an RFC-like perf tweak
Mike Snitzer
snitzer at redhat.com
Tue Feb 24 16:44:06 UTC 2015
These changes were born out of me staring at the DM core code that
deals with request-based DM, in response to this thread:
https://www.redhat.com/archives/dm-devel/2015-February/msg00118.html
I've tested patches 1-3. Patch 4 is more an RFC patch that fell out
of discussion I had with Jeff Moyer ("phro" below):
<phro> are you sure it isn't just i/o completion that's pulling more requests off the queue?
<phro> at least at the lower layer, that's what happens. you get an interrupt for i/o completion, and in that contxt you submit any pending i/o
<snitm> in drivers/md/dm.c: dm_end_request -> rq_completed -> blk_run_queue_async
<snitm> so could very well be
<phro> ok, only difference is you kick it off to a work queue
<phro> for immediate dispatch
<snitm> right
<phro> so that makes sense. as soon as an i/o is completed, a new one is issued
<snitm> could impose a delay on the running of the queue
<phro> right
<snitm> e.g. how dm.c:dm_request_fn does blk_delay_queue(q, HZ / 10);
<snitm> (which is what promotes merging in the ->lld_busy_fn returning true case)
<snitm> that _could_ be enough to slow things down slightly
<phro> it's worth a shot
Mike Snitzer (4):
dm: remove unnecessary wrapper around blk_lld_busy
dm: remove request-based DM queue's lld_busy_fn hook
dm: remove request-based logic from make_request_fn wrapper
dm: delay running the queue slightly during request completion
block/blk-core.c | 5 ++--
drivers/md/dm-mpath.c | 2 +-
drivers/md/dm-table.c | 14 -----------
drivers/md/dm.c | 54 +++++++++++--------------------------------
drivers/md/dm.h | 1 -
include/linux/blkdev.h | 2 --
include/linux/device-mapper.h | 5 ----
7 files changed, 17 insertions(+), 66 deletions(-)
--
1.9.3 (Apple Git-50)
More information about the dm-devel
mailing list