Spdk/lib
Daniel Verkamp 5e86c80951 nvme/pcie: limit max completions based on queue size
For a given hardware queue size, only allow a quarter of the queue size
to be returned as completions in a single call to
spdk_nvme_qpair_process_completions(), and adjust num_trackers to match
so that num_trackers + max_completions_cap doesn't exceed the hardware
completion queue size.  This ensures that there is room in the
completion queue if new I/O is issued in response to completions before
we ring the completion queue doorbell.

The choice of 1/4 queue size is arbitrary; this seems to be a good
compromise between completion batch size and number of trackers.

Change-Id: I2c5aad7b98bfc8b33e53242240b2c9254fa05b4e
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/393529
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2018-01-05 12:45:28 -05:00
..
bdev bdev: eliminate memset in spdk_bdev_get_io 2018-01-05 12:44:31 -05:00
blob lvol, blob: make channel operations number configurable for blob. 2018-01-04 14:05:30 -05:00
blobfs blob: change spdk_bs_iter_next parameter to spdk_blob * 2017-12-15 12:28:44 -05:00
conf conf: Remove use of perror() for strdup() failure 2017-12-15 16:13:27 -05:00
copy build: remove $(ENV_CFLAGS) where not necessary 2018-01-03 12:05:59 -05:00
cunit include: Move the remainder of the code base to stdinc.h 2017-05-08 13:20:36 -07:00
env_dpdk env: export spdk_env_get_last_core function. 2017-12-23 15:08:24 -05:00
event build: remove $(ENV_CFLAGS) where not necessary 2018-01-03 12:05:59 -05:00
ioat build: remove $(ENV_CFLAGS) where not necessary 2018-01-03 12:05:59 -05:00
iscsi scsi, iscsi: move task->parent to iSCSI task 2018-01-05 00:01:37 -05:00
json astyle: enforce braces around single-line statements 2017-12-11 11:19:32 -05:00
jsonrpc util: add spdk_strerror() wrapper with TLS support 2018-01-04 15:00:09 -05:00
log log: rename SPDK_TRACE_* to SPDK_LOG_* 2017-12-07 12:23:19 -05:00
lvol lvol, blob: make channel operations number configurable for blob. 2018-01-04 14:05:30 -05:00
nbd nbd: relocate 2 mop-up ioctls 2018-01-04 15:30:59 -05:00
net util: add spdk_strerror() wrapper with TLS support 2018-01-04 15:00:09 -05:00
nvme nvme/pcie: limit max completions based on queue size 2018-01-05 12:45:28 -05:00
nvmf util: add spdk_strerror() wrapper with TLS support 2018-01-04 15:00:09 -05:00
rocksdb astyle: enforce braces around single-line statements 2017-12-11 11:19:32 -05:00
rpc build: remove $(ENV_CFLAGS) where not necessary 2018-01-03 12:05:59 -05:00
scsi scsi: annotate unlikely checks in read/write 2018-01-05 00:01:37 -05:00
trace util: add spdk_strerror() wrapper with TLS support 2018-01-04 15:00:09 -05:00
ut_mock test/mock: add pthread_self 2017-09-19 17:15:15 -04:00
util util: add spdk_strerror() wrapper with TLS support 2018-01-04 15:00:09 -05:00
vhost scsi, iscsi: move task->parent to iSCSI task 2018-01-05 00:01:37 -05:00
virtio util: add spdk_strerror() wrapper with TLS support 2018-01-04 15:00:09 -05:00
Makefile virtio: add new library virtio 2017-12-26 13:03:29 -05:00