mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Avoid unnecessary conversions
This commit is contained in:
parent
dcb2ca54ad
commit
d02e8d2885
@ -36,8 +36,8 @@ func CalculateNodeAffinityPriority(pod *api.Pod, nodeNameToInfo map[string]*sche
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var maxCount int
|
var maxCount float64
|
||||||
counts := make(map[string]int, len(nodes.Items))
|
counts := make(map[string]float64, len(nodes.Items))
|
||||||
|
|
||||||
affinity, err := api.GetAffinityFromPodAnnotations(pod.Annotations)
|
affinity, err := api.GetAffinityFromPodAnnotations(pod.Annotations)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -61,7 +61,7 @@ func CalculateNodeAffinityPriority(pod *api.Pod, nodeNameToInfo map[string]*sche
|
|||||||
|
|
||||||
for _, node := range nodes.Items {
|
for _, node := range nodes.Items {
|
||||||
if nodeSelector.Matches(labels.Set(node.Labels)) {
|
if nodeSelector.Matches(labels.Set(node.Labels)) {
|
||||||
counts[node.Name] += int(preferredSchedulingTerm.Weight)
|
counts[node.Name] += float64(preferredSchedulingTerm.Weight)
|
||||||
}
|
}
|
||||||
|
|
||||||
if counts[node.Name] > maxCount {
|
if counts[node.Name] > maxCount {
|
||||||
@ -74,12 +74,17 @@ func CalculateNodeAffinityPriority(pod *api.Pod, nodeNameToInfo map[string]*sche
|
|||||||
result := make(schedulerapi.HostPriorityList, 0, len(nodes.Items))
|
result := make(schedulerapi.HostPriorityList, 0, len(nodes.Items))
|
||||||
for i := range nodes.Items {
|
for i := range nodes.Items {
|
||||||
node := &nodes.Items[i]
|
node := &nodes.Items[i]
|
||||||
fScore := float64(0)
|
|
||||||
if maxCount > 0 {
|
if maxCount > 0 {
|
||||||
fScore = 10 * (float64(counts[node.Name]) / float64(maxCount))
|
fScore := 10 * (counts[node.Name] / maxCount)
|
||||||
|
result = append(result, schedulerapi.HostPriority{Host: node.Name, Score: int(fScore)})
|
||||||
|
if glog.V(10) {
|
||||||
|
// We explicitly don't do glog.V(10).Infof() to avoid computing all the parameters if this is
|
||||||
|
// not logged. There is visible performance gain from it.
|
||||||
|
glog.Infof("%v -> %v: NodeAffinityPriority, Score: (%d)", pod.Name, node.Name, int(fScore))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result = append(result, schedulerapi.HostPriority{Host: node.Name, Score: 0})
|
||||||
}
|
}
|
||||||
result = append(result, schedulerapi.HostPriority{Host: node.Name, Score: int(fScore)})
|
|
||||||
glog.V(10).Infof("%v -> %v: NodeAffinityPriority, Score: (%d)", pod.Name, node.Name, int(fScore))
|
|
||||||
}
|
}
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// CountIntolerableTaintsPreferNoSchedule gives the count of intolerable taints of a pod with effect PreferNoSchedule
|
// CountIntolerableTaintsPreferNoSchedule gives the count of intolerable taints of a pod with effect PreferNoSchedule
|
||||||
func countIntolerableTaintsPreferNoSchedule(taints []api.Taint, tolerations []api.Toleration) (intolerableTaints int) {
|
func countIntolerableTaintsPreferNoSchedule(taints []api.Taint, tolerations []api.Toleration) (intolerableTaints float64) {
|
||||||
for i := range taints {
|
for i := range taints {
|
||||||
taint := &taints[i]
|
taint := &taints[i]
|
||||||
// check only on taints that have effect PreferNoSchedule
|
// check only on taints that have effect PreferNoSchedule
|
||||||
@ -59,9 +59,9 @@ func ComputeTaintTolerationPriority(pod *api.Pod, nodeNameToInfo map[string]*sch
|
|||||||
}
|
}
|
||||||
|
|
||||||
// the max value of counts
|
// the max value of counts
|
||||||
var maxCount int
|
var maxCount float64
|
||||||
// counts hold the count of intolerable taints of a pod for a given node
|
// counts hold the count of intolerable taints of a pod for a given node
|
||||||
counts := make(map[string]int, len(nodes.Items))
|
counts := make(map[string]float64, len(nodes.Items))
|
||||||
|
|
||||||
tolerations, err := api.GetTolerationsFromPodAnnotations(pod.Annotations)
|
tolerations, err := api.GetTolerationsFromPodAnnotations(pod.Annotations)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -87,15 +87,19 @@ func ComputeTaintTolerationPriority(pod *api.Pod, nodeNameToInfo map[string]*sch
|
|||||||
|
|
||||||
// The maximum priority value to give to a node
|
// The maximum priority value to give to a node
|
||||||
// Priority values range from 0 - maxPriority
|
// Priority values range from 0 - maxPriority
|
||||||
const maxPriority = 10
|
const maxPriority = float64(10)
|
||||||
result := make(schedulerapi.HostPriorityList, 0, len(nodes.Items))
|
result := make(schedulerapi.HostPriorityList, 0, len(nodes.Items))
|
||||||
for i := range nodes.Items {
|
for i := range nodes.Items {
|
||||||
node := &nodes.Items[i]
|
node := &nodes.Items[i]
|
||||||
fScore := float64(maxPriority)
|
fScore := maxPriority
|
||||||
if maxCount > 0 {
|
if maxCount > 0 {
|
||||||
fScore = (1.0 - float64(counts[node.Name])/float64(maxCount)) * 10
|
fScore = (1.0 - counts[node.Name]/maxCount) * 10
|
||||||
|
}
|
||||||
|
if glog.V(10) {
|
||||||
|
// We explicitly don't do glog.V(10).Infof() to avoid computing all the parameters if this is
|
||||||
|
// not logged. There is visible performance gain from it.
|
||||||
|
glog.Infof("%v -> %v: Taint Toleration Priority, Score: (%d)", pod.Name, node.Name, int(fScore))
|
||||||
}
|
}
|
||||||
glog.V(10).Infof("%v -> %v: Taint Toleration Priority, Score: (%d)", pod.Name, node.Name, int(fScore))
|
|
||||||
|
|
||||||
result = append(result, schedulerapi.HostPriority{Host: node.Name, Score: int(fScore)})
|
result = append(result, schedulerapi.HostPriority{Host: node.Name, Score: int(fScore)})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user