Browse Source

update

tags/v1.22.11.1^2
liuzx 2 years ago
parent
commit
d3bc16efa4
2 changed files with 59 additions and 16 deletions
  1. +19
    -0
      models/cloudbrain_static.go
  2. +40
    -16
      routers/repo/cloudbrain_statistic.go

+ 19
- 0
models/cloudbrain_static.go View File

@@ -251,6 +251,25 @@ func GetCloudbrainCompleteByTime(beginTime int64, endTime int64) ([]*CloudbrainI
return cloudbrains, nil
}

func GetSpecByAiCenterCodeAndType(aiCenterCode string, accCardType string) ([]*CloudbrainSpec, error) {
sess := x.NewSession()
defer sess.Close()
var cond = builder.NewCond()
cond = cond.And(
builder.Eq{"cloudbrain_spec.ai_center_code": aiCenterCode},
)
cond = cond.And(
builder.Eq{"cloudbrain_spec.acc_card_type": accCardType},
)
sess.OrderBy("cloudbrain_spec.created_unix ASC limit 1")
cloudbrainSpecs := make([]*CloudbrainSpec, 0, 10)
if err := sess.Table(&CloudbrainSpec{}).Where(cond).
Find(&cloudbrainSpecs); err != nil {
log.Info("find error.")
}
return cloudbrainSpecs, nil
}

func InsertCloudbrainDurationStatistic(cloudbrainDurationStatistic *CloudbrainDurationStatistic) (int64, error) {
return xStatistic.Insert(cloudbrainDurationStatistic)
}

+ 40
- 16
routers/repo/cloudbrain_statistic.go View File

