diff --git a/pkg/scheduler/algorithm/priorities/util/non_zero.go b/pkg/scheduler/algorithm/priorities/util/non_zero.go index b671945f338..39f01519201 100644 --- a/pkg/scheduler/algorithm/priorities/util/non_zero.go +++ b/pkg/scheduler/algorithm/priorities/util/non_zero.go @@ -26,15 +26,16 @@ import "k8s.io/api/core/v1" // consuming no resources whatsoever. We chose these values to be similar to the // resources that we give to cluster addon pods (#10653). But they are pretty arbitrary. // As described in #11713, we use request instead of limit to deal with resource requirements. - -// DefaultMilliCPURequest defines default milli cpu request number. -const DefaultMilliCPURequest int64 = 100 // 0.1 core -// DefaultMemoryRequest defines default memory request size. -const DefaultMemoryRequest int64 = 200 * 1024 * 1024 // 200 MB +const ( + // DefaultMilliCPURequest defines default milli cpu request number. + DefaultMilliCPURequest int64 = 100 // 0.1 core + // DefaultMemoryRequest defines default memory request size. + DefaultMemoryRequest int64 = 200 * 1024 * 1024 // 200 MB +) // GetNonzeroRequests returns the default resource request if none is found or // what is provided on the request. -func GetNonzeroRequests(requests *v1.ResourceList) (int64, int64) { +func GetNonzeroRequests(requests *v1.ResourceList) (milliCPU int64, memory int64) { var outMilliCPU, outMemory int64 // Override if un-set, but not if explicitly set to zero if _, found := (*requests)[v1.ResourceCPU]; !found { diff --git a/pkg/scheduler/nodeinfo/node_info.go b/pkg/scheduler/nodeinfo/node_info.go index 6a6703a4fa6..43883b99833 100644 --- a/pkg/scheduler/nodeinfo/node_info.go +++ b/pkg/scheduler/nodeinfo/node_info.go @@ -52,11 +52,14 @@ type NodeInfo struct { podsWithAffinity []*v1.Pod usedPorts HostPortInfo - // Total requested resource of all pods on this node. - // It includes assumed pods which scheduler sends binding to apiserver but - // didn't get it as scheduled yet. + // Total requested resources of all pods on this node. This includes assumed + // pods, which scheduler has sent for binding, but may not be scheduled yet. requestedResource *Resource - nonzeroRequest *Resource + // Total requested resources of all pods on this node with a minimum value + // applied to each container's CPU and memory requests. This does not reflect + // the actual resource requests for this node, but is used to avoid scheduling + // many zero-request pods onto one node. + nonzeroRequest *Resource // We store allocatedResources (which is Node.Status.Allocatable.*) explicitly // as int64, to avoid conversions and accessing map. allocatableResource *Resource