-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Open
Description
I ran into a somewhat unique situation in which a POD had very high slab memory - high as in 1.1GB worth. In terms of anonymous and active file the memory usage was only around 25MB. Working set calculate shows 1.1GB due to the fact that slab reclaimable memory isn't subtracted from workingSet
calculation.
Working set calculation
ret.Memory.Usage = s.MemoryStats.Usage.Usage
workingSet := ret.Memory.Usage
if v, ok := s.MemoryStats.Stats[inactiveFileKeyName]; ok {
if workingSet < v {
workingSet = 0
} else {
workingSet -= v
}
}
ret.Memory.WorkingSet = workingSet
Where MemoryStats.Usage.Usage
is the value from memory.current
(cgroup v2) or memory.usage_in_bytes
(cgroup v1). Memory statistics (memory.stat) contains the following fields:
anon 663552
file 10313728
kernel_stack 49152
...
inactive_anon 573440
active_anon 32768
inactive_file 5066752
active_file 5246976
unevictable 0
slab_reclaimable 1232589368
slab_unreclaimable 128408
slab 1232717776
...
Of which slab_reclaimable
is memory that can be reclaimed by the OS when needed. Should we be subtracting this value when calculating workingSet
?
arosh, nikitka, vinhph0906, scharnyw, jtibshirani and 3 more
Metadata
Metadata
Assignees
Labels
No labels