Skip to content
This repository has been archived by the owner on Jul 12, 2022. It is now read-only.

Merge projects #1

Closed
hodgesds opened this issue Aug 24, 2020 · 4 comments
Closed

Merge projects #1

hodgesds opened this issue Aug 24, 2020 · 4 comments

Comments

@hodgesds
Copy link

I'm also have a side project for io_uring and have run into many of the same issues. I was wondering if you wanted to create a Github organization and work together on it. Let me know what you think, really cool project!

@dshulyak
Copy link
Owner

hey @hodgesds . my original goal was to make a proposal for integration with golang runtime.
this library was a playground/showcase in order to understand if it is possible to use uring efficiently with goroutines and in general to learn more about uring io specifics.

beside several surprises (e.g serialized writes to same fd, slower buffered reads) i am satisfied with an experiment, and want to move forward with POC for runtime integration. maybe proposal won't be even accepted, and it definitely won't be generic enough to cover every use-case. so there is still a place for a good library, but at this time i don't plan any big work on external library (maybe some perf improvements, if i will find them).

@hodgesds
Copy link
Author

That makes sense, I sort of ran into similar feelings as well. Without integration into the runtime I think it will be hard to be as efficient as other uring implementations. I think the right path forward is mapping a ring per runtime "M". The question becomes how to you interact/configure the ring with the runtime without exposing too much of the internals. I'm guessing the Go team aren't really looking to expose everything needed to configure the rings appropriately or even what that API would look like (environment vars, runtime functions, etc).

@dshulyak
Copy link
Owner

dshulyak commented Aug 24, 2020

What kind of things you would like to configure?
The thing is that IOPOLL/SQPOLL are out the picture if this will be integrated per cpu or per golang processor.
SQ size can be small, because it will be reused after each enter.
CQ size can be large by default, and doubled if necessary with some dance.
The only other flag that matters if for sharing worker pool, but it will be on by default.

@hodgesds
Copy link
Author

hodgesds commented Sep 4, 2020

I was mostly concerned about queue sizes because if the mlock value is too small then setting up the ring might fail, which I guess it could always fall back? When I get some more time I think I might try to make a netpoller and see if I can make that work.

@dshulyak dshulyak closed this as completed Sep 4, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants