Run object store in a separate Tokio runtime#432
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.
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.
|
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