1
0
mirror of https://github.com/kata-containers/kata-containers.git synced 2025-08-20 08:54:03 +00:00

runtime: fix reading cgroup stats of sandboxes

The cgroup stats come from resourcecontrol package in the form of pointers
to structs. The sandbox Stat() method incorrectly was expecting structs.
This caused the cpu and memory stats to always be 0, which in turn caused
incorrect pod overhead metrics.

Fixes 

Signed-off-by: Peteris Rudzusiks <rye@stripe.com>
This commit is contained in:
Peteris Rudzusiks 2023-09-21 00:33:59 +02:00
parent dd27912f31
commit 94e2ccc2d5

View File

@ -1742,12 +1742,14 @@ func (s *Sandbox) Stats(ctx context.Context) (SandboxStats, error) {
// TODO Do we want to aggregate the overhead cgroup stats to the sandbox ones? // TODO Do we want to aggregate the overhead cgroup stats to the sandbox ones?
switch mt := metrics.(type) { switch mt := metrics.(type) {
case v1.Metrics: case *v1.Metrics:
stats.CgroupStats.CPUStats.CPUUsage.TotalUsage = mt.CPU.Usage.Total stats.CgroupStats.CPUStats.CPUUsage.TotalUsage = mt.CPU.Usage.Total
stats.CgroupStats.MemoryStats.Usage.Usage = mt.Memory.Usage.Usage stats.CgroupStats.MemoryStats.Usage.Usage = mt.Memory.Usage.Usage
case v2.Metrics: case *v2.Metrics:
stats.CgroupStats.CPUStats.CPUUsage.TotalUsage = mt.CPU.UsageUsec stats.CgroupStats.CPUStats.CPUUsage.TotalUsage = mt.CPU.UsageUsec
stats.CgroupStats.MemoryStats.Usage.Usage = mt.Memory.Usage stats.CgroupStats.MemoryStats.Usage.Usage = mt.Memory.Usage
default:
return SandboxStats{}, fmt.Errorf("unknown metrics type %T", mt)
} }
tids, err := s.hypervisor.GetThreadIDs(ctx) tids, err := s.hypervisor.GetThreadIDs(ctx)