summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiuseppe Scrivano <gscrivan@redhat.com>2020-02-11 19:48:23 +0100
committerGiuseppe Scrivano <gscrivan@redhat.com>2020-02-11 22:24:14 +0100
commit6215e1bb218a86c217a66e34f2abd043feca8582 (patch)
tree9212cebe74e4385685ea2d496a73b11418102205
parent4bdfeed5bf9c467c8ab53b392747ec722505b179 (diff)
downloadpodman-6215e1bb218a86c217a66e34f2abd043feca8582.tar.gz
podman-6215e1bb218a86c217a66e34f2abd043feca8582.tar.bz2
podman-6215e1bb218a86c217a66e34f2abd043feca8582.zip
api: fix the CPU stats reported
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
-rw-r--r--libpod/stats.go2
-rw-r--r--libpod/stats_config.go28
-rw-r--r--pkg/api/handlers/generic/containers_stats.go8
3 files changed, 21 insertions, 17 deletions
diff --git a/libpod/stats.go b/libpod/stats.go
index 3b5e0958c..6f42afd18 100644
--- a/libpod/stats.go
+++ b/libpod/stats.go
@@ -66,7 +66,9 @@ func (c *Container) GetContainerStats(previousStats *ContainerStats) (*Container
}
stats.BlockInput, stats.BlockOutput = calculateBlockIO(cgroupStats)
stats.CPUNano = cgroupStats.CPU.Usage.Total
+ stats.CPUSystemNano = cgroupStats.CPU.Usage.Kernel
stats.SystemNano = now
+ stats.PerCPU = cgroupStats.CPU.Usage.PerCPU
// Handle case where the container is not in a network namespace
if netStats != nil {
stats.NetInput = netStats.TxBytes
diff --git a/libpod/stats_config.go b/libpod/stats_config.go
index 9c7d97298..91d3d1493 100644
--- a/libpod/stats_config.go
+++ b/libpod/stats_config.go
@@ -2,17 +2,19 @@ package libpod
// ContainerStats contains the statistics information for a running container
type ContainerStats struct {
- ContainerID string
- Name string
- CPU float64
- CPUNano uint64
- SystemNano uint64
- MemUsage uint64
- MemLimit uint64
- MemPerc float64
- NetInput uint64
- NetOutput uint64
- BlockInput uint64
- BlockOutput uint64
- PIDs uint64
+ ContainerID string
+ Name string
+ PerCPU []uint64
+ CPU float64
+ CPUNano uint64
+ CPUSystemNano uint64
+ SystemNano uint64
+ MemUsage uint64
+ MemLimit uint64
+ MemPerc float64
+ NetInput uint64
+ NetOutput uint64
+ BlockInput uint64
+ BlockOutput uint64
+ PIDs uint64
}
diff --git a/pkg/api/handlers/generic/containers_stats.go b/pkg/api/handlers/generic/containers_stats.go
index f8804b5c0..cfc14786f 100644
--- a/pkg/api/handlers/generic/containers_stats.go
+++ b/pkg/api/handlers/generic/containers_stats.go
@@ -67,9 +67,9 @@ func StatsContainer(w http.ResponseWriter, r *http.Request) {
preCPUStats = docker.CPUStats{
CPUUsage: docker.CPUUsage{
TotalUsage: stats.CPUNano,
- PercpuUsage: []uint64{uint64(stats.CPU)},
- UsageInKernelmode: 0,
- UsageInUsermode: 0,
+ PercpuUsage: stats.PerCPU,
+ UsageInKernelmode: stats.CPUSystemNano,
+ UsageInUsermode: stats.CPUNano - stats.CPUSystemNano,
},
SystemUsage: 0,
OnlineCPUs: 0,
@@ -146,7 +146,7 @@ func StatsContainer(w http.ResponseWriter, r *http.Request) {
CPUStats: docker.CPUStats{
CPUUsage: docker.CPUUsage{
TotalUsage: cgroupStat.CPU.Usage.Total,
- PercpuUsage: []uint64{uint64(stats.CPU)},
+ PercpuUsage: cgroupStat.CPU.Usage.PerCPU,
UsageInKernelmode: cgroupStat.CPU.Usage.Kernel,
UsageInUsermode: cgroupStat.CPU.Usage.Total - cgroupStat.CPU.Usage.Kernel,
},