From 51fe02661f65464c7a8f0a28f2cd93c56d2cf056 Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Wed, 12 Mar 2025 10:13:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Fix=20the=20problem=20of=20incorrect=20c?= =?UTF-8?q?alculation=20of=20container=20memory=20res=E2=80=A6=20(#8125)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs #8033 --- backend/app/service/container.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/app/service/container.go b/backend/app/service/container.go index eb6544c33..03dfdc301 100644 --- a/backend/app/service/container.go +++ b/backend/app/service/container.go @@ -941,21 +941,21 @@ func calculateCPUPercentUnix(stats *types.StatsJSON) float64 { func calculateMemPercentUnix(memStats types.MemoryStats) float64 { memPercent := 0.0 memUsage := calculateMemUsageUnixNoCache(memStats) - memLimit := float64(memStats.Limit) + memLimit := memStats.Limit if memUsage > 0.0 && memLimit > 0.0 { - memPercent = (memUsage / memLimit) * 100.0 + memPercent = (float64(memUsage) / float64(memLimit)) * 100.0 } return memPercent } -func calculateMemUsageUnixNoCache(mem types.MemoryStats) float64 { +func calculateMemUsageUnixNoCache(mem types.MemoryStats) uint64 { if v, isCgroup1 := mem.Stats["total_inactive_file"]; isCgroup1 && v < mem.Usage { - return float64(mem.Usage - v) + return mem.Usage - v } if v := mem.Stats["inactive_file"]; v < mem.Usage { - return float64(mem.Usage - v) + return mem.Usage - v } - return float64(mem.Usage) + return mem.Usage } func calculateBlockIO(blkio types.BlkioStats) (blkRead float64, blkWrite float64) { @@ -1075,7 +1075,7 @@ func loadCpuAndMem(client *client.Client, container string) dto.ContainerListSta data.PercpuUsage = len(stats.CPUStats.CPUUsage.PercpuUsage) data.MemoryCache = stats.MemoryStats.Stats["cache"] - data.MemoryUsage = stats.MemoryStats.Usage + data.MemoryUsage = calculateMemUsageUnixNoCache(stats.MemoryStats) data.MemoryLimit = stats.MemoryStats.Limit data.MemoryPercent = calculateMemPercentUnix(stats.MemoryStats)