func()

in perf-tools/framework/node_analyzer.go [130:152]


func (na *NodeAnalyzer) GetNodeResourceDistribution(tasksDistribution [][]*TaskStatus,
	resourceName string) [10][]int {
	// init node resources, key(string): <NodeID>, value([]int64): <CapacityResourceValue>, <AllocatedResourceValue>
	nodeResources := make(map[string][]int64)
	for nodeID, nodeInfo := range na.allocatableNodes {
		nodeResources[nodeID] = []int64{int64(nodeInfo.Capacity.Resources[resourceName]),
			int64(nodeInfo.AllocatedResource.GetResource().Resources[resourceName])}
	}
	// statistic the number of nodes in 10 buckets with different resource utilization levels
	// ([0%,10%), [10%,20%), ..., [90%,100%]) in every second
	var buckets [10][]int
	for _, tasksInCurSecond := range tasksDistribution {
		for _, taskStatus := range tasksInCurSecond {
			nodeResources[taskStatus.NodeID][1] += int64(taskStatus.RequestResources.Resources[resourceName])
		}
		// calculate current distribution
		bucketsInThisSecond := calculateResourceDistribution(nodeResources)
		for level, num := range bucketsInThisSecond {
			buckets[level] = append(buckets[level], num)
		}
	}
	return buckets
}