Spdk/test/unit/lib
GangCao a2142f3a33 bdev/qos: add the QoS rate limiting support on bdev
This patch is to add the basic support of QoS on bdev.

Including two major functionalities:

1. The QoS rate limiting algorithm:
	a. New IO will be always queued first also under
	   the no memory condition
	b. Start the QoS IO operation based on the limit
	c. A poller started in each millisecond to reset
	   the rate limit and send new IOs down
	d. The rate limit is based on the millisecond and
	   converted from user configurable IOsPerSecond

2. The Master Thread management:
	a. Add a per bdev channel_count
	b. Whenever QoS is enabled on bdev, if QoS bdev
	   channel is not created, create the QoS bdev
	   channel and assign the QoS thread
	c. When new IOs coming from different channels
	   (threads), pass the IOs to the QoS bdev channel
	   through the thread event
	d. When the IOs are completed from the QoS bdev
	   channel, pass the IOs back to its orignal
	   channel(thread)
	e. Destroy the QoS bdev channel when it is the
	   last bdev channel for this bdev. Defer the
	   destruction if current thread is not QoS thread

Change-Id: Ie4444551d7c3c7de52f6513c9db926628796adb4
Signed-off-by: GangCao <gang.cao@intel.com>
Reviewed-on: https://review.gerrithub.io/393136
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2018-03-09 13:48:21 -05:00
..
bdev bdev/qos: add the QoS rate limiting support on bdev 2018-03-09 13:48:21 -05:00
blob blobstore: add internal xattrs for creating blob 2018-03-08 11:34:15 -05:00
blobfs test: use spdk.unittest.mk in blob and blobfs unit tests 2018-02-14 11:07:05 -05:00
event subsystem: make subsystem declaration macro just register subsystem 2018-03-09 12:07:35 -05:00
ioat test: use spdk.unittest.mk for ioat unit tests 2018-02-14 10:40:40 -05:00
iscsi lib/iscsi: change type of spdk_iscsi_send_nopin to void 2018-03-08 12:11:24 -05:00
json ut/json: add missing UT for int64/uint64 write 2018-02-20 13:05:36 -05:00
jsonrpc jsonrpc: allow send_buf to grow as needed 2018-02-15 11:03:54 -05:00
log test: use spdk.unittest.mk for event and log unit tests 2018-02-14 11:07:05 -05:00
lvol bdev: Added functions allowing logical volume store rename. 2018-03-08 11:26:16 -05:00
net test/net: add unit tests for multiple spdk_net_impls 2018-02-22 00:16:14 -05:00
nvme util: add uuid.h to wrap libuuid 2018-03-08 10:49:51 -05:00
nvmf Support for Commands Supported and Effects Log Page 2018-03-02 13:45:35 -05:00
scsi scripts/check_format: check for spaces before tabs 2018-03-05 11:09:13 -05:00
util lib/util: return const pointer from spdk_cpuset_fmt 2018-02-20 13:05:36 -05:00
vhost vhost: always inline spdk_vhost_dev_has_feature 2018-02-20 12:35:21 -05:00
Makefile test: add spdk_sock unit tests 2018-02-12 12:30:39 -05:00