Skip to content

Commit b47922f

Browse files
committed
implete cgroup manager
1 parent 9edfc05 commit b47922f

File tree

4 files changed

+56
-0
lines changed

4 files changed

+56
-0
lines changed

pkg/util/cgroup/manager/fake_manager.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ func (f *FakeCgroupManager) GetMemory(absCgroupPath string) (*common.MemoryStats
5656
return nil, nil
5757
}
5858

59+
func (f *FakeCgroupManager) GetMemoryStats(absCgroupPath string) (*common.MemoryStats, error) {
60+
return nil, nil
61+
}
62+
5963
func (f *FakeCgroupManager) GetNumaMemory(absCgroupPath string) (map[int]*common.MemoryNumaMetrics, error) {
6064
return nil, nil
6165
}

pkg/util/cgroup/manager/v1/fs_linux.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,50 @@ func (m *manager) GetMemory(absCgroupPath string) (*common.MemoryStats, error) {
246246
return memoryStats, nil
247247
}
248248

249+
func (m *manager) GetMemoryStats(absCgroupPath string) (*common.MemoryStats, error) {
250+
fileName := "memory.stat"
251+
252+
memoryStats, err := m.GetMemory(absCgroupPath)
253+
if err != nil {
254+
return nil, fmt.Errorf("get memory limit and usage failed with error: %v", err)
255+
}
256+
257+
content, err := libcgroups.ReadFile(absCgroupPath, fileName)
258+
if err != nil {
259+
return nil, fmt.Errorf("failed to read %s: %w", fileName, err)
260+
}
261+
lines := strings.Split(content, "\n")
262+
for _, line := range lines {
263+
cols := strings.Fields(line)
264+
if len(cols) != 2 {
265+
continue
266+
}
267+
268+
key := cols[0]
269+
valueStr := cols[1]
270+
271+
value, err := strconv.ParseUint(valueStr, 10, 64)
272+
if err != nil {
273+
return nil, fmt.Errorf("failed to parse %s, %v", valueStr, err)
274+
}
275+
276+
switch key {
277+
case "cache":
278+
memoryStats.FileCache = value
279+
case "inactive_anon":
280+
memoryStats.InactiveAnno = value
281+
case "active_anon":
282+
memoryStats.ActiveAnno = value
283+
case "inactive_file":
284+
memoryStats.InactiveFile = value
285+
case "active_file":
286+
memoryStats.ActiveFile = value
287+
}
288+
}
289+
290+
return memoryStats, nil
291+
}
292+
249293
func (m *manager) GetNumaMemory(absCgroupPath string) (map[int]*common.MemoryNumaMetrics, error) {
250294
const fileName = "memory.numa_stat"
251295
content, err := libcgroups.ReadFile(absCgroupPath, fileName)

pkg/util/cgroup/manager/v1/fs_unsupported.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ func (m *unsupportedManager) GetMemory(_ string) (*common.MemoryStats, error) {
6868
return nil, fmt.Errorf("unsupported manager v1")
6969
}
7070

71+
func (m *unsupportedManager) GetMemoryStats(_ string) (*common.MemoryStats, error) {
72+
return nil, fmt.Errorf("unsupported manager v1")
73+
}
74+
7175
func (m *unsupportedManager) GetNumaMemory(absCgroupPath string) (map[int]*common.MemoryNumaMetrics, error) {
7276
return nil, fmt.Errorf("unsupported manager v1")
7377
}

pkg/util/cgroup/manager/v2/fs_unsupported.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ func (m *unsupportedManager) GetMemory(_ string) (*common.MemoryStats, error) {
6868
return nil, fmt.Errorf("unsupported manager v2")
6969
}
7070

71+
func (m *unsupportedManager) GetMemoryStats(_ string) (*common.MemoryStats, error) {
72+
return nil, fmt.Errorf("unsupported manager v2")
73+
}
74+
7175
func (m *unsupportedManager) GetNumaMemory(absCgroupPath string) (map[int]*common.MemoryNumaMetrics, error) {
7276
return nil, fmt.Errorf("unsupported manager v2")
7377
}

0 commit comments

Comments
 (0)