2022-05-23 08:41:58 +00:00
|
|
|
package querynode
|
|
|
|
|
|
|
|
import (
|
|
|
|
"container/list"
|
|
|
|
)
|
|
|
|
|
2022-07-04 07:10:20 +00:00
|
|
|
type scheduleReadTaskPolicy func(sqTasks *list.List, targetUsage int32, maxNum int32) ([]readTask, int32)
|
2022-05-23 08:41:58 +00:00
|
|
|
|
2022-07-04 07:10:20 +00:00
|
|
|
func defaultScheduleReadPolicy(sqTasks *list.List, targetUsage int32, maxNum int32) ([]readTask, int32) {
|
2022-05-23 08:41:58 +00:00
|
|
|
var ret []readTask
|
|
|
|
usage := int32(0)
|
2022-06-06 08:34:05 +00:00
|
|
|
var next *list.Element
|
2022-07-04 07:10:20 +00:00
|
|
|
for e := sqTasks.Front(); e != nil && maxNum > 0; e = next {
|
2022-06-06 08:34:05 +00:00
|
|
|
next = e.Next()
|
2022-05-23 08:41:58 +00:00
|
|
|
t, _ := e.Value.(readTask)
|
|
|
|
tUsage := t.CPUUsage()
|
|
|
|
if usage+tUsage > targetUsage {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
usage += tUsage
|
|
|
|
sqTasks.Remove(e)
|
2022-09-16 01:56:47 +00:00
|
|
|
rateCol.rtCounter.sub(t, readyQueueType)
|
2022-05-23 08:41:58 +00:00
|
|
|
ret = append(ret, t)
|
2022-07-04 07:10:20 +00:00
|
|
|
maxNum--
|
2022-05-23 08:41:58 +00:00
|
|
|
}
|
|
|
|
return ret, usage
|
|
|
|
}
|