Merge pull request #7601 from kzys/cgroups-upgrade

Upgrade github.com/containerd/cgroups from v1 to v3
This commit is contained in:
Derek McGowan
2022-11-17 21:55:03 -08:00
committed by GitHub
88 changed files with 4992 additions and 4415 deletions

View File

@@ -30,8 +30,9 @@ import (
"testing"
"time"
"github.com/containerd/cgroups"
cgroupsv2 "github.com/containerd/cgroups/v2"
"github.com/containerd/cgroups/v3"
"github.com/containerd/cgroups/v3/cgroup1"
cgroupsv2 "github.com/containerd/cgroups/v3/cgroup2"
. "github.com/containerd/containerd"
"github.com/containerd/containerd/cio"
"github.com/containerd/containerd/containers"
@@ -93,7 +94,7 @@ func TestTaskUpdate(t *testing.T) {
}
var (
cgroup cgroups.Cgroup
cgroup cgroup1.Cgroup
cgroup2 *cgroupsv2.Manager
)
// check that the task has a limit of 32mb
@@ -102,7 +103,7 @@ func TestTaskUpdate(t *testing.T) {
if err != nil {
t.Fatal(err)
}
cgroup2, err = cgroupsv2.LoadManager("/sys/fs/cgroup", groupPath)
cgroup2, err = cgroupsv2.Load(groupPath)
if err != nil {
t.Fatal(err)
}
@@ -114,11 +115,11 @@ func TestTaskUpdate(t *testing.T) {
t.Fatalf("expected memory limit to be set to %d but received %d", limit, stat.Memory.UsageLimit)
}
} else {
cgroup, err = cgroups.Load(cgroups.V1, cgroups.PidPath(int(task.Pid())))
cgroup, err = cgroup1.Load(cgroup1.PidPath(int(task.Pid())))
if err != nil {
t.Fatal(err)
}
stat, err := cgroup.Stat(cgroups.IgnoreNotExist)
stat, err := cgroup.Stat(cgroup1.IgnoreNotExist)
if err != nil {
t.Fatal(err)
}
@@ -144,7 +145,7 @@ func TestTaskUpdate(t *testing.T) {
t.Errorf("expected memory limit to be set to %d but received %d", limit, stat.Memory.UsageLimit)
}
} else {
stat, err := cgroup.Stat(cgroups.IgnoreNotExist)
stat, err := cgroup.Stat(cgroup1.IgnoreNotExist)
if err != nil {
t.Fatal(err)
}
@@ -189,7 +190,7 @@ func TestShimInCgroup(t *testing.T) {
// create a cgroup for the shim to use
path := "/containerd/shim"
var (
cg cgroups.Cgroup
cg cgroup1.Cgroup
cg2 *cgroupsv2.Manager
)
if cgroups.Mode() == cgroups.Unified {
@@ -199,7 +200,7 @@ func TestShimInCgroup(t *testing.T) {
}
defer cg2.Delete()
} else {
cg, err = cgroups.New(cgroups.V1, cgroups.StaticPath(path), &specs.LinuxResources{})
cg, err = cgroup1.New(cgroup1.StaticPath(path), &specs.LinuxResources{})
if err != nil {
t.Fatal(err)
}
@@ -227,7 +228,7 @@ func TestShimInCgroup(t *testing.T) {
t.Errorf("created cgroup should have at least one process inside: %d", len(processes))
}
} else {
processes, err := cg.Processes(cgroups.Devices, false)
processes, err := cg.Processes(cgroup1.Devices, false)
if err != nil {
t.Fatal(err)
}
@@ -1412,7 +1413,7 @@ func TestShimOOMScore(t *testing.T) {
path := "/containerd/oomshim"
var (
cg cgroups.Cgroup
cg cgroup1.Cgroup
cg2 *cgroupsv2.Manager
)
if cgroups.Mode() == cgroups.Unified {
@@ -1422,7 +1423,7 @@ func TestShimOOMScore(t *testing.T) {
}
defer cg2.Delete()
} else {
cg, err = cgroups.New(cgroups.V1, cgroups.StaticPath(path), &specs.LinuxResources{})
cg, err = cgroup1.New(cgroup1.StaticPath(path), &specs.LinuxResources{})
if err != nil {
t.Fatal(err)
}
@@ -1472,7 +1473,7 @@ func TestShimOOMScore(t *testing.T) {
}
}
} else {
processes, err := cg.Processes(cgroups.Devices, false)
processes, err := cg.Processes(cgroup1.Devices, false)
if err != nil {
t.Fatal(err)
}

View File

@@ -26,7 +26,7 @@ import (
"testing"
"time"
"github.com/containerd/cgroups"
"github.com/containerd/cgroups/v3"
. "github.com/containerd/containerd"
"github.com/containerd/containerd/oci"
"github.com/containerd/containerd/plugin"

View File

@@ -5,7 +5,7 @@ go 1.18
require (
github.com/Microsoft/hcsshim v0.10.0-rc.1
github.com/Microsoft/hcsshim/test v0.0.0-20210408205431-da33ecd607e1
github.com/containerd/cgroups v1.0.5-0.20220816231112-7083cd60b721
github.com/containerd/cgroups v1.0.5-0.20220816231112-7083cd60b721 // indirect
github.com/containerd/containerd v1.6.2 // see replace; the actual version of containerd is replaced with the code at the root of this repository
github.com/containerd/go-runc v1.0.0
github.com/containerd/ttrpc v1.1.1-0.20220420014843-944ef4a40df3
@@ -19,7 +19,10 @@ require (
golang.org/x/sys v0.1.0
)
require github.com/AdaLogics/go-fuzz-headers v0.0.0-20221103172237-443f56ff4ba8
require (
github.com/AdaLogics/go-fuzz-headers v0.0.0-20221103172237-443f56ff4ba8
github.com/containerd/cgroups/v3 v3.0.0-20221112182753-e8802a182774
)
require (
github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20220912195655-e1f97a00006b // indirect

View File

@@ -466,6 +466,8 @@ github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f2
github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8=
github.com/containerd/cgroups v1.0.5-0.20220816231112-7083cd60b721 h1:qWq0iv560E8jXZKwWipx3Xot0dYPyfKBeDNfRwYth/U=
github.com/containerd/cgroups v1.0.5-0.20220816231112-7083cd60b721/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
github.com/containerd/cgroups/v3 v3.0.0-20221112182753-e8802a182774 h1:Tej/o6wjJ3icV9qkPopNXJxk2oeVAmRc7JL0q5JeUq8=
github.com/containerd/cgroups/v3 v3.0.0-20221112182753-e8802a182774/go.mod h1:/vtwk1VXrtoa5AaZLkypuOJgA/6DyPMZHJPGQNtlHnw=
github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE=
github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw=
github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ=

View File

@@ -26,8 +26,9 @@ import (
"strings"
"testing"
"github.com/containerd/cgroups"
cgroupsv2 "github.com/containerd/cgroups/v2"
"github.com/containerd/cgroups/v3"
"github.com/containerd/cgroups/v3/cgroup1"
cgroupsv2 "github.com/containerd/cgroups/v3/cgroup2"
"github.com/containerd/containerd"
"github.com/containerd/containerd/integration/images"
runtimespec "github.com/opencontainers/runtime-spec/specs-go"
@@ -73,7 +74,7 @@ func getCgroupSwapLimitForTask(t *testing.T, task containerd.Task) uint64 {
if err != nil {
t.Fatal(err)
}
cgroup2, err := cgroupsv2.LoadManager("/sys/fs/cgroup", groupPath)
cgroup2, err := cgroupsv2.Load(groupPath)
if err != nil {
t.Fatal(err)
}
@@ -83,11 +84,11 @@ func getCgroupSwapLimitForTask(t *testing.T, task containerd.Task) uint64 {
}
return stat.Memory.SwapLimit
}
cgroup, err := cgroups.Load(cgroups.V1, cgroups.PidPath(int(task.Pid())))
cgroup, err := cgroup1.Load(cgroup1.PidPath(int(task.Pid())))
if err != nil {
t.Fatal(err)
}
stat, err := cgroup.Stat(cgroups.IgnoreNotExist)
stat, err := cgroup.Stat(cgroup1.IgnoreNotExist)
if err != nil {
t.Fatal(err)
}
@@ -100,7 +101,7 @@ func getCgroupMemoryLimitForTask(t *testing.T, task containerd.Task) uint64 {
if err != nil {
t.Fatal(err)
}
cgroup2, err := cgroupsv2.LoadManager("/sys/fs/cgroup", groupPath)
cgroup2, err := cgroupsv2.Load(groupPath)
if err != nil {
t.Fatal(err)
}
@@ -111,11 +112,11 @@ func getCgroupMemoryLimitForTask(t *testing.T, task containerd.Task) uint64 {
return stat.Memory.UsageLimit
}
cgroup, err := cgroups.Load(cgroups.V1, cgroups.PidPath(int(task.Pid())))
cgroup, err := cgroup1.Load(cgroup1.PidPath(int(task.Pid())))
if err != nil {
t.Fatal(err)
}
stat, err := cgroup.Stat(cgroups.IgnoreNotExist)
stat, err := cgroup.Stat(cgroup1.IgnoreNotExist)
if err != nil {
t.Fatal(err)
}