You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In allocate action, nodes with terminating pods would also be permitted to go through predicateFn as long as futureIdle(idle + releasing) is larger than pod request:
So nodes with terminating pods could be candidates in score period even if they would not provide enough resources for pending pod to allocate immediately. Therefore in some scenarios nodes with terminating pods would score higher than nodes with enough idle resources.
What you expected to happen:
Nodes with terminating pods would got less score in score period than nodes with enough idle resources.
How to reproduce it (as minimally and precisely as possible):
Compose a scenario that a pod kept interminating on a node, whose idle resource not meet memory request of pending pod, but cpu is enough. And its idle + releasing resources just fit the pending pod.(idle.mem+releasing.mem=request.mem, idle.cpu=request.cpu)
Then pending pod would be pipelined to this node even if the other nodes owned enough idle sources, Because binpack plugin would score this node higher than others.
Anything else we need to know?:
Environment:
Volcano Version:
Kubernetes version (use kubectl version):
Cloud provider or hardware configuration:
OS (e.g. from /etc/os-release):
Kernel (e.g. uname -a):
Install tools:
Others:
The text was updated successfully, but these errors were encountered:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
Except that the binpack plugin has this problem, I understand that other algorithm plugins may encounter similar problems, such as task-topology, nodeorder, etc.
I was wondering if this generic problem could be solved by:
When allocate scores nodes, it divides nodes into two groups. One group is machines whose idle resources meet task resource requests, and the second group is futrue idle machines that meet task resource demands.
First, score the first group of machines, and if a suitable machine can be found, schedule the task to a suitable node; if the first group does not have a machine that meets the resource request, then score the second group of machines, and then select a suitable node for scheduling.
In this way, the pod can be dispatched to the machine that meets the resource requirements in the current session first, so that the pod will not be pending for a long time. If all the machines in the current session do not meet the requirements, it can also be scheduled to wait in the machine that meets the futrue idle.
What happened:
In
allocate
action, nodes withterminating
pods would also be permitted to go throughpredicateFn
as long asfutureIdle
(idle
+releasing
) is larger than pod request:volcano/pkg/scheduler/actions/allocate/allocate.go
Lines 99 to 106 in bed4a04
So nodes with
terminating
pods could be candidates inscore
period even if they would not provide enough resources for pending pod to allocate immediately. Therefore in some scenarios nodes withterminating
pods would score higher than nodes with enough idle resources.What you expected to happen:
Nodes with
terminating
pods would got less score inscore
period than nodes with enoughidle
resources.How to reproduce it (as minimally and precisely as possible):
binpack
plugin and give it a high weight;terminating
on a node, whoseidle
resource not meet memory request ofpending
pod, but cpu is enough. And itsidle
+releasing
resources just fit thepending
pod.(idle.mem+releasing.mem=request.mem, idle.cpu=request.cpu)binpack
plugin, it would score0
for memory:volcano/pkg/scheduler/plugins/binpack/binpack.go
Lines 248 to 251 in bed4a04
8/9
:volcano/pkg/scheduler/plugins/binpack/binpack.go
Lines 229 to 239 in bed4a04
pending
pod would bepipelined
to this node even if the other nodes owned enough idle sources, Becausebinpack
plugin would score this node higher than others.Anything else we need to know?:
Environment:
kubectl version
):uname -a
):The text was updated successfully, but these errors were encountered: