It aims to avoid bdev starvation by setting separate io_context to each bdev_aio io channel and link them into group channel. Previous, each ch of aio_bdev on a same spdk_thread shares same io_context. If one of them submits too many IO to the io_context, then other channels will be starved. Moreover, if the first bdev_io gets NOMEM error, then the following IO of this bdev have no chance to get processed. The bdev_aio starvation can be reproduced by bdevperf in v20.04, by: ./bdevperf -q 100 -w randwrite -t 5 -c hdd.conf -o 1048576 (hdd.conf defines 2 aio_bdevs of HDD) Change-Id: Ic709323f5baeb2f8f7250b75ad872ec4156b5e78 Signed-off-by: Xiaodong Liu <xiaodong.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3808 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Ziye Yang <ziye.yang@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Community-CI: Broadcom CI |
||
---|---|---|
.. | ||
accel | ||
bdev | ||
blob | ||
blobfs | ||
env_dpdk | ||
event | ||
sock | ||
Makefile |