diff --git a/api/tasks.go b/api/tasks.go index 153aa0b60..7030e6bfe 100644 --- a/api/tasks.go +++ b/api/tasks.go @@ -13,7 +13,7 @@ type MemoryStats struct { KernelMaxUsage uint64 } -type CpuUsage struct { +type CpuStats struct { SystemMode float64 UserMode float64 ThrottledPeriods uint64 @@ -23,7 +23,7 @@ type CpuUsage struct { type TaskResourceUsage struct { MemoryStats *MemoryStats - CpuStats *CpuUsage + CpuStats *CpuStats } // RestartPolicy defines how the Nomad client restarts diff --git a/client/driver/docker.go b/client/driver/docker.go index 22f3042ed..ef35e682b 100644 --- a/client/driver/docker.go +++ b/client/driver/docker.go @@ -991,7 +991,7 @@ func (h *DockerHandle) monitorUsage() { MaxUsage: s.MemoryStats.MaxUsage, } - cs := &cstructs.CpuUsage{ + cs := &cstructs.CpuStats{ SystemMode: float64(s.CPUStats.CPUUsage.UsageInKernelmode), UserMode: float64(s.CPUStats.CPUUsage.UsageInKernelmode), ThrottledPeriods: s.CPUStats.ThrottlingData.ThrottledPeriods, diff --git a/client/driver/executor/executor.go b/client/driver/executor/executor.go index 36dbfa510..26d7ff59d 100644 --- a/client/driver/executor/executor.go +++ b/client/driver/executor/executor.go @@ -497,7 +497,7 @@ func (e *UniversalExecutor) PidStats() (map[int]*cstructs.TaskResourceUsage, err ms.Swap = memInfo.Swap } - cs := &cstructs.CpuUsage{} + cs := &cstructs.CpuStats{} if cpuStats, err := p.Times(); err == nil { cs.SystemMode = cpuStats.System cs.UserMode = cpuStats.User @@ -739,7 +739,7 @@ func (e *UniversalExecutor) resourceUsagePids() (*cstructs.TaskResourceUsage, er totalSwap += rs.MemoryStats.Swap } - totalCPU := &cstructs.CpuUsage{ + totalCPU := &cstructs.CpuStats{ SystemMode: systemModeCPU, UserMode: userModeCPU, Percent: percent, diff --git a/client/driver/executor/executor_linux.go b/client/driver/executor/executor_linux.go index cbbb27b24..0588ec9b6 100644 --- a/client/driver/executor/executor_linux.go +++ b/client/driver/executor/executor_linux.go @@ -151,14 +151,14 @@ func (e *UniversalExecutor) Stats() (*cstructs.TaskResourceUsage, error) { } // CPU Related Stats - totalProcessCPUUsage := stats.CpuStats.CpuUsage.TotalUsage - userModeTime := stats.CpuStats.CpuUsage.UsageInUsermode - kernelModeTime := stats.CpuStats.CpuUsage.UsageInKernelmode + totalProcessCPUUsage := stats.CpuStats.CpuStats.TotalUsage + userModeTime := stats.CpuStats.CpuStats.UsageInUsermode + kernelModeTime := stats.CpuStats.CpuStats.UsageInKernelmode umTicks := (userModeTime * clockTicks) / nanosecondsInSecond kmTicks := (kernelModeTime * clockTicks) / nanosecondsInSecond - cs := &cstructs.CpuUsage{ + cs := &cstructs.CpuStats{ SystemMode: float64(kmTicks), UserMode: float64(umTicks), ThrottledPeriods: stats.CpuStats.ThrottlingData.ThrottledPeriods, diff --git a/client/driver/structs/structs.go b/client/driver/structs/structs.go index 2550e281d..4ce7e3997 100644 --- a/client/driver/structs/structs.go +++ b/client/driver/structs/structs.go @@ -85,6 +85,7 @@ type CheckResult struct { Err error } +// MemoryStats holds memory usage related stats type MemoryStats struct { RSS uint64 Cache uint64 @@ -94,7 +95,8 @@ type MemoryStats struct { KernelMaxUsage uint64 } -type CpuUsage struct { +// CpuStats holds cpu usage related stats +type CpuStats struct { SystemMode float64 UserMode float64 ThrottledPeriods uint64 @@ -102,8 +104,10 @@ type CpuUsage struct { Percent float64 } +// TaskResourceUsage holds aggregated resource usage of all processes in a Task +// and the resource usage of the individual pids type TaskResourceUsage struct { MemoryStats *MemoryStats - CpuStats *CpuUsage + CpuStats *CpuStats Timestamp time.Time }