gatio

Crates.iogatio
lib.rsgatio
version0.0.0
created_at2025-10-22 14:46:39.762595+00
updated_at2025-10-22 14:46:39.762595+00
descriptionRESERVED-CRATE: Main runtime crate for Gatio.
homepage
repository
max_upload_size
id1895782
size15,952
Joona Parjanen (jsparj)

documentation

README

Gatio (Grouped Async Task I/O)

No releases yet, this is placeholder crate. (in active development)

Async task runtime for Rust that is optimized for io_uring(7).

Linux only, now and in the future.

Core idea

Gatio runtime is build upon the core idea that program is split upon seperate Thread Pool Contexts (TPC) based on the number of NUMA-nodes in that computer.

(For most computers this is will account to just one TPC)

Each TPC owns it's own heap memory and CPU-core range.

Work inside TPCs happens inside GatioDrivers. One CPU-core will be mapped to one GatioDriver which will run on a single OS-thread. With "driver-per-core" manner.

A driver can either be responsible for only I/O processing, task execution or both (with hyper-threading). The drivers used may vary between TPC's and single TPC can support multiple different GatioDriver types.

Asyncronous code execution will be given to GatioDriver that has functionality to schedule tasks. This can be done either directly to the driver or by using the TPC to select the best driver for the task depending on the current workload on the drivers or other parameters. (priority, cpu-cache optimized, etc.)

Serverside Networking (or other kinds of static I/O interruptions.)

(Relatively simple, but very different from the standard way of doing serverside networking, please view examples.)

Networking is internally handled by creating multishot submission queue entries (SQEs) within io_uring(7). That are then processed by gatio-net according on the supported transport protocols per port.

Gatio ensures that every driver handling a given port uses an identical configuration at startup. This enforcement still allows different transport protocols, such as UDP and TCP, to be separated onto seperate dedicated drivers.

Commit count: 0

cargo fmt