diff options
author | Jens Axboe <axboe@kernel.dk> | 2017-11-10 00:10:13 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2017-11-11 03:55:57 +0100 |
commit | f906a6a0f42684715b552ccff9282b22cfe2b5a2 (patch) | |
tree | f688bc86c652853b8eea76600bee3583de31c416 /drivers/ide | |
parent | brd: remove unused brd_mutex (diff) | |
download | linux-f906a6a0f42684715b552ccff9282b22cfe2b5a2.tar.xz linux-f906a6a0f42684715b552ccff9282b22cfe2b5a2.zip |
blk-mq: improve tag waiting setup for non-shared tags
If we run out of driver tags, we currently treat shared and non-shared
tags the same - both cases hook into the tag waitqueue. This is a bit
more costly than it needs to be on unshared tags, since we have to both
grab the hctx lock, and the waitqueue lock (and disable interrupts).
For the non-shared case, we can simply mark the queue as needing a
restart.
Split blk_mq_dispatch_wait_add() to account for both cases, and
rename it to blk_mq_mark_tag_wait() to better reflect what it
does now.
Without this patch, shared and non-shared performance is about the same
with 4 fio thread hammering on a single null_blk device (~410K, at 75%
sys). With the patch, the shared case is the same, but the non-shared
tags case runs at 431K at 71% sys.
Reviewed-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/ide')
0 files changed, 0 insertions, 0 deletions