Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add io_uring tracepoints #309

Open
yanivagman opened this issue Nov 15, 2020 · 3 comments · May be fixed by #3603
Open

Add io_uring tracepoints #309

yanivagman opened this issue Nov 15, 2020 · 3 comments · May be fixed by #3603

Comments

@yanivagman
Copy link
Collaborator

io_uring is a relatively new and interesting interface between the user space and the kernel.
It is built around a ring buffer in memory shared between user space and the kernel, that allows the submission of operations (and collecting the results) without the need to call into the kernel in many cases.

With io_uring, a program doesn't have to call system calls to performs operations like open, close, read, write and more (for more info: https://lwn.net/Articles/810414/). For this reason, it is also interesting from a security perspective.

We should add support in tracee for the relevant io_uring tracepoints, as defined in:
https://github.com/torvalds/linux/blob/master/include/trace/events/io_uring.h

@yanivagman
Copy link
Collaborator Author

@AsafEitani @idanr1986 @roikol @AlonZivony any plans to add these events? I think they are a blind spot we might have in newer kernels

@rafaeldtinoco
Copy link
Contributor

I'm afraid that is also true for aio_writes/aio_reads, no ? One could use async I/O instead of regular I/O as a blind spot I believe.

io_submit() -> aio_read/aio_write() -> call_read/write_iter() -> file_operations "write_iter" implementation (all kinds of backing drivers such as block, char, net, vhost, ext4, fat, fuse, nfs, overlays, ...).

@itaysk
Copy link
Collaborator

itaysk commented May 29, 2023

libuv is starting to use io_uring now, which means it might get wide adoption soon libuv/libuv#3952

@yanivagman yanivagman added this to the v0.22.0 milestone May 8, 2024
@yanivagman yanivagman removed this from the v0.22.0 milestone May 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants