Spdk/test/unit/lib
paul luse 10808e45d4 idxd: refactor flow control for idxd engine
Recent work identified race conditions having to do with the
dynamic flow control mechanism for the idxd engine. In order
to both address the issue and simplify the code a new scheme
is now in place.  Essentially every DSA device will be allowed
to accomodate 8 channels and each channel will get a fixed 1/8
the number of work queue entries regardless of how many
channels there are.  Assignment of channels to devices is round
robin and if/when no more channels can be accommodated the get
channel request will fail.

The performance tests also revealed another issue that was
masked before, it's a one-line so is in this patch for convenience.
In the idxd poller we limit the number of completions allowed
during one run to avoid the poller thread from starving other
threads since as operations complete on this thread they are
immediately replaced up to the limit for the channel.

Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: I913e809a934b562feb495815a9b9c605d622285c
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8171
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2021-06-29 00:46:25 +00:00
..
accel thread: Make the definition of struct spdk_io_channel private 2021-06-25 05:01:45 +00:00
bdev thread: Make the definition of struct spdk_io_channel private 2021-06-25 05:01:45 +00:00
blob thread: Make the definition of struct spdk_io_channel private 2021-06-25 05:01:45 +00:00
blobfs thread: Make the definition of struct spdk_io_channel private 2021-06-25 05:01:45 +00:00
env_dpdk unit: add unit test for the pci event 2021-04-19 12:55:17 +00:00
event ut/event: fix cpumask resetting for scheduler tests 2021-06-28 16:18:19 +00:00
ftl thread: Make the definition of struct spdk_io_channel private 2021-06-25 05:01:45 +00:00
idxd idxd: refactor flow control for idxd engine 2021-06-29 00:46:25 +00:00
init event: Shift subsystem initialization code to a separate library 2021-05-24 10:12:50 +00:00
ioat ut: make use of CUnit macro to reduce duplications 2020-04-02 14:50:12 +00:00
iscsi mk/unit: link with trace library 2021-06-10 10:58:05 +00:00
json json: add spdk_json_free_object() 2020-10-19 10:02:10 +00:00
jsonrpc lib/jsonrpc: remove spdk_ prefix from internal functions. 2020-05-11 12:29:07 +00:00
log log: simplify SPDK_LOG_REGISTER_COMPONENT 2020-10-14 08:00:35 +00:00
lvol thread: Make the definition of struct spdk_io_channel private 2021-06-25 05:01:45 +00:00
notify ut: make use of CUnit macro to reduce duplications 2020-04-02 14:50:12 +00:00
nvme test/nvme_pcie: cases for pmr configuration 2021-06-28 16:30:50 +00:00
nvmf thread: Make the definition of struct spdk_io_channel private 2021-06-25 05:01:45 +00:00
reduce test: add generic unlink wrapper 2020-05-06 12:43:57 +00:00
scsi scsi: Delete mutex from spdk_scsi_globals 2021-06-17 08:59:18 +00:00
sock sock: Add sock_map_find_free 2021-04-22 07:29:26 +00:00
thread thread: Make the definition of struct spdk_io_channel private 2021-06-25 05:01:45 +00:00
util util/crc32c: Add spdk_crc32c_iov_update. 2021-06-02 11:37:17 +00:00
vhost lib/vhost: force cpumask to be subset of application's CPU mask 2021-02-04 08:35:08 +00:00
json_mock.c ut/json_mock: Add spdk_json_write_string_fmt() 2021-02-09 11:29:53 +00:00
Makefile event: Shift subsystem initialization code to a separate library 2021-05-24 10:12:50 +00:00