Hippolyte Barraud
Hippolyte Barraud
Sometimes order doesn't matter, and an application can consume the IO results in random order. This allows the stream to drive more IO concurrency than the ordered variant. In a...
We no longer link the rings at all. Instead, we register an eventfd on the rings (that is written to by the kernel each time a CQE is posted) and...
At the start of a quantum, the Glommio scheduler selects the task queue with the lowest vruntime and runs it until one of two things happens: * The queue is...
So far, we have been pretty lax when submitting stuff in the rings. We push a request in there, flush, and if it fails, we keep going. This works for...
The idea behind `rush_dispatch` is great. Sometimes, it is advantageous to rush to the rings and performs some io_uring transactions immediately. Our implementation suffers from one deadly bug, however. What...
### What does this PR do? Reentrant tasks are problematic in Glommio today. Consider the following code snippet: ```rust glommio::spawn_local_into(async move { loop { glommio::executor().yield_now().await; } }, some_tq).unwrap(); // do...
This PR changes how the scheduler behaves within a task queue to favor throughput and locality. This is a trick from the Go scheduler to get most of the benefits...
We already use ` io_uring_register()` in conjunction with `IORING_REGISTER_BUFFERS` to register buffers so we can perform IO without paying the buffer-related setup cost each time. We could do something similar...
### Use case(s) - what problem will this feature solve? On their way to the wire, messages are encoded through user-provided `encoding.Codec` modules. These modules implement the following interface: ```go...