@@ -63,7 +63,31 @@ func CloudbrainDurationStatisticHour(ctx *context.Context) {
models.LoadSpecs4CloudbrainInfo(ciTasks)
log.Info("ciTasks here: %s", ciTasks)
log.Info("count here: %s", len(ciTasks))
cloudBrainCardRes := getCloudBrainCardRes(ciTasks, beginTime, endTime)
cloudBrainCenterCodeAndCardTypeInfo := getcloudBrainCenterCodeAndCardTypeInfo(ciTasks, beginTime, endTime)
for centerCode, CardTypeInfo := range cloudBrainCenterCodeAndCardTypeInfo {
for cardType, cardDuration := range CardTypeInfo {
cloudbrain, err := models.GetSpecByAiCenterCodeAndType(centerCode, cardType)
if err != nil {
log.Info("GetSpecByAiCenterCodeAndType err: %v", err)
return
}
cloudbrainDurationStat := models.CloudbrainDurationStatistic{
DateTime: date,
HourTime: userNumber,
Cluster: cloudbrain[0].Cluster,
AiCenterName: cloudbrain[0].AiCenterName,
AiCenterCode: centerCode,
ComputeResource: cloudbrain[0].ComputeResource,
AccCardType: cardType,
CardsTotalNum: mirrorRepositoryNumber,
CardsTotalDuration: cardDuration,
QueueCode: cloudbrain[0].QueueCode,
CreatedTime: privateRepositoryNumer,
UpdatedTime: publicRepositoryNumer,
}
}

}

//根据云脑任务列表获取云脑任务已使用的卡时,并区分是哪个智算中心,哪个卡类型的卡时,将这些信息存入新表

@@ -89,21 +113,21 @@ func CloudbrainDurationStatisticHour(ctx *context.Context) {
// cloudBrainDurationRes = append(cloudBrainDurationRes, cloudBrainOneCardRes)
// log.Info("cloudBrainDurationRes: %s", cloudBrainDurationRes)
// log.Info("cloudBrainOneCardRes: %s", cloudBrainOneCardRes)
log.Info("cloudBrainCardRes: %s", cloudBrainCardRes)
// log.Info("cloudBrainCardRes: %s", cloudBrainCardRes)
// log.Info("c2NetCardRes: %s", c2NetCardRes)
log.Info("finish summary cloudbrainDurationStat")
}

func getCloudBrainCardRes(ciTasks []*models.CloudbrainInfo, beginTime int64, endTime int64) map[string]map[string]int {
func getcloudBrainCenterCodeAndCardTypeInfo(ciTasks []*models.CloudbrainInfo, beginTime int64, endTime int64) map[string]map[string]int {
var WorkServerNumber int
var AccCardsNum int
// cloudBrainCardRes := make(map[string]int)
cloudBrainAicenterNameList := make(map[string]string)
cloudBrainAiCenterCodeList := make(map[string]string)
cloudBrainCardTypeList := make(map[string]string)
cloudBrainCenterNameAndCardType := make(map[string]map[string]int)
cloudBrainCenterCodeAndCardType := make(map[string]map[string]int)
for _, cloudbrain := range ciTasks {
if _, ok := cloudBrainAicenterNameList[cloudbrain.Cloudbrain.Spec.AiCenterName]; !ok {
cloudBrainAicenterNameList[cloudbrain.Cloudbrain.Spec.AiCenterName] = cloudbrain.Cloudbrain.Spec.AiCenterName
if _, ok := cloudBrainAiCenterCodeList[cloudbrain.Cloudbrain.Spec.AiCenterCode]; !ok {
cloudBrainAiCenterCodeList[cloudbrain.Cloudbrain.Spec.AiCenterCode] = cloudbrain.Cloudbrain.Spec.AiCenterCode
}

if cloudbrain.Cloudbrain.StartTime == 0 {
@@ -122,11 +146,11 @@ func getCloudBrainCardRes(ciTasks []*models.CloudbrainInfo, beginTime int64, end
} else {
AccCardsNum = cloudbrain.Cloudbrain.Spec.AccCardsNum
}
for k, _ := range cloudBrainAicenterNameList {
if cloudBrainCenterNameAndCardType[cloudBrainAicenterNameList[k]] == nil {
cloudBrainCenterNameAndCardType[cloudBrainAicenterNameList[k]] = make(map[string]int)
for k, _ := range cloudBrainAiCenterCodeList {
if cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]] == nil {
cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]] = make(map[string]int)
}
if cloudbrain.Cloudbrain.Spec.AiCenterName == cloudBrainAicenterNameList[k] {
if cloudbrain.Cloudbrain.Spec.AiCenterCode == cloudBrainAiCenterCodeList[k] {
if _, ok := cloudBrainCardTypeList[cloudbrain.Cloudbrain.Spec.AccCardType]; !ok {
cloudBrainCardTypeList[cloudbrain.Cloudbrain.Spec.AccCardType] = cloudbrain.Cloudbrain.Spec.AccCardType
}
@@ -134,15 +158,15 @@ func getCloudBrainCardRes(ciTasks []*models.CloudbrainInfo, beginTime int64, end
if cloudbrain.Cloudbrain.Spec.AccCardType == cloudBrainCardTypeList[i] {
if cloudbrain.Cloudbrain.Status == string(models.ModelArtsRunning) {
if int64(cloudbrain.Cloudbrain.StartTime) < beginTime {
cloudBrainCenterNameAndCardType[cloudBrainAicenterNameList[k]][cloudBrainCardTypeList[i]] += AccCardsNum * WorkServerNumber * (int(endTime) - int(beginTime))
cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]][cloudBrainCardTypeList[i]] += AccCardsNum * WorkServerNumber * (int(endTime) - int(beginTime))
} else {
cloudBrainCenterNameAndCardType[cloudBrainAicenterNameList[k]][cloudBrainCardTypeList[i]] += AccCardsNum * WorkServerNumber * (int(endTime) - int(cloudbrain.Cloudbrain.StartTime))
cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]][cloudBrainCardTypeList[i]] += AccCardsNum * WorkServerNumber * (int(endTime) - int(cloudbrain.Cloudbrain.StartTime))
}
} else {
if int64(cloudbrain.Cloudbrain.StartTime) < beginTime && int64(cloudbrain.Cloudbrain.EndTime) < endTime {
cloudBrainCenterNameAndCardType[cloudBrainAicenterNameList[k]][cloudBrainCardTypeList[i]] += AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(beginTime))
cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]][cloudBrainCardTypeList[i]] += AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(beginTime))
} else {
cloudBrainCenterNameAndCardType[cloudBrainAicenterNameList[k]][cloudBrainCardTypeList[i]] += AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(cloudbrain.Cloudbrain.StartTime))
cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]][cloudBrainCardTypeList[i]] += AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(cloudbrain.Cloudbrain.StartTime))
}
}
}
@@ -151,5 +175,5 @@ func getCloudBrainCardRes(ciTasks []*models.CloudbrainInfo, beginTime int64, end
}
}

return cloudBrainCenterNameAndCardType
return cloudBrainCenterCodeAndCardType
}

Loading…
Cancel
Save