Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Threading-model for the critical path #277

Open
Max-Meldrum opened this issue Oct 22, 2021 · 2 comments
Open

Threading-model for the critical path #277

Max-Meldrum opened this issue Oct 22, 2021 · 2 comments
Labels
domain: performance Anything related to Arcon performance epic

Comments

@Max-Meldrum
Copy link
Member

Related to #214

Not a priority as of now, but would be interesting to look into a TpC (Thread-per-Core) model with application-level cooperative scheduling for the data path of the runtime. We would of course have to evaluate it to our current approach and look at the tradeoffs and what it would mean to our design in general.

Interesting Rust crate to follow: https://github.com/DataDog/glommio

References:
https://www.datadoghq.com/blog/engineering/introducing-glommio/
https://vectorized.io/blog/tpc-buffers/
https://helda.helsinki.fi//bitstream/handle/10138/313642/tpc_ancs19.pdf?sequence=1
https://www.scylladb.com/product/technology/shard-per-core-architecture/
http:https://vldb.org/pvldb/vol14/p3110-katsifodimos.pdf

@Max-Meldrum Max-Meldrum added the domain: performance Anything related to Arcon performance label Oct 22, 2021
@houqp
Copy link

houqp commented Oct 24, 2021

How does glommio compare to tokio's multi-threaded work stealing runtime when we set the number of threads to number of cores?

@Max-Meldrum
Copy link
Member Author

How does glommio compare to tokio's multi-threaded work stealing runtime when we set the number of threads to number of cores?

Arcon is mainly a streaming system and the tasks/operators that it runs are supposed to run forever basically. From my understanding, tokio's work-stealing runtime is for more general-purpose use-cases where one spawns a lot of short/long tasks. Whereas Arcon mainly has long-running tasks and these would benefit from being pinned to cores for cpu and memory locality. Also, Gloomio's application-level scheduling/priority is quite suitable for data processing systems as they may have to run important tasks next to the main task.

So, Gloomio is suitable for data processing systems where you shard the data and have separate pinned cores processing it. While the work-stealing approach would be better if the data distribution is skewed and some cores are not being used.

@Max-Meldrum Max-Meldrum added this to Long-term in Arcon Roadmap Dec 18, 2021
@Max-Meldrum Max-Meldrum moved this from Long-term to Near-term in Arcon Roadmap Feb 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
domain: performance Anything related to Arcon performance epic
Projects
Arcon Roadmap
Near-term
Development

No branches or pull requests

2 participants