diff --git a/docker/client.go b/docker/client.go index 63d0fea4..899cf02a 100644 --- a/docker/client.go +++ b/docker/client.go @@ -138,14 +138,20 @@ func (d *dockerClient) ContainerStats(ctx context.Context, id string, stats chan log.Errorf("decoder for stats api returned an unknown error %v", err) } + ncpus := uint8(v.CPUStats.OnlineCPUs) + if ncpus == 0 { + ncpus = uint8(len(v.CPUStats.CPUUsage.PercpuUsage)) + } + var ( cpuDelta = float64(v.CPUStats.CPUUsage.TotalUsage) - float64(v.PreCPUStats.CPUUsage.TotalUsage) systemDelta = float64(v.CPUStats.SystemUsage) - float64(v.PreCPUStats.SystemUsage) - cpuPercent = int64((cpuDelta / systemDelta) * float64(len(v.CPUStats.CPUUsage.PercpuUsage)) * 100) + cpuPercent = int64((cpuDelta / systemDelta) * float64(ncpus) * 100) memUsage = int64(v.MemoryStats.Usage - v.MemoryStats.Stats["cache"]) memPercent = int64(float64(memUsage) / float64(v.MemoryStats.Limit) * 100) ) + if cpuPercent > 0 || memUsage > 0 { select { case <-ctx.Done():