diff --git a/cgroup/memory.go b/cgroup/memory.go index 5af7b5c..04fef14 100644 --- a/cgroup/memory.go +++ b/cgroup/memory.go @@ -47,17 +47,13 @@ func (cg *Cgroup) memoryStatV1() (*MemoryStat, error) { } func (cg *Cgroup) memoryStatV2() (*MemoryStat, error) { - current, err := readUintFromFile(path.Join(cgRoot, cg.subsystems[""], "memory.current")) - if err != nil { - return nil, err - } vars, err := readVariablesFromFile(path.Join(cgRoot, cg.subsystems[""], "memory.stat")) if err != nil { return nil, err } limit, _ := readUintFromFile(path.Join(cgRoot, cg.subsystems[""], "memory.max")) return &MemoryStat{ - RSS: current - vars["file"], + RSS: vars["anon"] + vars["file_mapped"], Cache: vars["file"], Limit: limit, }, nil diff --git a/cgroup/memory_test.go b/cgroup/memory_test.go index a6f8569..27bd96a 100644 --- a/cgroup/memory_test.go +++ b/cgroup/memory_test.go @@ -25,14 +25,14 @@ func TestCgroup_MemoryStat(t *testing.T) { cg, _ = NewFromProcessCgroupFile(path.Join("fixtures/proc/400/cgroup")) stat, err = cg.MemoryStat() assert.Nil(t, err) - assert.Equal(t, uint64(48648192-1044480), stat.RSS) + assert.Equal(t, uint64(44892160+0), stat.RSS) assert.Equal(t, uint64(1044480), stat.Cache) assert.Equal(t, uint64(0), stat.Limit) cg, _ = NewFromProcessCgroupFile(path.Join("fixtures/proc/500/cgroup")) stat, err = cg.MemoryStat() assert.Nil(t, err) - assert.Equal(t, uint64(131047424-50835456), stat.RSS) + assert.Equal(t, uint64(75247616+4038656), stat.RSS) assert.Equal(t, uint64(50835456), stat.Cache) assert.Equal(t, uint64(4294967296), stat.Limit)