sock/uring: use batched manner to get the cqes.
Purpose: This can improve the performance. Change-Id: I3f5526ab8716cb0771b5e193afa9a0dbffec5cc0 Signed-off-by: Ziye Yang <ziye.yang@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1929 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
This commit is contained in:
parent
4f6fe26199
commit
79215d80c1
@ -884,23 +884,18 @@ static int
|
||||
spdk_sock_uring_group_reap(struct spdk_uring_sock_group_impl *group, int max, int max_read_events,
|
||||
struct spdk_sock **socks)
|
||||
{
|
||||
int i, count, ret;
|
||||
struct io_uring_cqe *cqe;
|
||||
int count, i, completed_cqe_num;
|
||||
struct io_uring_cqe *cqes[SPDK_SOCK_GROUP_QUEUE_DEPTH];
|
||||
struct spdk_uring_sock *sock, *tmp;
|
||||
struct spdk_uring_task *task;
|
||||
int status;
|
||||
|
||||
for (i = 0; i < max; i++) {
|
||||
ret = io_uring_peek_cqe(&group->uring, &cqe);
|
||||
if (ret != 0) {
|
||||
break;
|
||||
}
|
||||
max = spdk_min(max, SPDK_SOCK_GROUP_QUEUE_DEPTH);
|
||||
completed_cqe_num = io_uring_peek_batch_cqe(&group->uring, cqes, max);
|
||||
for (i = 0; i < completed_cqe_num; i++) {
|
||||
assert(cqes[i] != NULL);
|
||||
|
||||
if (cqe == NULL) {
|
||||
break;
|
||||
}
|
||||
|
||||
task = (struct spdk_uring_task *)cqe->user_data;
|
||||
task = (struct spdk_uring_task *)cqes[i]->user_data;
|
||||
assert(task != NULL);
|
||||
sock = task->sock;
|
||||
assert(sock != NULL);
|
||||
@ -908,8 +903,8 @@ spdk_sock_uring_group_reap(struct spdk_uring_sock_group_impl *group, int max, in
|
||||
assert(sock->group == group);
|
||||
sock->group->io_inflight--;
|
||||
sock->group->io_avail++;
|
||||
status = cqe->res;
|
||||
io_uring_cqe_seen(&group->uring, cqe);
|
||||
status = cqes[i]->res;
|
||||
io_uring_cqe_seen(&group->uring, cqes[i]);
|
||||
|
||||
task->status = SPDK_URING_SOCK_TASK_NOT_IN_USE;
|
||||
|
||||
|
@ -48,6 +48,8 @@ DEFINE_STUB(__io_uring_get_cqe, int, (struct io_uring *ring, struct io_uring_cqe
|
||||
DEFINE_STUB(io_uring_submit, int, (struct io_uring *ring), 0);
|
||||
DEFINE_STUB(io_uring_get_sqe, struct io_uring_sqe *, (struct io_uring *ring), 0);
|
||||
DEFINE_STUB(io_uring_queue_init, int, (unsigned entries, struct io_uring *ring, unsigned flags), 0);
|
||||
DEFINE_STUB(io_uring_peek_batch_cqe, unsigned, (struct io_uring *ring, struct io_uring_cqe **cqes,
|
||||
unsigned count), 0);
|
||||
DEFINE_STUB_V(io_uring_queue_exit, (struct io_uring *ring));
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user