+40
−43
Loading
DSA can queue up submitted accel task when spdk_idxd_submit_*() fails with EBUSY, for example when there are no more free batches on the channel. After idxd_poll() processes currently outstanding commands, queued tasks are then proceeded using the same function as any new task (dsa_submit_tasks()). The issue is with the queue_tasks label in dsa_submit_tasks(), when not all entries from the queued_tasks list can be submitted. Loop there basically rewrites whole queued_tasks list one by one. With large enough queue depth a considerable portion of time was spent rewriting that list. This might have been an omission or was done to consolidate single task and queued task submission in single function. To address this, both cases are now separate. Simplifying single task submission. Meanwhile queued tasks are removed from list as they are submitted. This way avoiding rewriting the list. Signed-off-by:Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I9162fe01c2d4ee406cf9eb5ec361c6bfd573c831 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/21186 Tested-by:
SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by:
Jim Harris <jim.harris@samsung.com> Reviewed-by:
Konrad Sztyber <konrad.sztyber@intel.com> Community-CI: Mellanox Build Bot