56 questions
2 votes
0 answers
137 views
How can I combine recv_multishot with a buffer ring in io_uring?
I am trying to set up a multishot recv() call on a UDP socket. However, while the single-shot version works, the multi-shot version always fails. I have a hunch it's with how I'm setting up the buffer ...
0 votes
0 answers
249 views
Asynchronous IO - versus memory mapped (file) IO
I am enthusiastic, in principle, about io-uring asynchronous IO - which seems an extremely good fit for network communication. I see benefit, with an asynchronous idiom, where eliminating blocking ...
-1 votes
1 answer
71 views
How to handle a fragmented UDS/UDP message? [closed]
I'm building a high velocity distributed database in Rust, using io_uring, eBPF and the NVMe API, which means I cannot use 99% of the existing libraries/frameworks out there, but instead I need to ...
1 vote
0 answers
54 views
Object lifetime - linux io_uring (liburing) asynchronous programming
I've a question about the Linux io_uring feature ( liburing ). I understand there's a request-queue and a completion queue... and that my code can submit to the request queue, and will be informed, ...
0 votes
1 answer
231 views
IO_Uring linking open -> write -> close
We are trying to write a file on disk using io_uring. The point is the second operation (write) and third operation (close) need the handler to the file when it's opened (first operation). What we did ...
1 vote
0 answers
108 views
io_uring linked timeout with poll_multishot return -EINVAL
I use this function to submit a poll_multishot sqe with a linked timeout to cancel automatically int upollm(conn_t *conn, uint bit_mask, uint64_t sec, uint64_t nsec) { struct io_uring_sqe *sqe = ...
0 votes
0 answers
110 views
Can we use io_uring_register_buffers() with io_uring_prep_recv_multishot()?
I'm trying to see if u_ring can be used for networking. So far, nothing works. Here is what I'm trying... I have a simple TCP/IP server that should receive some data from a client. That server is ...
1 vote
0 answers
27 views
How to get buffer ID for the CQE on a kernel older than 6.12?
I'm trying to use liburing for networking. To make the long story short, I use io_uring_register_buffers(), then I submit a multi-shot receive, etc.. Now, when I receive a CQE there is no way to tell ...
3 votes
1 answer
188 views
How to identify if a thread is related to io_uring in Ubuntu?
I'm running Ubuntu and executed the command top -H -p 486944 to show my application threads, which shows a thread named iou-sqp-486944. This thread is not one that I created, and it doesn't appear in ...
3 votes
0 answers
196 views
Read a huge file (~ 200GB) from a particular offset using liburing
Context: I need to read a huge file (~200 GB) from an offset, which is not a multiple of 512 (or block size), in chunks into a buffer as fast and as efficient as possible. A networking application ...
0 votes
1 answer
282 views
Handling io_uring submissions in kernel
I need a fast async channel to transfer data from my kernel module to a userspace app. I tried IO_URING. As far as I am concerned, the way its submissions are handled in the kernel is a black box, ...
0 votes
1 answer
136 views
io_uring recvmsg_multishot : how is msghdr not overwritten?
My understanding is that using this API, the kernel will continuously fill the CQ with messages until it can't (out of buffers, socket closed, etc). But each completion fills in the single msghdr ...
2 votes
0 answers
408 views
Why does io_uring read a file so slowly in polling mode?
Problem Summary I am working on a project that requires using io_uring with polling mode, but now I have encountered two problems: I need to run it several times before I can output the content; ...
3 votes
1 answer
220 views
Does Aeron support io_uring?
I'm using the Aeron open source for some POCs, and using C version of media driver, does it support the io_uring? Also we are using java version of Aeron cluster and archive, what about them?
0 votes
1 answer
112 views
Error Building Proxygen (Networking Library) on Ubuntu 22.04.4, WSL
I'm following the instructions on Proxygen's github repository to build and install it. They say to just run ./build.sh in the proxygen directory. Once proxygen builds, I get errors that all say ...