-
-
Notifications
You must be signed in to change notification settings - Fork 148
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
Autoscaling removes workers in other worker groups besides default #914
Comments
It looks like there is something funny going on with the logic. When autoscaling we first get a dask-kubernetes/dask_kubernetes/operator/controller/controller.py Lines 915 to 917 in f21605e
Then we ask the scheduler which workers to retire. dask-kubernetes/dask_kubernetes/operator/controller/controller.py Lines 933 to 936 in f21605e
Then we scale the default worker group down to that number of workers.
My guess here is that the scheduler wants to remove the highmem workers, but we aren't correctly filtering those out when calculating where to scale to. Can I check that you're definitely seeing those workers being removed? Or is it just saying it wants to remove them but never actually removed them? For example if you have two highmem group workers and five default group workers. In a situation where the scheduler wants to remove the two highmem ones I think it would probably log that it wants to remove them, but then actually remove two of the default group workers. Which is a bug we definitely need to sort out. |
@jacobtomlinson I can definitely confirm that those workers are gone, the reason I started digging into this in the first place was that my
The "Scheduler was unaware of this worker" thing I have seen before and posted about in dask/distributed#6961, @gjoseph92's theory (as I understand it) was that this was a race condition around closing and just represents a noisy unnecessary log, the time does line up with when the scheduler was considering closing it so that does seem probably true here as well...but if there's any kind of more verbose logging/tracing that would shed light on the specific decision path, let me know and I will re-run the experiment |
Yeah I think that makes sense. The scheduler tells the worker to close. We need to update the retire workers to exclude ones that aren't in the default group. |
For now I am working around this with
which does seem to prevent the |
Describe the issue:
Per https://kubernetes.dask.org/en/latest/operator_resources.html#daskautoscaler, only the default worker pool should autoscale. But I'm observing other worker groups also getting scaled down at the end of a computation.
Minimal Complete Verifiable Example:
Obviously don't see the exact same behavior every time but I consistently see one or two of the
highmem
workers get retired by the scheduler:@jacobtomlinson happy to help debug further but would need some pointers into where the decision of which workers to close is being made
Environment:
The text was updated successfully, but these errors were encountered: