Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions libcontainer/cgroups/fs/memory.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package fs

import (
"bufio"
"bytes"
"fmt"
"io/ioutil"
"os"
Expand All @@ -27,6 +28,8 @@ const (
type MemoryGroup struct {
}

var kernelMemoryAccountingBroken = isKernelMemoryAccountingBroken()

func (s *MemoryGroup) Name() string {
return "memory"
}
Expand Down Expand Up @@ -68,6 +71,9 @@ func (s *MemoryGroup) Apply(d *cgroupData) (err error) {
}

func EnableKernelMemoryAccounting(path string) error {
if kernelMemoryAccountingBroken {
return nil
}
// Check if kernel memory is enabled
// We have to limit the kernel memory here as it won't be accounted at all
// until a limit is set on the cgroup and limit cannot be set once the
Expand Down Expand Up @@ -311,3 +317,24 @@ func getMemoryData(path, name string) (cgroups.MemoryData, error) {

return memoryData, nil
}

func getKernelRelease() string {
uts := &unix.Utsname{}
if err := unix.Uname(uts); err != nil {
return ""
}
// trim \0
return string(uts.Release[:bytes.IndexByte(uts.Release[:], 0)])
}

func isRHEL7Kernel() bool {
r := getKernelRelease()

return strings.HasPrefix(r, "3.10.0") && strings.Index(r, ".el7.") != -1
}

func isKernelMemoryAccountingBroken() bool {
// kmem limit is well known to be badly roken for RHEL7 kernels,
// (up to and including RHEL 7.5).
return isRHEL7Kernel()
}
2 changes: 1 addition & 1 deletion vendor.conf
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ github.com/golang/protobuf 18c9bb3261723cd5401db4d0c9fbc5c3b6c70fe8
github.com/cyphar/filepath-securejoin v0.2.1
github.com/docker/go-units v0.2.0
github.com/urfave/cli d53eb991652b1d438abdd34ce4bfa3ef1539108e
golang.org/x/sys 7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce https://github.com/golang/sys
golang.org/x/sys ac767d655b305d4e9612f5f6e33120b9176c4ad4

# console dependencies
github.com/containerd/console 2748ece16665b45a47f884001d5831ec79703880
Expand Down
3 changes: 0 additions & 3 deletions vendor/golang.org/x/sys/README

This file was deleted.

18 changes: 18 additions & 0 deletions vendor/golang.org/x/sys/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 38 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu_arm.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu_arm64.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu_gc_x86.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

43 changes: 43 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu_gccgo.c

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 26 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu_gccgo.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu_mips64x.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu_mipsx.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu_ppc64x.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu_s390x.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

55 changes: 55 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu_x86.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 27 additions & 0 deletions vendor/golang.org/x/sys/cpu/cpu_x86.s

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading