Spdk/lib/bdev
Jim Harris 86d77e2eb6 bdev: account for missed qos timeslice timeouts
There could be cases (especially in virtualized and/or test
environments) where we could accumulate significant skew in
the timeslice frequency.  Rather than depend on the application
framework to try to guarantee the rate of timeslice poller
callbacks, keep track internally of the last time the poller
was invoked.  If/when we accumulate and detect skew equivalent
to one or more timeslices, increase the allowed IO and bandwidth
of the next timeslice to accomodate.

Since bdev poller now calls spdk_get_ticks() to do accounting,
this patch also fixes up the increment_time() unit test function
and the test env layer to properly increment the fake TSC.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Iba301ddc0fb3d02042106a8bf6e4a6a9a84dc263

Reviewed-on: https://review.gerrithub.io/423580
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: GangCao <gang.cao@intel.com>
2018-09-02 23:59:27 +00:00
..
aio bdev/aio: Add the epoll support 2018-08-14 04:10:36 +00:00
error bdev/part: use internal buffers for part and product name. 2018-08-30 22:08:56 +00:00
gpt bdev/part: use internal buffers for part and product name. 2018-08-30 22:08:56 +00:00
iscsi bdev/iscsi: unregister io_device on bdev destruction 2018-07-27 18:58:53 +00:00
lvol bdev/lvol: using spdk_bdev_alias_del_all() to delete all alias on destroy 2018-08-21 00:53:31 +00:00
malloc bdev/malloc: remove blocklen power of 2 restriction 2018-08-15 17:36:00 +00:00
null bdev/null: free global resources on module finish 2018-07-30 15:38:07 +00:00
nvme nvme: add spdk_nvme_ns_get_extended_sector_size 2018-08-16 04:38:10 +00:00
passthru lib: fix typos in the lib directory 2018-08-24 17:15:12 +00:00
pmem lib: fix typos in the lib directory 2018-08-24 17:15:12 +00:00
raid bdev/raid: remove unneeded buf field 2018-08-31 23:21:19 +00:00
rbd bdev/rbd: change the poller to timer poller 2018-07-03 16:40:18 +00:00
rpc bdev: add tracking for time spent processing I/O. 2018-07-31 23:26:07 +00:00
split bdev/part: use internal buffers for part and product name. 2018-08-30 22:08:56 +00:00
virtio bdev/virtio_blk: defer bdev destruct completion 2018-07-31 01:13:07 +00:00
bdev.c bdev: account for missed qos timeslice timeouts 2018-09-02 23:59:27 +00:00
Makefile bdev: add raid bdev module 2018-07-16 20:50:40 +00:00
part.c bdev/part: use internal buffers for part and product name. 2018-08-30 22:08:56 +00:00
scsi_nvme.c bdev: move error union to internal spdk_bdev_io struct 2018-06-26 20:04:07 +00:00
vtune.c bdev: disable new GCC 7 warning in VTune code 2018-03-19 15:58:15 -04:00