# Erlang io-uring support

**URL:** <https://erlangforums.com/t/erlang-io-uring-support/765>\
**Category:** Chat / Discussions\
**Tags:** split-thread, io\_uring\
**Created:** [November 22, 2021, 3:24pm UTC](https://erlangforums.com/t/erlang-io-uring-support/765 "2021-11-22T15:24:17Z")\
**Posts on this page:** 5\
**Page:** 3

<div class="post-metadata">

**Author:** ![zabrane](https://erlangforums.com/letter_avatar_proxy/v4/letter/z/7ba0ec/32.png) [@zabrane](https://erlangforums.com/u/zabrane)\
**Post date:** [November 29, 2024, 9:58am UTC](https://erlangforums.com/t/erlang-io-uring-support/765/41 "2024-11-29T09:58:09Z")

</div>

[Jens](https://www.linkedin.com/in/jens-axboe-60a11b1/) just picked a patchset to enable hybrid polling in `io_uring`.

We see big improvements on CPU utilization, specially on the read path (up to `70%`).

Continuous improvements in the I/O Path in terms of core cost per I/O are critical for the adoption of new PCIe generations. And this is not only for storage devices; `io_uring` is already used in networking, and I believe we will see it being used for user-space driven accelerators.

[io\_uring: releasing CPU resources when polling](https://lore.kernel.org/io-uring/20241101091957.564220-1-xue01.he@samsung.com/T/#m0a7a99aadd68b765c34f9092c4f6ea2e305c231b)

source LinkedIn post.

---

<div class="post-metadata">

**Author:** ![LaF0rge](https://erlangforums.com/user_avatar/erlangforums.com/laf0rge/32/2612_2.png) [@LaF0rge](https://erlangforums.com/u/LaF0rge)\
**Post date:** [December 31, 2024, 6:32pm UTC](https://erlangforums.com/t/erlang-io-uring-support/765/42 "2024-12-31T18:32:23Z")

</div>

@KayEss I don’t share your negative prognosis on the amount of R&D time required. My team has successfully converted large C-language codebases to io\_uring which were much further away from io\_uring than beam is.

As I stated earlier in the test, the main issue I see is whether or not there is an accessible/published test suite to validate the developments. If anyone could point me what kind of tests suites for the socket I/O part of beam exist, I’d have a look on the coverage they have to determine whether that’s sufficient coverage to confidently say a “pass” of that of a hypothetical io\_uring port didn’t break anything.

---

<div class="post-metadata">

**Author:** ![starbelly](https://erlangforums.com/user_avatar/erlangforums.com/starbelly/32/209_2.png) [@starbelly](https://erlangforums.com/u/starbelly)\
**Post date:** [January 2, 2025, 11:44pm UTC](https://erlangforums.com/t/erlang-io-uring-support/765/43 "2025-01-02T23:44:16Z")

</div>

> [@LaF0rge](#):
>
> As I stated earlier in the test, the main issue I see is whether or not there is an accessible/published test suite to validate the developments.

Do you mean something more other than what is in the test suite(s) for [socket](https://github.com/erlang/otp/blob/master/lib/kernel/test/socket_SUITE.erl) or [inet](https://github.com/erlang/otp/blob/master/lib/kernel/test/inet_SUITE.erl) ? (note I only linked to two of them).

Also, I recently watched you [talk](https://media.ccc.de/v/38c3-iouring-ebpf-xdp-and-afxdp#t=0) on io\_uring, eBPF, XDP and AF\_XDP and found it extremely refreshing!

Edit :

I realize in retrospect you’re surely looking for a performance validation suite. I suppose that’s still an assumption, if you could clarify that would help us move this thread forward I believe 😄

---

<div class="post-metadata">

**Author:** ![LaF0rge](https://erlangforums.com/user_avatar/erlangforums.com/laf0rge/32/2612_2.png) [@LaF0rge](https://erlangforums.com/u/LaF0rge)\
**Post date:** [March 28, 2026, 5:51pm UTC](https://erlangforums.com/t/erlang-io-uring-support/765/44 "2026-03-28T17:51:57Z")

</div>

> [@starbelly](#):
>
> I realize in retrospect you’re surely looking for a performance validation suite. I suppose that’s still an assumption, if you could clarify that would help us move this thread forward I believe 😄

Sorry for the late follow-up. Indeed, I was looking for both functional and performance test suites for the beam I/O codebase. If there was something that could be easily run, I might be tempted to give it a shot and see how far I’d get in terms of a time-boxed prototype to hopefully generate some promising figures.

---

<div class="post-metadata">

**Author:** ![garazdawi](https://erlangforums.com/user_avatar/erlangforums.com/garazdawi/32/175_2.png) [@garazdawi](https://erlangforums.com/u/garazdawi)\
**Post date:** [March 31, 2026, 11:00am UTC](https://erlangforums.com/t/erlang-io-uring-support/765/45 "2026-03-31T11:00:13Z")

</div>

This CT spec has some of the benchmarks that we track in regards to both file and socket performance: [otp/lib/kernel/test/kernel\_bench.spec at master · erlang/otp · GitHub](https://github.com/erlang/otp/blob/master/lib/kernel/test/kernel_bench.spec).

There is a description on how to run them here: [otp/HOWTO/BENCHMARKS.md at master · erlang/otp · GitHub](https://github.com/erlang/otp/blob/master/HOWTO/BENCHMARKS.md)

I doubt that anyone outside our team has ever run them, so there are most likely errors in the description on how to do things. It is however something to start with.

[Previous page](https://erlangforums.com/t/erlang-io-uring-support/765.md?page=2)
