memlimit

package
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2024 License: MIT Imports: 15 Imported by: 15

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNoCgroup is returned when the process is not in cgroup.
	ErrNoCgroup = errors.New("process is not in cgroup")
	// ErrCgroupsNotSupported is returned when the system does not support cgroups.
	ErrCgroupsNotSupported = errors.New("cgroups is not supported on this system")
)
View Source
var (
	// ErrNoLimit is returned when the memory limit is not set.
	ErrNoLimit = errors.New("memory is not limited")
)

Functions

func FromCgroup

func FromCgroup() (uint64, error)

FromCgroup returns the memory limit based on the cgroups version on this system.

func FromCgroupHybrid added in v0.4.0

func FromCgroupHybrid() (uint64, error)

FromCgroupHybrid returns the memory limit from the cgroup v1 or v2. It checks the cgroup v2 first, and if it fails, it falls back to cgroup v1.

func FromCgroupV1

func FromCgroupV1() (uint64, error)

FromCgroupV1 returns the memory limit from the cgroup v1.

func FromCgroupV2

func FromCgroupV2() (uint64, error)

FromCgroupV2 returns the memory limit from the cgroup v2.

func FromSystem added in v0.5.0

func FromSystem() (uint64, error)

FromSystem returns the total memory of the system.

func Limit

func Limit(limit uint64) func() (uint64, error)

Limit is a helper Provider function that returns the given limit.

func SetGoMemLimit

func SetGoMemLimit(ratio float64) (int64, error)

SetGoMemLimit sets GOMEMLIMIT with the value from the cgroup's memory limit and given ratio.

func SetGoMemLimitWithEnv added in v0.2.0

func SetGoMemLimitWithEnv()

SetGoMemLimitWithEnv sets GOMEMLIMIT with the value from the environment variables. Since WithEnv is deprecated, this function is equivalent to SetGoMemLimitWithOpts(). Deprecated: use SetGoMemLimitWithOpts instead.

func SetGoMemLimitWithOpts added in v0.3.0

func SetGoMemLimitWithOpts(opts ...Option) (_ int64, _err error)

SetGoMemLimitWithOpts sets GOMEMLIMIT with options and environment variables.

You can configure how much memory of the cgroup's memory limit to set as GOMEMLIMIT through AUTOMEMLIMIT envrironment variable in the half-open range (0.0,1.0].

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.

If AUTOMEMLIMIT_EXPERIMENT is set, it enables experimental features. Please see the documentation of Experiments for more details.

Options:

  • WithRatio
  • WithProvider
  • WithLogger

func SetGoMemLimitWithProvider

func SetGoMemLimitWithProvider(provider Provider, ratio float64) (int64, error)

SetGoMemLimitWithProvider sets GOMEMLIMIT with the value from the given provider and ratio.

Types

type Experiments added in v0.5.0

type Experiments struct {
	// System enables fallback to system memory limit.
	System bool
}

Experiments is a set of experiment flags. It is used to enable experimental features.

You can set the flags by setting the environment variable AUTOMEMLIMIT_EXPERIMENT. The value of the environment variable is a comma-separated list of experiment names.

The following experiment names are known:

  • none: disable all experiments
  • system: enable fallback to system memory limit

type Option added in v0.3.0

type Option func(cfg *config)

Option is a function that configures the behavior of SetGoMemLimitWithOptions.

func WithEnv deprecated added in v0.3.0

func WithEnv() Option

WithEnv configures whether to use environment variables.

Default: false

Deprecated: currently this does nothing.

func WithLogger added in v0.6.0

func WithLogger(logger *slog.Logger) Option

WithLogger configures the logger. It automatically attaches the "package" attribute to the logs.

Default: slog.New(noopLogger{})

func WithProvider added in v0.3.0

func WithProvider(provider Provider) Option

WithProvider configures the provider.

Default: FromCgroup

func WithRatio added in v0.3.0

func WithRatio(ratio float64) Option

WithRatio configures the ratio of the memory limit to set as GOMEMLIMIT.

Default: 0.9

type Provider

type Provider func() (uint64, error)

Provider is a function that returns the memory limit.

func ApplyFallback added in v0.4.0

func ApplyFallback(provider Provider, fallback Provider) Provider

ApplyFallback is a helper Provider function that sets the fallback provider.

func ApplyRatio added in v0.4.0

func ApplyRatio(provider Provider, ratio float64) Provider

ApplyRationA is a helper Provider function that applies the given ratio to the given provider.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL