]> git.baikalelectronics.ru Git - kernel.git/commit
blk-mq: implement hybrid poll mode for sync O_DIRECT
authorJens Axboe <axboe@fb.com>
Mon, 14 Nov 2016 20:01:59 +0000 (13:01 -0700)
committerJens Axboe <axboe@fb.com>
Thu, 17 Nov 2016 20:34:51 +0000 (13:34 -0700)
commita19bf73b0a1870b872fc601ce11368c5b92f1c7e
tree2df53bc89ed0d48866e794eed828311d969d6506
parent892940aaab84a07677cd255b3cf684d97fcdae61
blk-mq: implement hybrid poll mode for sync O_DIRECT

This patch enables a hybrid polling mode. Instead of polling after IO
submission, we can induce an artificial delay, and then poll after that.
For example, if the IO is presumed to complete in 8 usecs from now, we
can sleep for 4 usecs, wake up, and then do our polling. This still puts
a sleep/wakeup cycle in the IO path, but instead of the wakeup happening
after the IO has completed, it'll happen before. With this hybrid
scheme, we can achieve big latency reductions while still using the same
(or less) amount of CPU.

Signed-off-by: Jens Axboe <axboe@fb.com>
Tested-By: Stephen Bates <sbates@raithlin.com>
Reviewed-By: Stephen Bates <sbates@raithlin.com>
block/blk-mq.c
block/blk-sysfs.c
block/blk.h
include/linux/blkdev.h