in perf-tools/framework/app_analyzer.go [54:74]
func (aa *AppAnalyzer) GetTasksDistributionInfo(nodeInfos map[string]*NodeInfo) *TasksDistributionInfo {
nodeInfoSlice := make([]*NodeInfo, len(nodeInfos))
i := 0
for _, nodeInfo := range nodeInfos {
nodeInfoSlice[i] = nodeInfo
i++
}
sort.SliceStable(nodeInfoSlice, func(i, j int) bool {
return len(nodeInfoSlice[i].Tasks) < len(nodeInfoSlice[j].Tasks)
})
leastNodeInfo := nodeInfoSlice[0]
mostNodeInfo := nodeInfoSlice[len(nodeInfoSlice)-1]
return &TasksDistributionInfo{
LeastNum: len(leastNodeInfo.Tasks),
LeastNumNodeID: leastNodeInfo.NodeID,
MostNum: len(mostNodeInfo.Tasks),
MostNumNodeID: mostNodeInfo.NodeID,
AvgNum: float64(len(aa.appInfo.TasksStatus)) / float64(len(nodeInfoSlice)),
SortedNodeInfos: nodeInfoSlice,
}
}