api: fix the CPU stats reported

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano
2020-02-11 19:48:23 +01:00
parent 4bdfeed5bf
commit 6215e1bb21
3 changed files with 21 additions and 17 deletions

View File

@ -66,7 +66,9 @@ func (c *Container) GetContainerStats(previousStats *ContainerStats) (*Container
} }
stats.BlockInput, stats.BlockOutput = calculateBlockIO(cgroupStats) stats.BlockInput, stats.BlockOutput = calculateBlockIO(cgroupStats)
stats.CPUNano = cgroupStats.CPU.Usage.Total stats.CPUNano = cgroupStats.CPU.Usage.Total
stats.CPUSystemNano = cgroupStats.CPU.Usage.Kernel
stats.SystemNano = now stats.SystemNano = now
stats.PerCPU = cgroupStats.CPU.Usage.PerCPU
// Handle case where the container is not in a network namespace // Handle case where the container is not in a network namespace
if netStats != nil { if netStats != nil {
stats.NetInput = netStats.TxBytes stats.NetInput = netStats.TxBytes

View File

@ -4,8 +4,10 @@ package libpod
type ContainerStats struct { type ContainerStats struct {
ContainerID string ContainerID string
Name string Name string
PerCPU []uint64
CPU float64 CPU float64
CPUNano uint64 CPUNano uint64
CPUSystemNano uint64
SystemNano uint64 SystemNano uint64
MemUsage uint64 MemUsage uint64
MemLimit uint64 MemLimit uint64

View File

@ -67,9 +67,9 @@ func StatsContainer(w http.ResponseWriter, r *http.Request) {
preCPUStats = docker.CPUStats{ preCPUStats = docker.CPUStats{
CPUUsage: docker.CPUUsage{ CPUUsage: docker.CPUUsage{
TotalUsage: stats.CPUNano, TotalUsage: stats.CPUNano,
PercpuUsage: []uint64{uint64(stats.CPU)}, PercpuUsage: stats.PerCPU,
UsageInKernelmode: 0, UsageInKernelmode: stats.CPUSystemNano,
UsageInUsermode: 0, UsageInUsermode: stats.CPUNano - stats.CPUSystemNano,
}, },
SystemUsage: 0, SystemUsage: 0,
OnlineCPUs: 0, OnlineCPUs: 0,
@ -146,7 +146,7 @@ func StatsContainer(w http.ResponseWriter, r *http.Request) {
CPUStats: docker.CPUStats{ CPUStats: docker.CPUStats{
CPUUsage: docker.CPUUsage{ CPUUsage: docker.CPUUsage{
TotalUsage: cgroupStat.CPU.Usage.Total, TotalUsage: cgroupStat.CPU.Usage.Total,
PercpuUsage: []uint64{uint64(stats.CPU)}, PercpuUsage: cgroupStat.CPU.Usage.PerCPU,
UsageInKernelmode: cgroupStat.CPU.Usage.Kernel, UsageInKernelmode: cgroupStat.CPU.Usage.Kernel,
UsageInUsermode: cgroupStat.CPU.Usage.Total - cgroupStat.CPU.Usage.Kernel, UsageInUsermode: cgroupStat.CPU.Usage.Total - cgroupStat.CPU.Usage.Kernel,
}, },