Skip to content

Commit 4787e13

Browse files
authored
Merge pull request #99 from coroot/cgroup_v2_memory
fix container RSS memory calculation with cgroup v2 stats
2 parents e46f8d8 + b8211bf commit 4787e13

File tree

2 files changed

+3
-7
lines changed

2 files changed

+3
-7
lines changed

cgroup/memory.go

+1-5
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,13 @@ func (cg *Cgroup) memoryStatV1() (*MemoryStat, error) {
4747
}
4848

4949
func (cg *Cgroup) memoryStatV2() (*MemoryStat, error) {
50-
current, err := readUintFromFile(path.Join(cgRoot, cg.subsystems[""], "memory.current"))
51-
if err != nil {
52-
return nil, err
53-
}
5450
vars, err := readVariablesFromFile(path.Join(cgRoot, cg.subsystems[""], "memory.stat"))
5551
if err != nil {
5652
return nil, err
5753
}
5854
limit, _ := readUintFromFile(path.Join(cgRoot, cg.subsystems[""], "memory.max"))
5955
return &MemoryStat{
60-
RSS: current - vars["file"],
56+
RSS: vars["anon"] + vars["file_mapped"],
6157
Cache: vars["file"],
6258
Limit: limit,
6359
}, nil

cgroup/memory_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ func TestCgroup_MemoryStat(t *testing.T) {
2525
cg, _ = NewFromProcessCgroupFile(path.Join("fixtures/proc/400/cgroup"))
2626
stat, err = cg.MemoryStat()
2727
assert.Nil(t, err)
28-
assert.Equal(t, uint64(48648192-1044480), stat.RSS)
28+
assert.Equal(t, uint64(44892160+0), stat.RSS)
2929
assert.Equal(t, uint64(1044480), stat.Cache)
3030
assert.Equal(t, uint64(0), stat.Limit)
3131

3232
cg, _ = NewFromProcessCgroupFile(path.Join("fixtures/proc/500/cgroup"))
3333
stat, err = cg.MemoryStat()
3434
assert.Nil(t, err)
35-
assert.Equal(t, uint64(131047424-50835456), stat.RSS)
35+
assert.Equal(t, uint64(75247616+4038656), stat.RSS)
3636
assert.Equal(t, uint64(50835456), stat.Cache)
3737
assert.Equal(t, uint64(4294967296), stat.Limit)
3838

0 commit comments

Comments
 (0)