gatio 0.0.0

RESERVED-CRATE: Main runtime crate for Gatio.
Documentation
  • Coverage
  • 100%
    1 out of 1 items documented0 out of 0 items with examples
  • Size
  • Source code size: 15.48 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 994.56 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 26s Average build duration of successful builds.
  • all releases: 26s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • jsparj

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.