Expose memory.use_hierarchy in MemoryStats
Signed-off-by: Derek Carr <decarr@redhat.com>
This commit is contained in:
parent
653207bc29
commit
4d6225aec2
|
@ -243,6 +243,14 @@ func (s *MemoryGroup) GetStats(path string, stats *cgroups.Stats) error {
|
||||||
}
|
}
|
||||||
stats.MemoryStats.KernelTCPUsage = kernelTCPUsage
|
stats.MemoryStats.KernelTCPUsage = kernelTCPUsage
|
||||||
|
|
||||||
|
useHierarchy := strings.Join([]string{"memory", "use_hierarchy"}, ".")
|
||||||
|
value, err := getCgroupParamUint(path, useHierarchy)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if value == 1 {
|
||||||
|
stats.MemoryStats.UseHierarchy = true
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,10 +12,11 @@ import (
|
||||||
const (
|
const (
|
||||||
memoryStatContents = `cache 512
|
memoryStatContents = `cache 512
|
||||||
rss 1024`
|
rss 1024`
|
||||||
memoryUsageContents = "2048\n"
|
memoryUsageContents = "2048\n"
|
||||||
memoryMaxUsageContents = "4096\n"
|
memoryMaxUsageContents = "4096\n"
|
||||||
memoryFailcnt = "100\n"
|
memoryFailcnt = "100\n"
|
||||||
memoryLimitContents = "8192\n"
|
memoryLimitContents = "8192\n"
|
||||||
|
memoryUseHierarchyContents = "1\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMemorySetMemory(t *testing.T) {
|
func TestMemorySetMemory(t *testing.T) {
|
||||||
|
@ -273,6 +274,7 @@ func TestMemoryStats(t *testing.T) {
|
||||||
"memory.kmem.max_usage_in_bytes": memoryMaxUsageContents,
|
"memory.kmem.max_usage_in_bytes": memoryMaxUsageContents,
|
||||||
"memory.kmem.failcnt": memoryFailcnt,
|
"memory.kmem.failcnt": memoryFailcnt,
|
||||||
"memory.kmem.limit_in_bytes": memoryLimitContents,
|
"memory.kmem.limit_in_bytes": memoryLimitContents,
|
||||||
|
"memory.use_hierarchy": memoryUseHierarchyContents,
|
||||||
})
|
})
|
||||||
|
|
||||||
memory := &MemoryGroup{}
|
memory := &MemoryGroup{}
|
||||||
|
@ -281,7 +283,7 @@ func TestMemoryStats(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
expectedStats := cgroups.MemoryStats{Cache: 512, Usage: cgroups.MemoryData{Usage: 2048, MaxUsage: 4096, Failcnt: 100, Limit: 8192}, SwapUsage: cgroups.MemoryData{Usage: 2048, MaxUsage: 4096, Failcnt: 100, Limit: 8192}, KernelUsage: cgroups.MemoryData{Usage: 2048, MaxUsage: 4096, Failcnt: 100, Limit: 8192}, Stats: map[string]uint64{"cache": 512, "rss": 1024}}
|
expectedStats := cgroups.MemoryStats{Cache: 512, Usage: cgroups.MemoryData{Usage: 2048, MaxUsage: 4096, Failcnt: 100, Limit: 8192}, SwapUsage: cgroups.MemoryData{Usage: 2048, MaxUsage: 4096, Failcnt: 100, Limit: 8192}, KernelUsage: cgroups.MemoryData{Usage: 2048, MaxUsage: 4096, Failcnt: 100, Limit: 8192}, Stats: map[string]uint64{"cache": 512, "rss": 1024}, UseHierarchy: true}
|
||||||
expectMemoryStatEquals(t, expectedStats, actualStats.MemoryStats)
|
expectMemoryStatEquals(t, expectedStats, actualStats.MemoryStats)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,11 @@ func expectMemoryStatEquals(t *testing.T, expected, actual cgroups.MemoryStats)
|
||||||
expectMemoryDataEquals(t, expected.SwapUsage, actual.SwapUsage)
|
expectMemoryDataEquals(t, expected.SwapUsage, actual.SwapUsage)
|
||||||
expectMemoryDataEquals(t, expected.KernelUsage, actual.KernelUsage)
|
expectMemoryDataEquals(t, expected.KernelUsage, actual.KernelUsage)
|
||||||
|
|
||||||
|
if expected.UseHierarchy != actual.UseHierarchy {
|
||||||
|
logrus.Printf("Expected memory use hiearchy %v, but found %v\n", expected.UseHierarchy, actual.UseHierarchy)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
|
||||||
for key, expValue := range expected.Stats {
|
for key, expValue := range expected.Stats {
|
||||||
actValue, ok := actual.Stats[key]
|
actValue, ok := actual.Stats[key]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
|
@ -51,6 +51,8 @@ type MemoryStats struct {
|
||||||
KernelUsage MemoryData `json:"kernel_usage,omitempty"`
|
KernelUsage MemoryData `json:"kernel_usage,omitempty"`
|
||||||
// usage of kernel TCP memory
|
// usage of kernel TCP memory
|
||||||
KernelTCPUsage MemoryData `json:"kernel_tcp_usage,omitempty"`
|
KernelTCPUsage MemoryData `json:"kernel_tcp_usage,omitempty"`
|
||||||
|
// if true, memory usage is accounted for throughout a hierarchy of cgroups.
|
||||||
|
UseHierarchy bool `json:"use_hierarchy"`
|
||||||
|
|
||||||
Stats map[string]uint64 `json:"stats,omitempty"`
|
Stats map[string]uint64 `json:"stats,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue