Last active
April 9, 2024 12:54
-
-
Save koonwen/b69867422bc49bd10cf61932e41da362 to your computer and use it in GitHub Desktop.
Bpftrace program for strace-like monitoring of io-uring
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
BEGIN { | |
time("[%H:%M:%S]"); | |
printf("Tracing IO_uring ...\n"); | |
} | |
tracepoint:syscalls:sys_exit_io_uring_register { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: %d, %ld\n", comm, probe, args->__syscall_nr, args->ret); | |
} | |
tracepoint:syscalls:sys_exit_io_uring_enter { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: %d, %ld\n", comm, probe, args->__syscall_nr, args->ret); | |
} | |
tracepoint:syscalls:sys_enter_io_uring_setup { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: %d, %lu, 0x%llx\n", comm, probe, args->__syscall_nr, args->entries, args->params); | |
} | |
tracepoint:syscalls:sys_enter_io_uring_register { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: %d, %u, %u, 0x%llx, %u\n", comm, probe, args->__syscall_nr, args->fd, args->opcode, args->arg, args->nr_args); | |
} | |
tracepoint:syscalls:sys_enter_io_uring_enter { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: %d, %u, %lu, %lu, %lu, 0x%llx, %ld\n", comm, probe, args->__syscall_nr, args->fd, args->to_submit, args->min_complete, args->flags, args->argp, args->argsz); | |
} | |
tracepoint:io_uring:io_uring_task_work_run { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, %u, %u\n", comm, probe, args->tctx, args->count, args->loops); | |
} | |
tracepoint:io_uring:io_uring_task_add { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, 0x%llx, %llu, %u, %d, 0x%llx\n", comm, probe, args->ctx, args->req, args->user_data, args->opcode, args->mask, args->op_str); | |
} | |
tracepoint:io_uring:io_uring_submit_sqe { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, 0x%llx, %llu, %u, %lu, %d, %d, 0x%llx\n", comm, probe, args->ctx, args->req, args->user_data, args->opcode, args->flags, args->force_nonblock, args->sq_thread, args->op_str); | |
} | |
tracepoint:io_uring:io_uring_short_write { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, %lu, %lu, %lu\n", comm, probe, args->ctx, args->fpos, args->wanted, args->got); | |
} | |
tracepoint:io_uring:io_uring_req_failed { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, 0x%llx, %llu, %u, %u, %u, %lu, %lu, %lu, %lu, %u, %u, %lu, %lu, %lu, %d, 0x%llx\n", comm, probe, args->ctx, args->req, args->user_data, args->opcode, args->flags, args->ioprio, args->off, args->addr, args->len, args->op_flags, args->buf_index, args->personality, args->file_index, args->pad1, args->addr3, args->error, args->op_str); | |
} | |
tracepoint:io_uring:io_uring_register { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, 0x%llx, 0x%llx, 0x%llx, %ld\n", comm, probe, args->ctx, args->opcode, args->nr_files, args->nr_bufs, args->ret); | |
} | |
tracepoint:io_uring:io_uring_queue_async_work { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, 0x%llx, %lu, %u, %u, 0x%llx, %d, 0x%llx\n", comm, probe, args->ctx, args->req, args->user_data, args->opcode, args->flags, args->work, args->rw, args->op_str); | |
} | |
tracepoint:io_uring:io_uring_poll_arm { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, 0x%llx, %llu, %u, %d, %d, 0x%llx\n", comm, probe, args->ctx, args->req, args->user_data, args->opcode, args->mask, args->events, args->op_str); | |
} | |
tracepoint:io_uring:io_uring_local_work_run { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, %d, %u\n", comm, probe, args->ctx, args->count, args->loops); | |
} | |
tracepoint:io_uring:io_uring_link { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, 0x%llx, 0x%llx\n", comm, probe, args->ctx, args->req, args->target_req); | |
} | |
tracepoint:io_uring:io_uring_file_get { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, 0x%llx, %lu, %d\n", comm, probe, args->ctx, args->req, args->user_data, args->fd); | |
} | |
tracepoint:io_uring:io_uring_fail_link { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, 0x%llx, %llu, %u, 0x%llx, 0x%llx\n", comm, probe, args->ctx, args->req, args->user_data, args->opcode, args->link, args->op_str); | |
} | |
tracepoint:io_uring:io_uring_defer { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, 0x%llx, %llu, %u, 0x%llx\n", comm, probe, args->ctx, args->req, args->data, args->opcode, args->op_str); | |
} | |
tracepoint:io_uring:io_uring_create { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: %d, 0x%llx, %lu, %lu, %lu\n", comm, probe, args->fd, args->ctx, args->sq_entries, args->cq_entries, args->flags); | |
} | |
tracepoint:io_uring:io_uring_cqring_wait { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, %d\n", comm, probe, args->ctx, args->min_events); | |
} | |
tracepoint:io_uring:io_uring_cqe_overflow { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, %llu, %ld, %lu, 0x%llx\n", comm, probe, args->ctx, args->user_data, args->res, args->cflags, args->ocqe); | |
} | |
tracepoint:io_uring:io_uring_complete { | |
@reads[probe] = count(); | |
time("[%H:%M:%S]"); | |
printf(" (%s) %s: 0x%llx, 0x%llx, %lu, %d, 0x%llx, %lu, %lu\n", comm, probe, args->ctx, args->req, args->user_data, args->res, args->cflags, args->extra1, args->extra2); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment