-
Notifications
You must be signed in to change notification settings - Fork 68
Run object store in a separate Tokio runtime #432
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
Conversation
|
After this change, the But it's unclear to me whether there are performance issues after this change. The benchmark execution time has a high variance, so more analysis may be needed to ensure there is no performance degradation in other parts of the system after this change. |
| } | ||
|
|
||
| pub fn next(&mut self) -> Option<WorkerId> { | ||
| self.slots.shuffle(&mut rng()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried randomizing task assignment and it didn't seem to help. I guess future work is needed for more sophisticated task assignment logic.
Spark Test ReportCommit Information
Test Summary
Test DetailsError CountsPassed Tests Diff(empty) |
|
I decided to put the feature behind configuration so that we can enable the separate Tokio runtime explicitly and continue experimenting with it. This PR now also has the following changes.
|
shehabgamin
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well done!!
This PR adds a wrapper to
ObjectStoreso that the async IO tasks are run in a separate Tokio runtime. This ensures that IO tasks can be scheduled when there are compute-intensive tasks.References
error decoding response bodyafter upgrade to object store 0.10 apache/arrow-rs-object-store#272IoObjectStorethat uses main runtime for network requests datafusion-contrib/datafusion-dft#248