in pkg/coscheduling/core/core.go [307:340]
func getNodeResource(info *framework.NodeInfo, desiredPodGroupName string) *framework.Resource {
nodeClone := info.Clone()
for _, podInfo := range info.Pods {
if podInfo == nil || podInfo.Pod == nil {
continue
}
if util.GetPodGroupFullName(podInfo.Pod) != desiredPodGroupName {
continue
}
nodeClone.RemovePod(podInfo.Pod)
}
leftResource := framework.Resource{
ScalarResources: make(map[corev1.ResourceName]int64),
}
allocatable := nodeClone.Allocatable
requested := nodeClone.Requested
leftResource.AllowedPodNumber = allocatable.AllowedPodNumber - len(nodeClone.Pods)
leftResource.MilliCPU = allocatable.MilliCPU - requested.MilliCPU
leftResource.Memory = allocatable.Memory - requested.Memory
leftResource.EphemeralStorage = allocatable.EphemeralStorage - requested.EphemeralStorage
for k, allocatableEx := range allocatable.ScalarResources {
requestEx, ok := requested.ScalarResources[k]
if !ok {
leftResource.ScalarResources[k] = allocatableEx
} else {
leftResource.ScalarResources[k] = allocatableEx - requestEx
}
}
klog.V(4).Infof("Node %v left resource %+v", info.Node().Name, leftResource)
return &leftResource
}