All Projects → DataDog → Glommio

DataDog / Glommio

Licence: other
Glommio is a thread-per-core framework that aims to make the task of writing highly parallel asynchronous application in a thread-per-core architecture easier for rustaceans

Programming Languages

rust
11053 projects

Labels

glommio

CircleCI

Join our Zulip community!

If you are interested in Glommio consider joining our Zulip community. Come tell us about exciting applications you are building, ask for help, or really just chat with friends

What is Glommio?

Glommio (pronounced glo-mee-jow or |glomjəʊ|) is a Cooperative Thread-per-Core crate for Rust & Linux based on io_uring. Like other rust asynchronous crates it allows one to write asynchronous code that takes advantage of rust async/await, but unlike its counterparts it doesn't use helper threads anywhere.

Using Glommio is not hard if you are familiar with rust async. All you have to do is:

    use glommio::prelude::*;
    LocalExecutorBuilder::new().spawn(|| async move {
        /// your code here
    }).unwrap();

Please note Glommio requires at least 512 KiB of locked memory for io_uring to work. You can increase the memlock resource limit (rlimit) as follows:

$ vi /etc/security/limits.conf
*    hard    memlock        512
*    soft    memlock        512

To make the new limits effective, you need to login to the machine again. You can verify that the limits are updated by running the following:

$ ulimit -l
512

For more details check out our docs page and an introductory article

Status

Glommio is still considered an alpha release. The main reasons are:

  • The existing API is still evolving
  • There are still some uses of unsafe that can be avoided
  • There are features that are critical for a good thread per core system that are not implemented yet. The top one being:
    • per-shard memory allocator.

Want to help bring us to production status sooner? PRs are welcome!

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].