OpenCloudOS-Kernel/block
Jens Axboe 06426adf07 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>
2016-11-17 13:34:51 -07:00
..
partitions block: atari: Return early for unsupported sector size 2016-07-13 09:31:44 -07:00
Kconfig block: hook up writeback throttling 2016-11-10 13:53:40 -07:00
Kconfig.iosched blkcg: make CONFIG_BLK_CGROUP bool 2012-03-06 21:27:21 +01:00
Makefile blk-wbt: add general throttling mechanism 2016-11-10 13:53:32 -07:00
badblocks.c block, badblocks: introduce devm_init_badblocks 2016-01-09 08:39:04 -08:00
bio-integrity.c block: remove bio_is_rw 2016-10-28 08:45:17 -06:00
bio.c block: add bio_iov_iter_get_pages() 2016-11-02 10:50:18 -06:00
blk-cgroup.c blkcg: Unlock blkcg_pol_mutex only once when cpd == NULL 2016-09-30 10:31:20 +02:00
blk-core.c block: deal with stale req count of plug list 2016-11-16 08:09:51 -07:00
blk-exec.c block: split out request-only flags into a new namespace 2016-10-28 08:45:17 -06:00
blk-flush.c block: set REQ_SYNC if we clear REQ_FUA|REQ_PREFLUSH 2016-11-08 19:39:28 -07:00
blk-integrity.c block, libnvdimm, nvme: provide a built-in blk_integrity nop profile 2015-10-21 14:43:45 -06:00
blk-ioc.c mm, page_alloc: distinguish between being unable to sleep, unwilling to sleep and avoiding waking kswapd 2015-11-06 17:50:42 -08:00
blk-lib.c block: better op and flags encoding 2016-10-28 08:48:16 -06:00
blk-map.c block: better op and flags encoding 2016-10-28 08:48:16 -06:00
blk-merge.c block: split out request-only flags into a new namespace 2016-10-28 08:45:17 -06:00
blk-mq-cpumap.c blk-mq: allow the driver to pass in a queue mapping 2016-09-15 08:42:03 -06:00
blk-mq-pci.c blk_mq: linux/blk-mq.h does not include all the headers it depends on 2016-09-19 08:21:51 -06:00
blk-mq-sysfs.c block: add scalable completion tracking of requests 2016-11-10 13:53:26 -07:00
blk-mq-tag.c Merge branch 'for-4.9/block-irq' of git://git.kernel.dk/linux-block 2016-10-09 17:29:33 -07:00
blk-mq-tag.h Merge branch 'for-4.9/block-irq' of git://git.kernel.dk/linux-block 2016-10-09 17:29:33 -07:00
blk-mq.c blk-mq: implement hybrid poll mode for sync O_DIRECT 2016-11-17 13:34:51 -07:00
blk-mq.h block: add scalable completion tracking of requests 2016-11-10 13:53:26 -07:00
blk-settings.c block: hook up writeback throttling 2016-11-10 13:53:40 -07:00
blk-softirq.c This adds a new gcc plugin named "latent_entropy". It is designed to 2016-10-15 10:03:15 -07:00
blk-stat.c block: add scalable completion tracking of requests 2016-11-10 13:53:26 -07:00
blk-stat.h block: add scalable completion tracking of requests 2016-11-10 13:53:26 -07:00
blk-sysfs.c blk-mq: implement hybrid poll mode for sync O_DIRECT 2016-11-17 13:34:51 -07:00
blk-tag.c block: split out request-only flags into a new namespace 2016-10-28 08:45:17 -06:00
blk-throttle.c block: replace REQ_THROTTLED with a bio flag 2016-10-28 08:45:17 -06:00
blk-timeout.c block: remove REQ_NO_TIMEOUT flag 2015-12-22 09:38:34 -07:00
blk-wbt.c blk-wbt: fix old-style function declaration 2016-11-16 08:32:40 -07:00
blk-wbt.h blk-wbt: remove stat ops 2016-11-11 16:18:24 -07:00
blk-zoned.c block: zoned: fix harmless maybe-uninitialized warning 2016-10-24 20:51:22 -06:00
blk.h blk-mq: implement hybrid poll mode for sync O_DIRECT 2016-11-17 13:34:51 -07:00
bounce.c Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2015-09-19 18:57:09 -07:00
bsg-lib.c bsg: Add sparse annotations to bsg_request_fn() 2016-11-14 09:57:03 -07:00
bsg.c block: drop q argument from bsg_validate_sgv4_hdr 2016-11-03 07:56:14 -06:00
cfq-iosched.c block: hook up writeback throttling 2016-11-10 13:53:40 -07:00
cmdline-parser.c block: remove unrelated header files and export symbol 2014-01-21 20:18:26 -08:00
compat_ioctl.c mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
deadline-iosched.c block: do not merge requests without consulting with io scheduler 2016-07-20 21:35:12 -06:00
elevator.c block: better op and flags encoding 2016-10-28 08:48:16 -06:00
genhd.c block: fix bdi vs gendisk lifetime mismatch 2016-08-04 14:19:16 -06:00
ioctl.c blk-zoned: implement ioctls 2016-10-18 10:05:42 -06:00
ioprio.c block: fix use-after-free in sys_ioprio_get() 2016-07-01 08:39:24 -06:00
noop-iosched.c elevator: use list_{first,prev,next}_entry 2015-11-16 15:21:48 -07:00
partition-generic.c block/partition-generic.c: Remove a set-but-not-used variable 2016-06-14 09:09:15 -06:00
scsi_ioctl.c mm, page_alloc: rename __GFP_WAIT to __GFP_RECLAIM 2015-11-06 17:50:42 -08:00
t10-pi.c block: Consolidate static integrity profile properties 2015-10-21 14:42:38 -06:00