From f75d5036d04cd57103fe1a50dffceb7c1040fbe7 Mon Sep 17 00:00:00 2001 From: Dylan Yudaken Date: Tue, 30 Aug 2022 05:50:13 -0700 Subject: [PATCH] io_uring: trace local task work run Add tracing for io_run_local_task_work Signed-off-by: Dylan Yudaken Link: https://lore.kernel.org/r/20220830125013.570060-8-dylany@fb.com Signed-off-by: Jens Axboe --- include/trace/events/io_uring.h | 29 +++++++++++++++++++++++++++++ io_uring/io_uring.c | 3 +++ 2 files changed, 32 insertions(+) diff --git a/include/trace/events/io_uring.h b/include/trace/events/io_uring.h index c5b21ff..936fd41 100644 --- a/include/trace/events/io_uring.h +++ b/include/trace/events/io_uring.h @@ -655,6 +655,35 @@ TRACE_EVENT(io_uring_short_write, __entry->wanted, __entry->got) ); +/* + * io_uring_local_work_run - ran ring local task work + * + * @tctx: pointer to a io_uring_ctx + * @count: how many functions it ran + * @loops: how many loops it ran + * + */ +TRACE_EVENT(io_uring_local_work_run, + + TP_PROTO(void *ctx, int count, unsigned int loops), + + TP_ARGS(ctx, count, loops), + + TP_STRUCT__entry ( + __field(void *, ctx ) + __field(int, count ) + __field(unsigned int, loops ) + ), + + TP_fast_assign( + __entry->ctx = ctx; + __entry->count = count; + __entry->loops = loops; + ), + + TP_printk("ring %p, count %d, loops %u", __entry->ctx, __entry->count, __entry->loops) +); + #endif /* _TRACE_IO_URING_H */ /* This part must be outside protection */ diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index 3a6badb7..d99b31a 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -1168,6 +1168,7 @@ int io_run_local_work(struct io_ring_ctx *ctx) struct llist_node fake; struct llist_node *current_final = NULL; int ret; + unsigned int loops = 1; if (unlikely(ctx->submitter_task != current)) { /* maybe this is before any submissions */ @@ -1197,6 +1198,7 @@ again: node = io_llist_cmpxchg(&ctx->work_llist, &fake, NULL); if (node != &fake) { + loops++; current_final = &fake; node = io_llist_xchg(&ctx->work_llist, &fake); goto again; @@ -1206,6 +1208,7 @@ again: io_submit_flush_completions(ctx); mutex_unlock(&ctx->uring_lock); } + trace_io_uring_local_work_run(ctx, ret, loops); return ret; } -- 2.7.4