Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Volcano
Commits
9aed9703
Unverified
Commit
9aed9703
authored
3 years ago
by
Volcano Bot
Committed by
GitHub
3 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #1712 from Thor-wl/0902-issue1710
fix diff function
parents
233d53ff
fda68f6b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
pkg/scheduler/api/resource_info.go
+26
-22
pkg/scheduler/api/resource_info.go
pkg/scheduler/api/resource_info_test.go
+173
-0
pkg/scheduler/api/resource_info_test.go
pkg/scheduler/plugins/proportion/proportion.go
+2
-3
pkg/scheduler/plugins/proportion/proportion.go
with
201 additions
and
25 deletions
+201
-25
pkg/scheduler/api/resource_info.go
+
26
-
22
View file @
9aed9703
...
@@ -437,38 +437,42 @@ func (r *Resource) Equal(rr *Resource, defaultValue DimensionDefaultValue) bool
...
@@ -437,38 +437,42 @@ func (r *Resource) Equal(rr *Resource, defaultValue DimensionDefaultValue) bool
}
}
// Diff calculate the difference between two resource object
// Diff calculate the difference between two resource object
func
(
r
*
Resource
)
Diff
(
rr
*
Resource
)
(
*
Resource
,
*
Resource
)
{
// Note: if `defaultValue` equals `Infinity`, the difference between two values will be `Infinity`, marked as -1
func
(
r
*
Resource
)
Diff
(
rr
*
Resource
,
defaultValue
DimensionDefaultValue
)
(
*
Resource
,
*
Resource
)
{
leftRes
:=
r
.
Clone
()
rightRes
:=
rr
.
Clone
()
increasedVal
:=
EmptyResource
()
increasedVal
:=
EmptyResource
()
decreasedVal
:=
EmptyResource
()
decreasedVal
:=
EmptyResource
()
if
r
.
MilliCPU
>
rr
.
MilliCPU
{
r
.
setDefaultValue
(
leftRes
,
rightRes
,
defaultValue
)
increasedVal
.
MilliCPU
+=
r
.
MilliCPU
-
rr
.
MilliCPU
if
leftRes
.
MilliCPU
>
rightRes
.
MilliCPU
{
increasedVal
.
MilliCPU
=
leftRes
.
MilliCPU
-
rightRes
.
MilliCPU
}
else
{
}
else
{
decreasedVal
.
MilliCPU
+
=
r
r
.
MilliCPU
-
r
.
MilliCPU
decreasedVal
.
MilliCPU
=
r
ightRes
.
MilliCPU
-
leftRes
.
MilliCPU
}
}
if
r
.
Memory
>
r
r
.
Memory
{
if
leftRes
.
Memory
>
r
ightRes
.
Memory
{
increasedVal
.
Memory
+
=
r
.
Memory
-
r
r
.
Memory
increasedVal
.
Memory
=
leftRes
.
Memory
-
r
ightRes
.
Memory
}
else
{
}
else
{
decreasedVal
.
Memory
+
=
r
r
.
Memory
-
r
.
Memory
decreasedVal
.
Memory
=
r
ightRes
.
Memory
-
leftRes
.
Memory
}
}
for
rName
,
rQuant
:=
range
r
.
ScalarResources
{
increasedVal
.
ScalarResources
=
make
(
map
[
v1
.
ResourceName
]
float64
,
0
)
rrQuant
,
ok
:=
rr
.
ScalarResources
[
rName
]
decreasedVal
.
ScalarResources
=
make
(
map
[
v1
.
ResourceName
]
float64
,
0
)
for
lName
,
lQuant
:=
range
leftRes
.
ScalarResources
{
if
!
ok
{
rQuant
,
_
:=
rightRes
.
ScalarResources
[
lName
]
rrQuant
=
0
if
lQuant
==
-
1
{
increasedVal
.
ScalarResources
[
lName
]
=
-
1
continue
}
}
if
rQuant
==
-
1
{
if
rQuant
>
rrQuant
{
decreasedVal
.
ScalarResources
[
lName
]
=
-
1
if
increasedVal
.
ScalarResources
==
nil
{
continue
increasedVal
.
ScalarResources
=
map
[
v1
.
ResourceName
]
float64
{
}
}
}
if
lQuant
>
rQuant
{
increasedVal
.
ScalarResources
[
r
Name
]
+
=
r
Quant
-
r
rQuant
increasedVal
.
ScalarResources
[
l
Name
]
=
l
Quant
-
rQuant
}
else
{
}
else
{
if
decreasedVal
.
ScalarResources
==
nil
{
decreasedVal
.
ScalarResources
[
lName
]
=
rQuant
-
lQuant
decreasedVal
.
ScalarResources
=
map
[
v1
.
ResourceName
]
float64
{}
}
decreasedVal
.
ScalarResources
[
rName
]
+=
rrQuant
-
rQuant
}
}
}
}
...
...
This diff is collapsed.
Click to expand it.
pkg/scheduler/api/resource_info_test.go
+
173
-
0
View file @
9aed9703
...
@@ -289,6 +289,179 @@ func TestSubResource(t *testing.T) {
...
@@ -289,6 +289,179 @@ func TestSubResource(t *testing.T) {
}
}
}
}
func
TestDiff
(
t
*
testing
.
T
)
{
testsForDefaultZero
:=
[]
struct
{
resource1
*
Resource
resource2
*
Resource
expectedIncreased
*
Resource
expectedDecreased
*
Resource
}{
{
resource1
:
&
Resource
{},
resource2
:
&
Resource
{},
expectedIncreased
:
&
Resource
{
ScalarResources
:
make
(
map
[
v1
.
ResourceName
]
float64
,
0
),
},
expectedDecreased
:
&
Resource
{
ScalarResources
:
make
(
map
[
v1
.
ResourceName
]
float64
,
0
),
},
},
{
resource1
:
&
Resource
{
MilliCPU
:
1000
,
Memory
:
2000
,
},
resource2
:
&
Resource
{},
expectedIncreased
:
&
Resource
{
MilliCPU
:
1000
,
Memory
:
2000
,
ScalarResources
:
make
(
map
[
v1
.
ResourceName
]
float64
,
0
),
},
expectedDecreased
:
&
Resource
{
ScalarResources
:
make
(
map
[
v1
.
ResourceName
]
float64
,
0
),
},
},
{
resource1
:
&
Resource
{},
resource2
:
&
Resource
{
MilliCPU
:
1000
,
Memory
:
2000
,
},
expectedIncreased
:
&
Resource
{
ScalarResources
:
make
(
map
[
v1
.
ResourceName
]
float64
,
0
),
},
expectedDecreased
:
&
Resource
{
MilliCPU
:
1000
,
Memory
:
2000
,
ScalarResources
:
make
(
map
[
v1
.
ResourceName
]
float64
,
0
),
},
},
{
resource1
:
&
Resource
{
MilliCPU
:
1000
,
Memory
:
2000
,
ScalarResources
:
map
[
v1
.
ResourceName
]
float64
{
"scalar.test/scalar1"
:
1000
},
},
resource2
:
&
Resource
{
MilliCPU
:
2000
,
Memory
:
1000
,
},
expectedIncreased
:
&
Resource
{
Memory
:
1000
,
ScalarResources
:
map
[
v1
.
ResourceName
]
float64
{
"scalar.test/scalar1"
:
1000
},
},
expectedDecreased
:
&
Resource
{
MilliCPU
:
1000
,
ScalarResources
:
make
(
map
[
v1
.
ResourceName
]
float64
,
0
),
},
},
{
resource1
:
&
Resource
{
MilliCPU
:
2000
,
Memory
:
1000
,
},
resource2
:
&
Resource
{
MilliCPU
:
1000
,
Memory
:
2000
,
ScalarResources
:
map
[
v1
.
ResourceName
]
float64
{
"scalar.test/scalar1"
:
1000
},
},
expectedIncreased
:
&
Resource
{
MilliCPU
:
1000
,
ScalarResources
:
make
(
map
[
v1
.
ResourceName
]
float64
,
0
),
},
expectedDecreased
:
&
Resource
{
Memory
:
1000
,
ScalarResources
:
map
[
v1
.
ResourceName
]
float64
{
"scalar.test/scalar1"
:
1000
},
},
},
{
resource1
:
&
Resource
{
MilliCPU
:
1000
,
Memory
:
2000
,
ScalarResources
:
map
[
v1
.
ResourceName
]
float64
{
"scalar.test/scalar1"
:
3000
},
},
resource2
:
&
Resource
{
MilliCPU
:
2000
,
Memory
:
1000
,
ScalarResources
:
map
[
v1
.
ResourceName
]
float64
{
"scalar.test/scalar1"
:
1000
},
},
expectedIncreased
:
&
Resource
{
Memory
:
1000
,
ScalarResources
:
map
[
v1
.
ResourceName
]
float64
{
"scalar.test/scalar1"
:
2000
},
},
expectedDecreased
:
&
Resource
{
MilliCPU
:
1000
,
ScalarResources
:
make
(
map
[
v1
.
ResourceName
]
float64
,
0
),
},
},
}
testsForDefaultInfinity
:=
[]
struct
{
resource1
*
Resource
resource2
*
Resource
expectedIncreased
*
Resource
expectedDecreased
*
Resource
}{
{
resource1
:
&
Resource
{
MilliCPU
:
1000
,
Memory
:
2000
,
ScalarResources
:
map
[
v1
.
ResourceName
]
float64
{
"scalar.test/scalar1"
:
1000
},
},
resource2
:
&
Resource
{
MilliCPU
:
2000
,
Memory
:
1000
,
},
expectedIncreased
:
&
Resource
{
Memory
:
1000
,
ScalarResources
:
make
(
map
[
v1
.
ResourceName
]
float64
,
0
),
},
expectedDecreased
:
&
Resource
{
MilliCPU
:
1000
,
ScalarResources
:
map
[
v1
.
ResourceName
]
float64
{
"scalar.test/scalar1"
:
-
1
},
},
},
{
resource1
:
&
Resource
{
MilliCPU
:
2000
,
Memory
:
1000
,
},
resource2
:
&
Resource
{
MilliCPU
:
1000
,
Memory
:
2000
,
ScalarResources
:
map
[
v1
.
ResourceName
]
float64
{
"scalar.test/scalar1"
:
1000
},
},
expectedIncreased
:
&
Resource
{
MilliCPU
:
1000
,
ScalarResources
:
map
[
v1
.
ResourceName
]
float64
{
"scalar.test/scalar1"
:
-
1
},
},
expectedDecreased
:
&
Resource
{
Memory
:
1000
,
ScalarResources
:
make
(
map
[
v1
.
ResourceName
]
float64
,
0
),
},
},
}
for
_
,
test
:=
range
testsForDefaultZero
{
increased
,
decreased
:=
test
.
resource1
.
Diff
(
test
.
resource2
,
Zero
)
if
!
reflect
.
DeepEqual
(
test
.
expectedIncreased
,
increased
)
{
t
.
Errorf
(
"expected: %#v, got: %#v"
,
test
.
expectedIncreased
,
increased
)
}
if
!
reflect
.
DeepEqual
(
test
.
expectedDecreased
,
decreased
)
{
t
.
Errorf
(
"expected: %#v, got: %#v"
,
test
.
expectedDecreased
,
decreased
)
}
}
for
_
,
test
:=
range
testsForDefaultInfinity
{
increased
,
decreased
:=
test
.
resource1
.
Diff
(
test
.
resource2
,
Infinity
)
if
!
reflect
.
DeepEqual
(
test
.
expectedIncreased
,
increased
)
{
t
.
Errorf
(
"expected: %#v, got: %#v"
,
test
.
expectedIncreased
,
increased
)
}
if
!
reflect
.
DeepEqual
(
test
.
expectedDecreased
,
decreased
)
{
t
.
Errorf
(
"expected: %#v, got: %#v"
,
test
.
expectedDecreased
,
decreased
)
}
}
}
func
TestLess
(
t
*
testing
.
T
)
{
func
TestLess
(
t
*
testing
.
T
)
{
testsForDefaultZero
:=
[]
struct
{
testsForDefaultZero
:=
[]
struct
{
resource1
*
Resource
resource1
*
Resource
...
...
This diff is collapsed.
Click to expand it.
pkg/scheduler/plugins/proportion/proportion.go
+
2
-
3
View file @
9aed9703
...
@@ -178,7 +178,7 @@ func (pp *proportionPlugin) OnSessionOpen(ssn *framework.Session) {
...
@@ -178,7 +178,7 @@ func (pp *proportionPlugin) OnSessionOpen(ssn *framework.Session) {
klog
.
V
(
4
)
.
Infof
(
"The attributes of queue <%s> in proportion: deserved <%v>, allocate <%v>, request <%v>, share <%0.2f>"
,
klog
.
V
(
4
)
.
Infof
(
"The attributes of queue <%s> in proportion: deserved <%v>, allocate <%v>, request <%v>, share <%0.2f>"
,
attr
.
name
,
attr
.
deserved
,
attr
.
allocated
,
attr
.
request
,
attr
.
share
)
attr
.
name
,
attr
.
deserved
,
attr
.
allocated
,
attr
.
request
,
attr
.
share
)
increased
,
decreased
:=
attr
.
deserved
.
Diff
(
oldDeserved
)
increased
,
decreased
:=
attr
.
deserved
.
Diff
(
oldDeserved
,
api
.
Zero
)
increasedDeserved
.
Add
(
increased
)
increasedDeserved
.
Add
(
increased
)
decreasedDeserved
.
Add
(
decreased
)
decreasedDeserved
.
Add
(
decreased
)
...
@@ -254,7 +254,7 @@ func (pp *proportionPlugin) OnSessionOpen(ssn *framework.Session) {
...
@@ -254,7 +254,7 @@ func (pp *proportionPlugin) OnSessionOpen(ssn *framework.Session) {
underUsedResNames
:=
api
.
ResourceNameList
{}
underUsedResNames
:=
api
.
ResourceNameList
{}
attr
:=
pp
.
queueOpts
[
queue
.
UID
]
attr
:=
pp
.
queueOpts
[
queue
.
UID
]
_
,
underUsedResource
:=
attr
.
allocated
.
Diff
(
attr
.
deserved
)
_
,
underUsedResource
:=
attr
.
allocated
.
Diff
(
attr
.
deserved
,
api
.
Zero
)
if
underUsedResource
.
MilliCPU
>=
api
.
GetMinResource
()
{
if
underUsedResource
.
MilliCPU
>=
api
.
GetMinResource
()
{
underUsedResNames
=
append
(
underUsedResNames
,
v1
.
ResourceCPU
)
underUsedResNames
=
append
(
underUsedResNames
,
v1
.
ResourceCPU
)
}
}
...
@@ -268,7 +268,6 @@ func (pp *proportionPlugin) OnSessionOpen(ssn *framework.Session) {
...
@@ -268,7 +268,6 @@ func (pp *proportionPlugin) OnSessionOpen(ssn *framework.Session) {
queue
.
Name
,
attr
.
deserved
,
attr
.
allocated
,
attr
.
share
,
underUsedResNames
)
queue
.
Name
,
attr
.
deserved
,
attr
.
allocated
,
attr
.
share
,
underUsedResNames
)
return
underUsedResNames
return
underUsedResNames
})
})
ssn
.
AddJobEnqueueableFn
(
pp
.
Name
(),
func
(
obj
interface
{})
int
{
ssn
.
AddJobEnqueueableFn
(
pp
.
Name
(),
func
(
obj
interface
{})
int
{
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help