mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 03:11:40 +00:00
Merge pull request #91016 from chendave/nits
Fix nits in comments for NodeResources plugins
This commit is contained in:
commit
95e598586e
@ -220,42 +220,42 @@ func TestNodeResourcesBalancedAllocation(t *testing.T) {
|
||||
name string
|
||||
}{
|
||||
{
|
||||
// Node1 scores (remaining resources) on 0-10 scale
|
||||
// Node1 scores (remaining resources) on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 0 / 4000 = 0%
|
||||
// Memory Fraction: 0 / 10000 = 0%
|
||||
// Node1 Score: 10 - (0-0)*100 = 100
|
||||
// Node2 scores (remaining resources) on 0-10 scale
|
||||
// Node1 Score: MaxNodeScore - (0-0)*MaxNodeScore = MaxNodeScore
|
||||
// Node2 scores (remaining resources) on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 0 / 4000 = 0 %
|
||||
// Memory Fraction: 0 / 10000 = 0%
|
||||
// Node2 Score: 10 - (0-0)*100 = 100
|
||||
// Node2 Score: MaxNodeScore - (0-0)*MaxNodeScore = MaxNodeScore
|
||||
pod: &v1.Pod{Spec: noResources},
|
||||
nodes: []*v1.Node{makeNode("machine1", 4000, 10000), makeNode("machine2", 4000, 10000)},
|
||||
expectedList: []framework.NodeScore{{Name: "machine1", Score: framework.MaxNodeScore}, {Name: "machine2", Score: framework.MaxNodeScore}},
|
||||
name: "nothing scheduled, nothing requested",
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 3000 / 4000= 75%
|
||||
// Memory Fraction: 5000 / 10000 = 50%
|
||||
// Node1 Score: 10 - (0.75-0.5)*100 = 75
|
||||
// Node2 scores on 0-10 scale
|
||||
// Node1 Score: MaxNodeScore - (0.75-0.5)*MaxNodeScore = 75
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 3000 / 6000= 50%
|
||||
// Memory Fraction: 5000/10000 = 50%
|
||||
// Node2 Score: 10 - (0.5-0.5)*100 = 100
|
||||
// Node2 Score: MaxNodeScore - (0.5-0.5)*MaxNodeScore = MaxNodeScore
|
||||
pod: &v1.Pod{Spec: cpuAndMemory},
|
||||
nodes: []*v1.Node{makeNode("machine1", 4000, 10000), makeNode("machine2", 6000, 10000)},
|
||||
expectedList: []framework.NodeScore{{Name: "machine1", Score: 75}, {Name: "machine2", Score: framework.MaxNodeScore}},
|
||||
name: "nothing scheduled, resources requested, differently sized machines",
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 0 / 4000= 0%
|
||||
// Memory Fraction: 0 / 10000 = 0%
|
||||
// Node1 Score: 10 - (0-0)*100 = 100
|
||||
// Node2 scores on 0-10 scale
|
||||
// Node1 Score: MaxNodeScore - (0-0)*MaxNodeScore = MaxNodeScore
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 0 / 4000= 0%
|
||||
// Memory Fraction: 0 / 10000 = 0%
|
||||
// Node2 Score: 10 - (0-0)*100 = 100
|
||||
// Node2 Score: MaxNodeScore - (0-0)*MaxNodeScore= MaxNodeScore
|
||||
pod: &v1.Pod{Spec: noResources},
|
||||
nodes: []*v1.Node{makeNode("machine1", 4000, 10000), makeNode("machine2", 4000, 10000)},
|
||||
expectedList: []framework.NodeScore{{Name: "machine1", Score: framework.MaxNodeScore}, {Name: "machine2", Score: framework.MaxNodeScore}},
|
||||
@ -268,14 +268,14 @@ func TestNodeResourcesBalancedAllocation(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 6000 / 10000 = 60%
|
||||
// Memory Fraction: 0 / 20000 = 0%
|
||||
// Node1 Score: 10 - (0.6-0)*100 = 40
|
||||
// Node2 scores on 0-10 scale
|
||||
// Node1 Score: MaxNodeScore - (0.6-0)*MaxNodeScore = 40
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 6000 / 10000 = 60%
|
||||
// Memory Fraction: 5000 / 20000 = 25%
|
||||
// Node2 Score: 10 - (0.6-0.25)*100 = 65
|
||||
// Node2 Score: MaxNodeScore - (0.6-0.25)*MaxNodeScore = 65
|
||||
pod: &v1.Pod{Spec: noResources},
|
||||
nodes: []*v1.Node{makeNode("machine1", 10000, 20000), makeNode("machine2", 10000, 20000)},
|
||||
expectedList: []framework.NodeScore{{Name: "machine1", Score: 40}, {Name: "machine2", Score: 65}},
|
||||
@ -288,14 +288,14 @@ func TestNodeResourcesBalancedAllocation(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 6000 / 10000 = 60%
|
||||
// Memory Fraction: 5000 / 20000 = 25%
|
||||
// Node1 Score: 10 - (0.6-0.25)*100 = 65
|
||||
// Node2 scores on 0-10 scale
|
||||
// Node1 Score: MaxNodeScore - (0.6-0.25)*MaxNodeScore = 65
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 6000 / 10000 = 60%
|
||||
// Memory Fraction: 10000 / 20000 = 50%
|
||||
// Node2 Score: 10 - (0.6-0.5)*100 = 9
|
||||
// Node2 Score: MaxNodeScore - (0.6-0.5)*MaxNodeScore = 90
|
||||
pod: &v1.Pod{Spec: cpuAndMemory},
|
||||
nodes: []*v1.Node{makeNode("machine1", 10000, 20000), makeNode("machine2", 10000, 20000)},
|
||||
expectedList: []framework.NodeScore{{Name: "machine1", Score: 65}, {Name: "machine2", Score: 90}},
|
||||
@ -306,14 +306,14 @@ func TestNodeResourcesBalancedAllocation(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 6000 / 10000 = 60%
|
||||
// Memory Fraction: 5000 / 20000 = 25%
|
||||
// Node1 Score: 10 - (0.6-0.25)*100 = 65
|
||||
// Node2 scores on 0-10 scale
|
||||
// Node1 Score: MaxNodeScore - (0.6-0.25)*MaxNodeScore = 65
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 6000 / 10000 = 60%
|
||||
// Memory Fraction: 10000 / 50000 = 20%
|
||||
// Node2 Score: 10 - (0.6-0.2)*100 = 60
|
||||
// Node2 Score: MaxNodeScore - (0.6-0.2)*MaxNodeScore = 60
|
||||
pod: &v1.Pod{Spec: cpuAndMemory},
|
||||
nodes: []*v1.Node{makeNode("machine1", 10000, 20000), makeNode("machine2", 10000, 50000)},
|
||||
expectedList: []framework.NodeScore{{Name: "machine1", Score: 65}, {Name: "machine2", Score: 60}},
|
||||
@ -324,11 +324,11 @@ func TestNodeResourcesBalancedAllocation(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 6000 / 4000 > 100% ==> Score := 0
|
||||
// Memory Fraction: 0 / 10000 = 0
|
||||
// Node1 Score: 0
|
||||
// Node2 scores on 0-10 scale
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Fraction: 6000 / 4000 > 100% ==> Score := 0
|
||||
// Memory Fraction 5000 / 10000 = 50%
|
||||
// Node2 Score: 0
|
||||
|
@ -98,27 +98,27 @@ func TestNodeResourcesLeastAllocated(t *testing.T) {
|
||||
name string
|
||||
}{
|
||||
{
|
||||
// Node1 scores (remaining resources) on 0-10 scale
|
||||
// CPU Score: ((4000 - 0) *100) / 4000 = 100
|
||||
// Memory Score: ((10000 - 0) *100) / 10000 = 100
|
||||
// Node1 scores (remaining resources) on 0-MaxNodeScore scale
|
||||
// CPU Score: ((4000 - 0) * MaxNodeScore) / 4000 = MaxNodeScore
|
||||
// Memory Score: ((10000 - 0) * MaxNodeScore) / 10000 = MaxNodeScore
|
||||
// Node1 Score: (100 + 100) / 2 = 100
|
||||
// Node2 scores (remaining resources) on 0-10 scale
|
||||
// CPU Score: ((4000 - 0) *100) / 4000 = 100
|
||||
// Memory Score: ((10000 - 0) *10) / 10000 = 100
|
||||
// Node2 Score: (100 + 100) / 2 = 100
|
||||
// Node2 scores (remaining resources) on 0-MaxNodeScore scale
|
||||
// CPU Score: ((4000 - 0) * MaxNodeScore) / 4000 = MaxNodeScore
|
||||
// Memory Score: ((10000 - 0) * MaxNodeScore) / 10000 = MaxNodeScore
|
||||
// Node2 Score: (MaxNodeScore + MaxNodeScore) / 2 = MaxNodeScore
|
||||
pod: &v1.Pod{Spec: noResources},
|
||||
nodes: []*v1.Node{makeNode("machine1", 4000, 10000), makeNode("machine2", 4000, 10000)},
|
||||
expectedList: []framework.NodeScore{{Name: "machine1", Score: framework.MaxNodeScore}, {Name: "machine2", Score: framework.MaxNodeScore}},
|
||||
name: "nothing scheduled, nothing requested",
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// CPU Score: ((4000 - 3000) *100) / 4000 = 25
|
||||
// Memory Score: ((10000 - 5000) *100) / 10000 = 50
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((4000 - 3000) * MaxNodeScore) / 4000 = 25
|
||||
// Memory Score: ((10000 - 5000) * MaxNodeScore) / 10000 = 50
|
||||
// Node1 Score: (25 + 50) / 2 = 37
|
||||
// Node2 scores on 0-10 scale
|
||||
// CPU Score: ((6000 - 3000) *100) / 6000 = 50
|
||||
// Memory Score: ((10000 - 5000) *100) / 10000 = 50
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((6000 - 3000) * MaxNodeScore) / 6000 = 50
|
||||
// Memory Score: ((10000 - 5000) * MaxNodeScore) / 10000 = 50
|
||||
// Node2 Score: (50 + 50) / 2 = 50
|
||||
pod: &v1.Pod{Spec: cpuAndMemory},
|
||||
nodes: []*v1.Node{makeNode("machine1", 4000, 10000), makeNode("machine2", 6000, 10000)},
|
||||
@ -126,14 +126,14 @@ func TestNodeResourcesLeastAllocated(t *testing.T) {
|
||||
name: "nothing scheduled, resources requested, differently sized machines",
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// CPU Score: ((4000 - 0) *100) / 4000 = 100
|
||||
// Memory Score: ((10000 - 0) *100) / 10000 = 100
|
||||
// Node1 Score: (100 + 100) / 2 = 100
|
||||
// Node2 scores on 0-10 scale
|
||||
// CPU Score: ((4000 - 0) *100) / 4000 = 100
|
||||
// Memory Score: ((10000 - 0) *100) / 10000 = 100
|
||||
// Node2 Score: (100 + 100) / 2 = 100
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((4000 - 0) * MaxNodeScore) / 4000 = MaxNodeScore
|
||||
// Memory Score: ((10000 - 0) * MaxNodeScore) / 10000 = MaxNodeScore
|
||||
// Node1 Score: (MaxNodeScore + MaxNodeScore) / 2 = MaxNodeScore
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((4000 - 0) * MaxNodeScore) / 4000 = MaxNodeScore
|
||||
// Memory Score: ((10000 - 0) * MaxNodeScore) / 10000 = MaxNodeScore
|
||||
// Node2 Score: (MaxNodeScore + MaxNodeScore) / 2 = MaxNodeScore
|
||||
pod: &v1.Pod{Spec: noResources},
|
||||
nodes: []*v1.Node{makeNode("machine1", 4000, 10000), makeNode("machine2", 4000, 10000)},
|
||||
expectedList: []framework.NodeScore{{Name: "machine1", Score: framework.MaxNodeScore}, {Name: "machine2", Score: framework.MaxNodeScore}},
|
||||
@ -146,13 +146,13 @@ func TestNodeResourcesLeastAllocated(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// CPU Score: ((10000 - 6000) *100) / 10000 = 40
|
||||
// Memory Score: ((20000 - 0) *100) / 20000 = 100
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((10000 - 6000) * MaxNodeScore) / 10000 = 40
|
||||
// Memory Score: ((20000 - 0) * MaxNodeScore) / 20000 = MaxNodeScore
|
||||
// Node1 Score: (40 + 100) / 2 = 70
|
||||
// Node2 scores on 0-10 scale
|
||||
// CPU Score: ((10000 - 6000) *100) / 10000 = 40
|
||||
// Memory Score: ((20000 - 5000) *100) / 20000 = 75
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((10000 - 6000) * MaxNodeScore) / 10000 = 40
|
||||
// Memory Score: ((20000 - 5000) * MaxNodeScore) / 20000 = 75
|
||||
// Node2 Score: (40 + 75) / 2 = 57
|
||||
pod: &v1.Pod{Spec: noResources},
|
||||
nodes: []*v1.Node{makeNode("machine1", 10000, 20000), makeNode("machine2", 10000, 20000)},
|
||||
@ -166,13 +166,13 @@ func TestNodeResourcesLeastAllocated(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// CPU Score: ((10000 - 6000) *10) / 10000 = 40
|
||||
// Memory Score: ((20000 - 5000) *10) / 20000 = 75
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((10000 - 6000) * MaxNodeScore) / 10000 = 40
|
||||
// Memory Score: ((20000 - 5000) * MaxNodeScore) / 20000 = 75
|
||||
// Node1 Score: (40 + 75) / 2 = 57
|
||||
// Node2 scores on 0-10 scale
|
||||
// CPU Score: ((10000 - 6000) *100) / 10000 = 40
|
||||
// Memory Score: ((20000 - 10000) *100) / 20000 = 50
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((10000 - 6000) * MaxNodeScore) / 10000 = 40
|
||||
// Memory Score: ((20000 - 10000) * MaxNodeScore) / 20000 = 50
|
||||
// Node2 Score: (40 + 50) / 2 = 45
|
||||
pod: &v1.Pod{Spec: cpuAndMemory},
|
||||
nodes: []*v1.Node{makeNode("machine1", 10000, 20000), makeNode("machine2", 10000, 20000)},
|
||||
@ -184,13 +184,13 @@ func TestNodeResourcesLeastAllocated(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// CPU Score: ((10000 - 6000) *100) / 10000 = 40
|
||||
// Memory Score: ((20000 - 5000) *100) / 20000 = 75
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((10000 - 6000) * MaxNodeScore) / 10000 = 40
|
||||
// Memory Score: ((20000 - 5000) * MaxNodeScore) / 20000 = 75
|
||||
// Node1 Score: (40 + 75) / 2 = 57
|
||||
// Node2 scores on 0-10 scale
|
||||
// CPU Score: ((10000 - 6000) *100) / 10000 = 40
|
||||
// Memory Score: ((50000 - 10000) *100) / 50000 = 80
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((10000 - 6000) * MaxNodeScore) / 10000 = 40
|
||||
// Memory Score: ((50000 - 10000) * MaxNodeScore) / 50000 = 80
|
||||
// Node2 Score: (40 + 80) / 2 = 60
|
||||
pod: &v1.Pod{Spec: cpuAndMemory},
|
||||
nodes: []*v1.Node{makeNode("machine1", 10000, 20000), makeNode("machine2", 10000, 50000)},
|
||||
@ -202,13 +202,13 @@ func TestNodeResourcesLeastAllocated(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// CPU Score: ((4000 - 6000) *100) / 4000 = 0
|
||||
// Memory Score: ((10000 - 0) *100) / 10000 = 100
|
||||
// Node1 Score: (0 + 100) / 2 = 50
|
||||
// Node2 scores on 0-10 scale
|
||||
// CPU Score: ((4000 - 6000) *100) / 4000 = 0
|
||||
// Memory Score: ((10000 - 5000) *100) / 10000 = 50
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((4000 - 6000) * MaxNodeScore) / 4000 = 0
|
||||
// Memory Score: ((10000 - 0) * MaxNodeScore) / 10000 = MaxNodeScore
|
||||
// Node1 Score: (0 + MaxNodeScore) / 2 = 50
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: ((4000 - 6000) * MaxNodeScore) / 4000 = 0
|
||||
// Memory Score: ((10000 - 5000) * MaxNodeScore) / 10000 = 50
|
||||
// Node2 Score: (0 + 50) / 2 = 25
|
||||
pod: &v1.Pod{Spec: cpuOnly},
|
||||
nodes: []*v1.Node{makeNode("machine1", 4000, 10000), makeNode("machine2", 4000, 10000)},
|
||||
|
@ -51,7 +51,7 @@ func (ma *MostAllocated) Score(ctx context.Context, state *framework.CycleState,
|
||||
// ma.score favors nodes with most requested resources.
|
||||
// It calculates the percentage of memory and CPU requested by pods scheduled on the node, and prioritizes
|
||||
// based on the maximum of the average of the fraction of requested to capacity.
|
||||
// Details: (cpu(10 * sum(requested) / capacity) + memory(10 * sum(requested) / capacity)) / 2
|
||||
// Details: (cpu(MaxNodeScore * sum(requested) / capacity) + memory(MaxNodeScore * sum(requested) / capacity)) / weightSum
|
||||
return ma.score(pod, nodeInfo)
|
||||
}
|
||||
|
||||
@ -83,13 +83,11 @@ func mostResourceScorer(requested, allocable resourceToValueMap, includeVolumes
|
||||
|
||||
}
|
||||
|
||||
// The used capacity is calculated on a scale of 0-10
|
||||
// 0 being the lowest priority and 10 being the highest.
|
||||
// The used capacity is calculated on a scale of 0-MaxNodeScore (MaxNodeScore is
|
||||
// constant with value set to 100).
|
||||
// 0 being the lowest priority and 100 being the highest.
|
||||
// The more resources are used the higher the score is. This function
|
||||
// is almost a reversed version of least_requested_priority.calculateUnusedScore
|
||||
// (10 - calculateUnusedScore). The main difference is in rounding. It was added to
|
||||
// keep the final formula clean and not to modify the widely used (by users
|
||||
// in their default scheduling policies) calculateUsedScore.
|
||||
// is almost a reversed version of noderesources.leastRequestedScore.
|
||||
func mostRequestedScore(requested, capacity int64) int64 {
|
||||
if capacity == 0 {
|
||||
return 0
|
||||
|
@ -113,13 +113,13 @@ func TestNodeResourcesMostAllocated(t *testing.T) {
|
||||
name string
|
||||
}{
|
||||
{
|
||||
// Node1 scores (used resources) on 0-10 scale
|
||||
// CPU Score: (0 * 100) / 4000 = 0
|
||||
// Memory Score: (0 * 100) / 10000 = 0
|
||||
// Node1 scores (used resources) on 0-MaxNodeScore scale
|
||||
// CPU Score: (0 * MaxNodeScore) / 4000 = 0
|
||||
// Memory Score: (0 * MaxNodeScore) / 10000 = 0
|
||||
// Node1 Score: (0 + 0) / 2 = 0
|
||||
// Node2 scores (used resources) on 0-10 scale
|
||||
// CPU Score: (0 * 100) / 4000 = 0
|
||||
// Memory Score: (0 * 100) / 10000 = 0
|
||||
// Node2 scores (used resources) on 0-MaxNodeScore scale
|
||||
// CPU Score: (0 * MaxNodeScore) / 4000 = 0
|
||||
// Memory Score: (0 * MaxNodeScore) / 10000 = 0
|
||||
// Node2 Score: (0 + 0) / 2 = 0
|
||||
pod: &v1.Pod{Spec: noResources},
|
||||
nodes: []*v1.Node{makeNode("machine1", 4000, 10000), makeNode("machine2", 4000, 10000)},
|
||||
@ -127,13 +127,13 @@ func TestNodeResourcesMostAllocated(t *testing.T) {
|
||||
name: "nothing scheduled, nothing requested",
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// CPU Score: (3000 * 100) / 4000 = 75
|
||||
// Memory Score: (5000 * 100) / 10000 = 50
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: (3000 * MaxNodeScore) / 4000 = 75
|
||||
// Memory Score: (5000 * MaxNodeScore) / 10000 = 50
|
||||
// Node1 Score: (75 + 50) / 2 = 6
|
||||
// Node2 scores on 0-10 scale
|
||||
// CPU Score: (3000 * 100) / 6000 = 50
|
||||
// Memory Score: (5000 * 100) / 10000 = 50
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: (3000 * MaxNodeScore) / 6000 = 50
|
||||
// Memory Score: (5000 * MaxNodeScore) / 10000 = 50
|
||||
// Node2 Score: (50 + 50) / 2 = 50
|
||||
pod: &v1.Pod{Spec: cpuAndMemory},
|
||||
nodes: []*v1.Node{makeNode("machine1", 4000, 10000), makeNode("machine2", 6000, 10000)},
|
||||
@ -141,13 +141,13 @@ func TestNodeResourcesMostAllocated(t *testing.T) {
|
||||
name: "nothing scheduled, resources requested, differently sized machines",
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// CPU Score: (6000 * 100) / 10000 = 60
|
||||
// Memory Score: (0 * 100) / 20000 = 100
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: (6000 * MaxNodeScore) / 10000 = 60
|
||||
// Memory Score: (0 * MaxNodeScore) / 20000 = 0
|
||||
// Node1 Score: (60 + 0) / 2 = 30
|
||||
// Node2 scores on 0-10 scale
|
||||
// CPU Score: (6000 * 100) / 10000 = 60
|
||||
// Memory Score: (5000 * 100) / 20000 = 25
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: (6000 * MaxNodeScore) / 10000 = 60
|
||||
// Memory Score: (5000 * MaxNodeScore) / 20000 = 25
|
||||
// Node2 Score: (60 + 25) / 2 = 42
|
||||
pod: &v1.Pod{Spec: noResources},
|
||||
nodes: []*v1.Node{makeNode("machine1", 10000, 20000), makeNode("machine2", 10000, 20000)},
|
||||
@ -161,13 +161,13 @@ func TestNodeResourcesMostAllocated(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// CPU Score: (6000 * 100) / 10000 = 60
|
||||
// Memory Score: (5000 * 100) / 20000 = 25
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: (6000 * MaxNodeScore) / 10000 = 60
|
||||
// Memory Score: (5000 * MaxNodeScore) / 20000 = 25
|
||||
// Node1 Score: (60 + 25) / 2 = 42
|
||||
// Node2 scores on 0-10 scale
|
||||
// CPU Score: (6000 * 100) / 10000 = 60
|
||||
// Memory Score: (10000 * 100) / 20000 = 50
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: (6000 * MaxNodeScore) / 10000 = 60
|
||||
// Memory Score: (10000 * MaxNodeScore) / 20000 = 50
|
||||
// Node2 Score: (60 + 50) / 2 = 55
|
||||
pod: &v1.Pod{Spec: cpuAndMemory},
|
||||
nodes: []*v1.Node{makeNode("machine1", 10000, 20000), makeNode("machine2", 10000, 20000)},
|
||||
@ -179,12 +179,12 @@ func TestNodeResourcesMostAllocated(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
// Node1 scores on 0-10 scale
|
||||
// Node1 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: 5000 > 4000 return 0
|
||||
// Memory Score: (9000 * 100) / 10000 = 90
|
||||
// Memory Score: (9000 * MaxNodeScore) / 10000 = 90
|
||||
// Node1 Score: (0 + 90) / 2 = 45
|
||||
// Node2 scores on 0-10 scale
|
||||
// CPU Score: (5000 * 100) / 10000 = 50
|
||||
// Node2 scores on 0-MaxNodeScore scale
|
||||
// CPU Score: (5000 * MaxNodeScore) / 10000 = 50
|
||||
// Memory Score: 9000 > 8000 return 0
|
||||
// Node2 Score: (50 + 0) / 2 = 25
|
||||
pod: &v1.Pod{Spec: bigCPUAndMemory},
|
||||
|
@ -267,16 +267,16 @@ func TestResourceBinPackingSingleExtended(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
|
||||
// Node1 scores (used resources) on 0-10 scale
|
||||
// Node1 scores (used resources) on 0-MaxNodeScore scale
|
||||
// Node1 Score:
|
||||
// rawScoringFunction(used + requested / available)
|
||||
// resourceScoringFunction((0+0),8)
|
||||
// = 100 - (8-0)*(100/8) = 0 = rawScoringFunction(0)
|
||||
// = maxUtilization - (8-0)*(maxUtilization/8) = 0 = rawScoringFunction(0)
|
||||
// Node1 Score: 0
|
||||
// Node2 scores (used resources) on 0-10 scale
|
||||
// Node2 scores (used resources) on 0-MaxNodeScore scale
|
||||
// rawScoringFunction(used + requested / available)
|
||||
// resourceScoringFunction((0+0),4)
|
||||
// = 100 - (4-0)*(100/4) = 0 = rawScoringFunction(0)
|
||||
// = maxUtilization - (4-0)*(maxUtilization/4) = 0 = rawScoringFunction(0)
|
||||
// Node2 Score: 0
|
||||
|
||||
pod: &v1.Pod{Spec: noResources},
|
||||
@ -287,16 +287,16 @@ func TestResourceBinPackingSingleExtended(t *testing.T) {
|
||||
|
||||
{
|
||||
|
||||
// Node1 scores (used resources) on 0-10 scale
|
||||
// Node1 scores (used resources) on 0-MaxNodeScore scale
|
||||
// Node1 Score:
|
||||
// rawScoringFunction(used + requested / available)
|
||||
// resourceScoringFunction((0+2),8)
|
||||
// = 100 - (8-2)*(100/8) = 25 = rawScoringFunction(25)
|
||||
// = maxUtilization - (8-2)*(maxUtilization/8) = 25 = rawScoringFunction(25)
|
||||
// Node1 Score: 2
|
||||
// Node2 scores (used resources) on 0-10 scale
|
||||
// Node2 scores (used resources) on 0-MaxNodeScore scale
|
||||
// rawScoringFunction(used + requested / available)
|
||||
// resourceScoringFunction((0+2),4)
|
||||
// = 100 - (4-2)*(100/4) = 50 = rawScoringFunction(50)
|
||||
// = maxUtilization - (4-2)*(maxUtilization/4) = 50 = rawScoringFunction(50)
|
||||
// Node2 Score: 5
|
||||
|
||||
pod: &v1.Pod{Spec: extendedResourcePod1},
|
||||
@ -310,16 +310,16 @@ func TestResourceBinPackingSingleExtended(t *testing.T) {
|
||||
|
||||
{
|
||||
|
||||
// Node1 scores (used resources) on 0-10 scale
|
||||
// Node1 scores (used resources) on 0-MaxNodeScore scale
|
||||
// Node1 Score:
|
||||
// rawScoringFunction(used + requested / available)
|
||||
// resourceScoringFunction((0+2),8)
|
||||
// = 100 - (8-2)*(100/8) = 25 =rawScoringFunction(25)
|
||||
// = maxUtilization - (8-2)*(maxUtilization/8) = 25 = rawScoringFunction(25)
|
||||
// Node1 Score: 2
|
||||
// Node2 scores (used resources) on 0-10 scale
|
||||
// Node2 scores (used resources) on 0-MaxNodeScore scale
|
||||
// rawScoringFunction(used + requested / available)
|
||||
// resourceScoringFunction((2+2),4)
|
||||
// = 100 - (4-4)*(100/4) = 100 = rawScoringFunction(100)
|
||||
// = maxUtilization - (4-4)*(maxUtilization/4) = maxUtilization = rawScoringFunction(maxUtilization)
|
||||
// Node2 Score: 10
|
||||
|
||||
pod: &v1.Pod{Spec: extendedResourcePod1},
|
||||
@ -333,16 +333,16 @@ func TestResourceBinPackingSingleExtended(t *testing.T) {
|
||||
|
||||
{
|
||||
|
||||
// Node1 scores (used resources) on 0-10 scale
|
||||
// Node1 scores (used resources) on 0-MaxNodeScore scale
|
||||
// Node1 Score:
|
||||
// rawScoringFunction(used + requested / available)
|
||||
// resourceScoringFunction((0+4),8)
|
||||
// = 100 - (8-4)*(100/8) = 50 = rawScoringFunction(50)
|
||||
// = maxUtilization - (8-4)*(maxUtilization/8) = 50 = rawScoringFunction(50)
|
||||
// Node1 Score: 5
|
||||
// Node2 scores (used resources) on 0-10 scale
|
||||
// Node2 scores (used resources) on 0-MaxNodeScore scale
|
||||
// rawScoringFunction(used + requested / available)
|
||||
// resourceScoringFunction((0+4),4)
|
||||
// = 100 - (4-4)*(100/4) = 100 = rawScoringFunction(100)
|
||||
// = maxUtilization - (4-4)*(maxUtilization/4) = maxUtilization = rawScoringFunction(maxUtilization)
|
||||
// Node2 Score: 10
|
||||
|
||||
pod: &v1.Pod{Spec: extendedResourcePod2},
|
||||
|
Loading…
Reference in New Issue
Block a user