|
@@ -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
|
|
|
}
|