summaryrefslogtreecommitdiff
path: root/vendor/github.com/KimMachineGun/automemlimit
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/KimMachineGun/automemlimit')
-rw-r--r--vendor/github.com/KimMachineGun/automemlimit/memlimit/cgroups.go15
-rw-r--r--vendor/github.com/KimMachineGun/automemlimit/memlimit/memlimit.go10
2 files changed, 19 insertions, 6 deletions
diff --git a/vendor/github.com/KimMachineGun/automemlimit/memlimit/cgroups.go b/vendor/github.com/KimMachineGun/automemlimit/memlimit/cgroups.go
index 9e3f4cc07..2fee2a40a 100644
--- a/vendor/github.com/KimMachineGun/automemlimit/memlimit/cgroups.go
+++ b/vendor/github.com/KimMachineGun/automemlimit/memlimit/cgroups.go
@@ -4,8 +4,9 @@
package memlimit
import (
- "github.com/containerd/cgroups"
- v2 "github.com/containerd/cgroups/v2"
+ "github.com/containerd/cgroups/v3"
+ "github.com/containerd/cgroups/v3/cgroup1"
+ "github.com/containerd/cgroups/v3/cgroup2"
)
const (
@@ -25,12 +26,14 @@ func FromCgroup() (uint64, error) {
// FromCgroupV1 returns the memory limit from the cgroup v1.
func FromCgroupV1() (uint64, error) {
- cg, err := cgroups.Load(cgroups.SingleSubsystem(cgroups.V1, cgroups.Memory), cgroups.RootPath)
+ cg, err := cgroup1.Load(cgroup1.RootPath, cgroup1.WithHiearchy(
+ cgroup1.SingleSubsystem(cgroup1.Default, cgroup1.Memory),
+ ))
if err != nil {
return 0, err
}
- metrics, err := cg.Stat(cgroups.IgnoreNotExist)
+ metrics, err := cg.Stat(cgroup1.IgnoreNotExist)
if err != nil {
return 0, err
} else if metrics.Memory == nil {
@@ -42,12 +45,12 @@ func FromCgroupV1() (uint64, error) {
// FromCgroupV2 returns the memory limit from the cgroup v2.
func FromCgroupV2() (uint64, error) {
- path, err := v2.NestedGroupPath("")
+ path, err := cgroup2.NestedGroupPath("")
if err != nil {
return 0, err
}
- m, err := v2.LoadManager(cgroupMountPoint, path)
+ m, err := cgroup2.Load(path, cgroup2.WithMountpoint(cgroupMountPoint))
if err != nil {
return 0, err
}
diff --git a/vendor/github.com/KimMachineGun/automemlimit/memlimit/memlimit.go b/vendor/github.com/KimMachineGun/automemlimit/memlimit/memlimit.go
index 7b49bb33b..d2492ae9f 100644
--- a/vendor/github.com/KimMachineGun/automemlimit/memlimit/memlimit.go
+++ b/vendor/github.com/KimMachineGun/automemlimit/memlimit/memlimit.go
@@ -36,6 +36,15 @@ var (
// If AUTOMEMLIMIT is not set, it defaults to 0.9. (10% is the headroom for memory sources the Go runtime is unaware of.)
// If GOMEMLIMIT is already set or AUTOMEMLIMIT=off, this function does nothing.
func SetGoMemLimitWithEnv() {
+ snapshot := debug.SetMemoryLimit(-1)
+ defer func() {
+ err := recover()
+ if err != nil {
+ logger.Printf("panic during SetGoMemLimitWithEnv, rolling back to previous value %d: %v\n", snapshot, err)
+ debug.SetMemoryLimit(snapshot)
+ }
+ }()
+
if os.Getenv(envAUTOMEMLIMIT_DEBUG) == "true" {
logger = log.Default()
}
@@ -97,6 +106,7 @@ func cappedFloat2Int(f float64) int64 {
}
return int64(f)
}
+
// Limit is a helper Provider function that returns the given limit.
func Limit(limit uint64) func() (uint64, error) {
return func() (uint64, error) {