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

Improve performance polling / task sharing mechanism in Ballista #700

Closed
Dandandan opened this issue Jul 9, 2021 · 5 comments · Fixed by #1560
Closed

Improve performance polling / task sharing mechanism in Ballista #700

Dandandan opened this issue Jul 9, 2021 · 5 comments · Fixed by #1560
Assignees
Labels
enhancement New feature or request

Comments

@Dandandan
Copy link
Contributor

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
In #698 some improvements where added to avoid sleeping when there are enough tasks around.

In order to support quicker query responses (e.g. <100ms) and avoid delays in between stages we need to remove calls like sleep(Duration::from_millis(100)) from executor/scheduler and move away from interval-based polling.

This also will reduce CPU/network waste, as there are less calls being done (currently I am seeing around 1-2% of CPU being used when idling, not much, but when going to higher polling frequencies this increases. Setting it to 1ms gives it a very high CPU usage.

Describe the solution you'd like
Wait on tasks to be available in the scheduler and only send a response when having tasks for the worker.

Remove calls to sleep.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

@Dandandan Dandandan added the enhancement New feature or request label Jul 9, 2021
@Dandandan
Copy link
Contributor Author

I tried to to a part of this by moving the polling loop to the scheduler, but an important prerequisite to this is moving the number of free task slots information to the scheduler.

Currently this information is kept in each executor and sent with the info during a polling call (can_accept_task).

@mingmwang
Copy link
Contributor

Is there any PR related to this ? If not I think I can work on this.

@Dandandan
Copy link
Contributor Author

AFAIK No @mingmwang . Feel free to work on this - that would be great.

@liukun4515
Copy link
Contributor

@mingmwang can update the status?

@yahoNanJing
Copy link
Contributor

Hi @Dandandan, recently we have implemented an initial version of push-based task scheduling. Here's the design document. Could you help have a review?
https://docs.google.com/document/d/1Z1GO2A3bo7M_N26w_5t-9h3AhIPC2Huoh0j8jgwFETk/edit?usp=sharing

PR is ongoing.

@houqp houqp linked a pull request Jan 19, 2022 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants