Browse Source

update loadpriority

pull/370/head
tzwang 11 months ago
parent
commit
20b1fdbbba
4 changed files with 89 additions and 21 deletions
  1. +33
    -3
      internal/scheduler/strategy/loadPriority.go
  2. +9
    -0
      internal/storeLink/openi.go
  3. +46
    -17
      internal/storeLink/shuguangai.go
  4. +1
    -1
      internal/storeLink/storeLink.go

+ 33
- 3
internal/scheduler/strategy/loadPriority.go View File

@@ -1,7 +1,12 @@
package strategy package strategy


import (
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service/collector"
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/storeLink"
)

type LoadPriority struct { type LoadPriority struct {
replicas int32
Replicas int32
Clusters []*CLusterLoad Clusters []*CLusterLoad
} }


@@ -11,6 +16,31 @@ type CLusterLoad struct {
TaskPredictedNum int64 TaskPredictedNum int64
} }


func NewLoadPriority() *LoadPriority {
return &LoadPriority{}
func NewLoadPriority(replicas int32, resources []*collector.ResourceSpec) *LoadPriority {
var clusters []*CLusterLoad

for _, resource := range resources {
if resource.ClusterId == "" {
continue
}
cluster := &CLusterLoad{
ClusterId: resource.ClusterId,
}
for _, res := range resource.Resources {
r, ok := res.(*collector.Usage)
if !ok {
continue
}
switch r.Type {
case storeLink.RUNNINGTASK:
num, ok := r.Total.Value.(int64)
if !ok {
continue
}
cluster.TaskRunningNum = num
}
}
clusters = append(clusters, cluster)
}
return &LoadPriority{Replicas: replicas, Clusters: clusters}
} }

+ 9
- 0
internal/storeLink/openi.go View File

@@ -346,6 +346,15 @@ func (o OpenI) GetResourceSpecs(ctx context.Context) (*collector.ResourceSpec, e
} }
}() }()


go func() {
rate := &collector.Usage{
Type: strings.ToUpper(RATE),
Total: &collector.UnitValue{Unit: PERHOUR, Value: 1},
}

ch <- rate
}()

go func() { go func() {
wg.Wait() wg.Wait()
close(ch) close(ch)


+ 46
- 17
internal/storeLink/shuguangai.go View File

@@ -1005,12 +1005,12 @@ func (s *ShuguangAi) CheckModelExistence(ctx context.Context, name string, mtype


func (s *ShuguangAi) GetResourceSpecs(ctx context.Context) (*collector.ResourceSpec, error) { func (s *ShuguangAi) GetResourceSpecs(ctx context.Context) (*collector.ResourceSpec, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
wg.Add(4)

var uwg sync.WaitGroup
wg.Add(2)
uwg.Add(4)
var ch = make(chan *collector.Usage, 2) var ch = make(chan *collector.Usage, 2)
var qCh = make(chan *collector.Usage, 2) var qCh = make(chan *collector.Usage, 2)
var uCh = make(chan *collector.Usage) var uCh = make(chan *collector.Usage)
defer close(uCh)


resUsage := &collector.ResourceSpec{ resUsage := &collector.ResourceSpec{
ClusterId: strconv.FormatInt(s.participantId, 10), ClusterId: strconv.FormatInt(s.participantId, 10),
@@ -1041,12 +1041,15 @@ func (s *ShuguangAi) GetResourceSpecs(ctx context.Context) (*collector.ResourceS


queChargeRate, _ := strconv.ParseFloat(data.QueChargeRate, 64) queChargeRate, _ := strconv.ParseFloat(data.QueChargeRate, 64)


rate := &collector.Usage{
Type: strings.ToUpper(RATE),
Total: &collector.UnitValue{Unit: PERHOUR, Value: queChargeRate},
}
go func() {
defer uwg.Done()
rate := &collector.Usage{
Type: strings.ToUpper(RATE),
Total: &collector.UnitValue{Unit: PERHOUR, Value: queChargeRate},
}


uCh <- rate
uCh <- rate
}()


var freeNodes int64 var freeNodes int64
var cpuPerNode int64 var cpuPerNode int64
@@ -1080,8 +1083,32 @@ func (s *ShuguangAi) GetResourceSpecs(ctx context.Context) (*collector.ResourceS
if err != nil { if err != nil {
return return
} }

run := &collector.Usage{}
run.Type = strings.ToUpper(RUNNINGTASK)

if len(jobList.Jobs) == 0 { if len(jobList.Jobs) == 0 {
go func() {
defer uwg.Done()
run.Total = &collector.UnitValue{
Unit: NUMBER,
Value: 0,
}

uCh <- run
}()

return return
} else {
go func() {
defer uwg.Done()
run.Total = &collector.UnitValue{
Unit: NUMBER,
Value: len(jobList.Jobs),
}

uCh <- run
}()
} }


var cpureqed atomic.Int64 var cpureqed atomic.Int64
@@ -1091,19 +1118,18 @@ func (s *ShuguangAi) GetResourceSpecs(ctx context.Context) (*collector.ResourceS
jwg.Add(1) jwg.Add(1)
job := j job := j
go func() { go func() {
defer jwg.Done()
h := http.Request{} h := http.Request{}
jreq := &hpcAC.JobDetailReq{ jreq := &hpcAC.JobDetailReq{
JobId: job.JobId, JobId: job.JobId,
} }
detail, err := s.aCRpc.GetJobDetail(h.Context(), jreq) detail, err := s.aCRpc.GetJobDetail(h.Context(), jreq)
if err != nil || detail.Data == nil { if err != nil || detail.Data == nil {
jwg.Done()
return return
} }


cpureqed.Add(int64(detail.Data.ProcNumReq)) cpureqed.Add(int64(detail.Data.ProcNumReq))
dcureqed.Add(int64(detail.Data.DcuNumReq)) dcureqed.Add(int64(detail.Data.DcuNumReq))
jwg.Done()
}() }()
} }
jwg.Wait() jwg.Wait()
@@ -1139,7 +1165,7 @@ func (s *ShuguangAi) GetResourceSpecs(ctx context.Context) (*collector.ResourceS


// 查询用户共享存储配额及使用量 // 查询用户共享存储配额及使用量
go func() { go func() {
defer wg.Done()
defer uwg.Done()
diskReq := &hpcAC.ParaStorQuotaReq{} diskReq := &hpcAC.ParaStorQuotaReq{}
diskResp, err := s.aCRpc.ParaStorQuota(ctx, diskReq) diskResp, err := s.aCRpc.ParaStorQuota(ctx, diskReq)
if err != nil { if err != nil {
@@ -1167,7 +1193,7 @@ func (s *ShuguangAi) GetResourceSpecs(ctx context.Context) (*collector.ResourceS


// 查询用户信息 // 查询用户信息
go func() { go func() {
defer wg.Done()
defer uwg.Done()
userReq := &hpcAC.GetUserInfoReq{} userReq := &hpcAC.GetUserInfoReq{}
userinfo, err := s.aCRpc.GetUserInfo(ctx, userReq) userinfo, err := s.aCRpc.GetUserInfo(ctx, userReq)
if err != nil { if err != nil {
@@ -1187,11 +1213,16 @@ func (s *ShuguangAi) GetResourceSpecs(ctx context.Context) (*collector.ResourceS
}() }()


go func() { go func() {
for v := range uCh {
resources = append(resources, v)
}
uwg.Wait()
close(uCh)
}() }()


for v := range uCh {
resources = append(resources, v)
}

wg.Wait()

if len(qCh) == 0 { if len(qCh) == 0 {
for v := range ch { for v := range ch {
v.Available = v.Total v.Available = v.Total
@@ -1203,8 +1234,6 @@ func (s *ShuguangAi) GetResourceSpecs(ctx context.Context) (*collector.ResourceS
} }
} }


wg.Wait()

resUsage.Resources = resources resUsage.Resources = resources


return resUsage, nil return resUsage, nil


+ 1
- 1
internal/storeLink/storeLink.go View File

@@ -73,7 +73,7 @@ const (
DEPLOY_INSTANCE_PREFIEX = "infer" DEPLOY_INSTANCE_PREFIEX = "infer"
BALANCE = "balance" BALANCE = "balance"
RATE = "rate" RATE = "rate"
PERHOUR = "rmb-per-hour"
PERHOUR = "per-hour"
NUMBER = "number" NUMBER = "number"
KILOBYTE = "kb" KILOBYTE = "kb"
CPUCORE = "core" CPUCORE = "core"


Loading…
Cancel
Save