25 lines
455 B
Go
25 lines
455 B
Go
|
package watchdog
|
||
|
|
||
|
import (
|
||
|
"github.com/containerd/cgroups"
|
||
|
)
|
||
|
|
||
|
func ProcessMemoryLimit() uint64 {
|
||
|
var (
|
||
|
pid = os.Getpid()
|
||
|
memSubsystem = cgroups.SingleSubsystem(cgroups.V1, cgroups.Memory)
|
||
|
)
|
||
|
cgroup, err := cgroups.Load(memSubsystem, cgroups.PidPath(pid))
|
||
|
if err != nil {
|
||
|
return 0
|
||
|
}
|
||
|
metrics, err := cgroup.Stat()
|
||
|
if err != nil {
|
||
|
return 0
|
||
|
}
|
||
|
if metrics.Memory == nil {
|
||
|
return 0
|
||
|
}
|
||
|
return metrics.Memory.HierarchicalMemoryLimit
|
||
|
}
|