diff options
author | Jens Axboe <axboe@fb.com> | 2016-11-14 13:01:59 -0700 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2016-11-17 13:34:51 -0700 |
commit | 06426adf072bca62ac31ea396ff2159a34f276c2 (patch) | |
tree | 2df53bc89ed0d48866e794eed828311d969d6506 /include/linux | |
parent | 189ce2b9dcc3494410a576fbecbedbb6b21e51e0 (diff) | |
download | op-kernel-dev-06426adf072bca62ac31ea396ff2159a34f276c2.zip op-kernel-dev-06426adf072bca62ac31ea396ff2159a34f276c2.tar.gz |
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>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/blkdev.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index bab18ee..37ed4ea 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -509,6 +509,7 @@ struct request_queue { unsigned int request_fn_active; unsigned int rq_timeout; + unsigned int poll_nsec; struct timer_list timeout; struct work_struct timeout_work; struct list_head timeout_list; |