Skip to content

Commit ef98eb4

Browse files
committed
cgroupv2: fix swap accounting
Since runsc v1.0.0-rc94 `stats.MemoryStats.SwapUsage` on cgroupv2 includes memory usage: * opencontainers/runc@b99ca25ad0f This results in wrong metrics: ``` container_memory_rss{id="/system.slice/qs-dnsv2.service"} 9.173716992e+09 1635890983582 container_memory_swap{id="/system.slice/qs-dnsv2.service"} 1.249011712e+10 1635890983582 container_memory_usage_bytes{id="/system.slice/qs-dnsv2.service"} 1.249011712e+10 1635890983582 ``` Here my service dosn't have any swapped pages, yet it reports all memory as swapped.
1 parent 34bbefa commit ef98eb4

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

container/libcontainer/handler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -806,7 +806,7 @@ func setMemoryStats(s *cgroups.Stats, ret *info.ContainerStats) {
806806
if cgroups.IsCgroup2UnifiedMode() {
807807
ret.Memory.Cache = s.MemoryStats.Stats["file"]
808808
ret.Memory.RSS = s.MemoryStats.Stats["anon"]
809-
ret.Memory.Swap = s.MemoryStats.SwapUsage.Usage
809+
ret.Memory.Swap = s.MemoryStats.SwapUsage.Usage - s.MemoryStats.Usage.Usage
810810
ret.Memory.MappedFile = s.MemoryStats.Stats["file_mapped"]
811811
} else if s.MemoryStats.UseHierarchy {
812812
ret.Memory.Cache = s.MemoryStats.Stats["total_cache"]

0 commit comments

Comments
 (0)