Skip to content

Commit b19081a

Browse files
committed
Replaced numActiveUsed to ActiveAllocated in IsGangSatisfied and added isStale
1 parent 8c57466 commit b19081a

File tree

4 files changed

+81
-5
lines changed

4 files changed

+81
-5
lines changed

pkg/scheduler/api/podgroup_info/job_info.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ func (pgi *PodGroupInfo) IsStale() bool {
407407
return true
408408
}
409409
for _, subGroup := range pgi.GetActiveSubGroupInfos() {
410-
if !subGroup.IsGangSatisfied() {
410+
if subGroup.IsStale() {
411411
return true
412412
}
413413
}
@@ -416,8 +416,8 @@ func (pgi *PodGroupInfo) IsStale() bool {
416416
}
417417

418418
func (pgi *PodGroupInfo) IsGangSatisfied() bool {
419-
numActiveTasks := pgi.GetNumActiveUsedTasks()
420-
if numActiveTasks < int(pgi.GetDefaultMinAvailable()) {
419+
numActiveAllocatedTasks := pgi.GetActiveAllocatedTasksCount()
420+
if numActiveAllocatedTasks < int(pgi.GetDefaultMinAvailable()) {
421421
return false
422422
}
423423
for _, subGroup := range pgi.SubGroups {

pkg/scheduler/api/podgroup_info/subgroup_info.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,15 @@ func (sgi *SubGroupInfo) IsReadyForScheduling() bool {
113113
}
114114

115115
func (sgi *SubGroupInfo) IsGangSatisfied() bool {
116-
numActiveTasks := sgi.GetNumActiveUsedTasks()
116+
numActiveTasks := sgi.GetNumActiveAllocatedTasks()
117117
return numActiveTasks >= int(sgi.minAvailable)
118118
}
119119

120+
func (sgi *SubGroupInfo) IsStale() bool {
121+
numActiveUsedTasks := sgi.GetNumActiveUsedTasks()
122+
return numActiveUsedTasks < int(sgi.minAvailable)
123+
}
124+
120125
func (sgi *SubGroupInfo) GetNumActiveAllocatedTasks() int {
121126
return sgi.numActiveAllocatedTasks
122127
}

pkg/scheduler/api/podgroup_info/subgroup_info_test.go

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,77 @@ func TestIsGangSatisfied(t *testing.T) {
254254
}
255255
}
256256

257+
func TestIsStale(t *testing.T) {
258+
tests := []struct {
259+
name string
260+
minAvailable int32
261+
pods []*pod_info.PodInfo
262+
expected bool
263+
}{
264+
{
265+
name: "not stale when used >= minAvailable",
266+
minAvailable: 2,
267+
pods: []*pod_info.PodInfo{
268+
{UID: "1", Status: pod_status.Running},
269+
{UID: "2", Status: pod_status.Pipelined},
270+
},
271+
expected: false,
272+
},
273+
{
274+
name: "not stale with releasing status counted as used",
275+
minAvailable: 2,
276+
pods: []*pod_info.PodInfo{
277+
{UID: "1", Status: pod_status.Running},
278+
{UID: "2", Status: pod_status.Releasing},
279+
},
280+
expected: false,
281+
},
282+
{
283+
name: "stale when used < minAvailable",
284+
minAvailable: 3,
285+
pods: []*pod_info.PodInfo{
286+
{UID: "1", Status: pod_status.Running},
287+
{UID: "2", Status: pod_status.Releasing},
288+
},
289+
expected: true,
290+
},
291+
{
292+
name: "stale when no used pods",
293+
minAvailable: 1,
294+
pods: []*pod_info.PodInfo{},
295+
expected: true,
296+
},
297+
{
298+
name: "not stale when used equals minAvailable",
299+
minAvailable: 1,
300+
pods: []*pod_info.PodInfo{
301+
{UID: "1", Status: pod_status.Releasing},
302+
},
303+
expected: false,
304+
},
305+
{
306+
name: "stale with only non-used statuses",
307+
minAvailable: 1,
308+
pods: []*pod_info.PodInfo{
309+
{UID: "1", Status: pod_status.Gated},
310+
},
311+
expected: true,
312+
},
313+
}
314+
315+
for _, tt := range tests {
316+
t.Run(tt.name, func(t *testing.T) {
317+
sgi := NewSubGroupInfo("test", tt.minAvailable)
318+
for _, pod := range tt.pods {
319+
sgi.AssignTask(pod)
320+
}
321+
if got := sgi.IsStale(); got != tt.expected {
322+
t.Errorf("IsStale() = %v, want %v", got, tt.expected)
323+
}
324+
})
325+
}
326+
}
327+
257328
func TestGetNumAliveTasks(t *testing.T) {
258329
sgi := NewSubGroupInfo("test", 2)
259330
pods := []*pod_info.PodInfo{

pkg/scheduler/cache/status_updater/default_status_updater.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ func (su *defaultStatusUpdater) recordStaleJobEvent(job *podgroup_info.PodGroupI
247247
job.GetNumActiveUsedTasks(), job.GetDefaultMinAvailable())
248248

249249
for _, subGroup := range job.GetActiveSubGroupInfos() {
250-
if !subGroup.IsGangSatisfied() {
250+
if subGroup.IsStale() {
251251
message += fmt.Sprintf(", subGroup %s minMember is %d and %d pods are active",
252252
subGroup.GetName(), subGroup.GetMinAvailable(), subGroup.GetNumActiveUsedTasks())
253253
}

0 commit comments

Comments
 (0)