• Stars
    star
    347
  • Rank 122,141 (Top 3 %)
  • Language
    C
  • License
    MIT License
  • Created almost 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

io_uring echo server

io_uring bare minimum echo server

  • uses an event loop created with io_uring
  • uses liburing https://github.com/axboe/liburing
  • Linux 5.7 or higher with IORING_FEAT_FAST_POLL and IORING_OP_PROVIDE_BUFFERS required

Install and run

First install the latest liburing:

git clone https://github.com/axboe/liburing

./configure

make

make install

Then install io_uring-echo-server:

git clone https://github.com/frevib/io_uring-echo-server.git

make io_uring_echo_server

./io_uring_echo_server [port_number]

compare with epoll echo server

https://github.com/frevib/epoll-echo-server

Benchmarks (without buffer selection)

https://github.com/frevib/io_uring-echo-server/blob/io-uring-feat-fast-poll/benchmarks/benchmarks.md

Versions

v1.7

v1.6

  • Use IORING_OP_PROVIDE_BUFFERS

v1.5

  • Use IORING_FEAT_FAST_POLL, which increases performance a lot
  • Remove all polling, this is now handled by IORING_FEAT_FAST_POLL

v1.4

Fix bug that massively overstated the performance.

v1.3

Use pre-allocated sqe->user_data instead of dynamically allocating memory.

v1.1

Fix memory leak.

v1.0

Working release.