Achilleas Tzenetopoulos hace 5 años
padre
commit
52536ed00b

+ 29 - 9
kubernetes-v1.15.4/pkg/scheduler/algorithm/priorities/custom_resource_allocation.go

@@ -202,6 +202,7 @@ func customResourceScorer(nodeName string) (float64, error) {
 	curr_uuid, ok := Nodes[nodeName]
 	socket, _ := Sockets[nodeName]
 	// cores, _ := Cores[nodeName]
+	var socketNodes []string
 
 	if ok {
 
@@ -211,13 +212,32 @@ func customResourceScorer(nodeName string) (float64, error) {
 		numberOfRows := int(float32(time) / cfg.MonitoringSpecs.TimeInterval)
 
 		// Define Core availability
-		r, err := queryInfluxDbCores(metrics, curr_uuid, socket, numberOfRows, cfg, c, cores)
-		if err != nil {
-			klog.Infof("Error in querying or calculating core availability in the first stage: %v", err.Error())
+		// Select all the nodes belonging to the current socket
+		for kubenode, s := range Sockets {
+			if s == socket {
+				socketNodes = append(socketNodes, kubenode)
+			}
 		}
-		average, err := calculateWeightedAverageCores(r, numberOfRows, len(metrics), len(cores))
-		if err != nil {
-			klog.Infof("Error defining core availability")
+		sum := 0
+		socketSum := 0.0
+		socketCores := 0
+		for _, snode := range socketNodes {
+			currCores, _ := Cores[snode]
+			r, err := queryInfluxDbCores(metrics, curr_uuid, socket, numberOfRows, cfg, c, currCores)
+			//r, err := queryInfluxDbSocket(metrics, curr_uuid, socket, numberOfRows, cfg, c)
+			if err != nil {
+				klog.Infof("Error in querying or calculating core availability in the first stage: %v", err.Error())
+			}
+			average, err := calculateWeightedAverageCores(r, numberOfRows, len(metrics), len(currCores))
+			if err != nil {
+				klog.Infof("Error defining core availability")
+			}
+			if average["c6res"]*float64(len(currCores)) >= 1 {
+				klog.Infof("Node %v has C6 sum: %v", snode, average["c6res"]*float64(len(currCores)))
+				sum++
+			}
+			socketSum += average["c6res"] * float64(len(currCores))
+			socketCores += len(currCores)
 		}
 
 		// Select Socket
@@ -231,9 +251,9 @@ func customResourceScorer(nodeName string) (float64, error) {
 
 		//klog.Infof("Node: %v\t res before: %v", nodeName, res)
 
-		if sum := average["c6res"] * float64(len(cores)); sum < 1 {
-			//klog.Infof("Average C6 is less than 1, so we get: %v", average["c6res"])
-			res = res * average["c6res"]
+		if sum < 1 {
+			klog.Infof("Less than 1 node is available\nC6contribution: %v", socketSum/socketCores)
+			res = res * socketSum / socketCores
 		} else {
 			res = res * 1
 		}

+ 1 - 1
kubernetes-v1.15.4/pkg/scheduler/algorithm/priorities/infrastructure.go

@@ -193,7 +193,7 @@ var Cores = map[string][]int{
 	"kube-03": []int{40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55},
 	"kube-04": []int{24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75},
 	"kube-05": []int{0, 1, 2, 3},
-	"kube-06": []int{12, 13, 14, 15, 16, 17, 18, 19},
+	//"kube-06": []int{12, 13, 14, 15, 16, 17, 18, 19},
 	"kube-07": []int{4, 5, 6, 7, 8, 9, 10, 11, 24, 25, 26, 27, 28, 29, 30, 31},
 	"kube-08": []int{20, 21, 22, 23, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47},
 }