Removed Degree of Collocation logger.
This commit is contained in:
parent
39ba273d1a
commit
bcc2b4e4cc
10 changed files with 6 additions and 179 deletions
43
pcp/pcp.go
43
pcp/pcp.go
|
@ -2,21 +2,16 @@ package pcp
|
|||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"log"
|
||||
"os/exec"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/mesos/mesos-go/api/v0/scheduler"
|
||||
"github.com/montanaflynn/stats"
|
||||
elekLogDef "gitlab.com/spdf/elektron/logging/def"
|
||||
"gitlab.com/spdf/elektron/schedulers"
|
||||
)
|
||||
|
||||
func Start(quit chan struct{}, logging *bool, logMType chan elekLogDef.LogMessageType,
|
||||
logMsg chan string, pcpConfigFile string, s scheduler.Scheduler) {
|
||||
baseSchedRef := s.(*schedulers.BaseScheduler)
|
||||
logMsg chan string, pcpConfigFile string) {
|
||||
var pcpCommand string = "pmdumptext -m -l -f '' -t 1.0 -d , -c " + pcpConfigFile
|
||||
cmd := exec.Command("sh", "-c", pcpCommand)
|
||||
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
|
||||
|
@ -37,9 +32,6 @@ func Start(quit chan struct{}, logging *bool, logMType chan elekLogDef.LogMessag
|
|||
logMType <- elekLogDef.PCP
|
||||
logMsg <- scanner.Text()
|
||||
|
||||
logMType <- elekLogDef.DEG_COL
|
||||
logMsg <- "CPU Variance, CPU Task Share Variance, Memory Variance, Memory Task Share Variance"
|
||||
|
||||
// Throw away first set of results
|
||||
scanner.Scan()
|
||||
|
||||
|
@ -54,39 +46,6 @@ func Start(quit chan struct{}, logging *bool, logMType chan elekLogDef.LogMessag
|
|||
}
|
||||
|
||||
seconds++
|
||||
|
||||
memUtils := MemUtilPerNode(text)
|
||||
memTaskShares := make([]float64, len(memUtils))
|
||||
|
||||
cpuUtils := CpuUtilPerNode(text)
|
||||
cpuTaskShares := make([]float64, len(cpuUtils))
|
||||
|
||||
for i := 0; i < 8; i++ {
|
||||
host := fmt.Sprintf("stratos-00%d.cs.binghamton.edu", i+1)
|
||||
if slaveID, ok := baseSchedRef.HostNameToSlaveID[host]; ok {
|
||||
baseSchedRef.TasksRunningMutex.Lock()
|
||||
tasksRunning := len(baseSchedRef.Running[slaveID])
|
||||
baseSchedRef.TasksRunningMutex.Unlock()
|
||||
if tasksRunning > 0 {
|
||||
cpuTaskShares[i] = cpuUtils[i] / float64(tasksRunning)
|
||||
memTaskShares[i] = memUtils[i] / float64(tasksRunning)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Variance in resource utilization shows how the current workload has been distributed.
|
||||
// However, if the number of tasks running are not equally distributed, utilization variance figures become
|
||||
// less relevant as they do not express the distribution of CPU intensive tasks.
|
||||
// We thus also calculate `task share variance`, which basically signifies how the workload is distributed
|
||||
// across each node per share.
|
||||
|
||||
cpuVariance, _ := stats.Variance(cpuUtils)
|
||||
cpuTaskSharesVariance, _ := stats.Variance(cpuTaskShares)
|
||||
memVariance, _ := stats.Variance(memUtils)
|
||||
memTaskSharesVariance, _ := stats.Variance(memTaskShares)
|
||||
|
||||
logMType <- elekLogDef.DEG_COL
|
||||
logMsg <- fmt.Sprintf("%f, %f, %f, %f", cpuVariance, cpuTaskSharesVariance, memVariance, memTaskSharesVariance)
|
||||
}
|
||||
}(logging)
|
||||
|
||||
|
|
26
pcp/utils.go
26
pcp/utils.go
|
@ -3,8 +3,6 @@ package pcp
|
|||
import (
|
||||
"container/ring"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var RAPLUnits = math.Pow(2, -32)
|
||||
|
@ -49,27 +47,3 @@ func AverageClusterPowerHistory(history *ring.Ring) float64 {
|
|||
|
||||
return (total / count)
|
||||
}
|
||||
|
||||
func utilization(used string, free string) float64 {
|
||||
u, _ := strconv.ParseFloat(used, 64)
|
||||
f, _ := strconv.ParseFloat(free, 64)
|
||||
return u / (u + f)
|
||||
}
|
||||
|
||||
func CpuUtilPerNode(text string) []float64 {
|
||||
tokenSlice := strings.Split(text, ",")
|
||||
cpuUtil := make([]float64, 8)
|
||||
for i := 0; i < 8; i++ {
|
||||
cpuUtil[i] = utilization(tokenSlice[8+i], tokenSlice[24+i])
|
||||
}
|
||||
return cpuUtil
|
||||
}
|
||||
|
||||
func MemUtilPerNode(text string) []float64 {
|
||||
tokenSlice := strings.Split(text, ",")
|
||||
memUtil := make([]float64, 8)
|
||||
for i := 0; i < 8; i++ {
|
||||
memUtil[i] = utilization(tokenSlice[40+i], tokenSlice[32+i])
|
||||
}
|
||||
return memUtil
|
||||
}
|
||||
|
|
Reference in a new issue