diff --git a/mem/ex_linux.go b/mem/ex_linux.go index fd483dd09b..b69dfb605e 100644 --- a/mem/ex_linux.go +++ b/mem/ex_linux.go @@ -15,6 +15,7 @@ type ExVirtualMemory struct { InactiveAnon uint64 `json:"inactiveanon"` Unevictable uint64 `json:"unevictable"` Percpu uint64 `json:"percpu"` + KernelStack uint64 `json:"kernelstack"` } func (v ExVirtualMemory) String() string { diff --git a/mem/mem_linux.go b/mem/mem_linux.go index 413fc3e916..9d969ba839 100644 --- a/mem/mem_linux.go +++ b/mem/mem_linux.go @@ -187,6 +187,12 @@ func fillFromMeminfoWithContext(ctx context.Context) (*VirtualMemoryStat, *ExVir return ret, retEx, err } ret.Sunreclaim = t * 1024 + case "KernelStack": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } + retEx.KernelStack = t * 1024 case "PageTables": t, err := strconv.ParseUint(value, 10, 64) if err != nil { diff --git a/mem/mem_linux_test.go b/mem/mem_linux_test.go index aff325c1ab..9659e02e8b 100644 --- a/mem/mem_linux_test.go +++ b/mem/mem_linux_test.go @@ -78,6 +78,7 @@ var virtualMemoryTests = []struct { InactiveAnon: 1186612 * 1024, Unevictable: 32 * 1024, Percpu: 19136 * 1024, + KernelStack: 14224 * 1024, }, }, { @@ -127,6 +128,7 @@ var virtualMemoryTests = []struct { InactiveAnon: 0, Unevictable: 0, Percpu: 0, + KernelStack: 624 * 1024, }, }, {