From 9a8bf13158e469e284757bc9f88796439817423b Mon Sep 17 00:00:00 2001 From: payall4u Date: Wed, 11 Aug 2021 09:44:56 +0800 Subject: [PATCH 1/2] feature: add field LinuxContainerResources.Unified on cri Signed-off-by: Zhiyu Li --- pkg/cri/opts/spec_linux.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/cri/opts/spec_linux.go b/pkg/cri/opts/spec_linux.go index bc30d0caa..05848edc9 100644 --- a/pkg/cri/opts/spec_linux.go +++ b/pkg/cri/opts/spec_linux.go @@ -446,6 +446,15 @@ func WithResources(resources *runtime.LinuxContainerResources, tolerateMissingHu logrus.Warn("hugetlb cgroup controller is absent. skipping huge pages limits") } } + + if unified := resources.GetUnified(); unified != nil { + if s.Linux.Resources.Unified == nil { + s.Linux.Resources.Unified = make(map[string]string) + } + for k, v := range unified { + s.Linux.Resources.Unified[k] = v + } + } return nil } } From f8dfbee17888240616a57a724fa34bef4357092d Mon Sep 17 00:00:00 2001 From: payall4u Date: Mon, 23 Aug 2021 10:48:08 +0800 Subject: [PATCH 2/2] add cri test case Signed-off-by: Zhiyu Li --- pkg/cri/server/container_create_linux_test.go | 2 + .../container_update_resources_linux_test.go | 51 +++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/pkg/cri/server/container_create_linux_test.go b/pkg/cri/server/container_create_linux_test.go index 43af0aae6..cf78aa39b 100644 --- a/pkg/cri/server/container_create_linux_test.go +++ b/pkg/cri/server/container_create_linux_test.go @@ -90,6 +90,7 @@ func getCreateContainerTestData() (*runtime.ContainerConfig, *runtime.PodSandbox OomScoreAdj: 500, CpusetCpus: "0-1", CpusetMems: "2-3", + Unified: map[string]string{"memory.min": "65536", "memory.swap.max": "1024"}, }, SecurityContext: &runtime.LinuxContainerSecurityContext{ SupplementalGroups: []int64{1111, 2222}, @@ -136,6 +137,7 @@ func getCreateContainerTestData() (*runtime.ContainerConfig, *runtime.PodSandbox assert.EqualValues(t, *spec.Linux.Resources.CPU.Shares, 300) assert.EqualValues(t, spec.Linux.Resources.CPU.Cpus, "0-1") assert.EqualValues(t, spec.Linux.Resources.CPU.Mems, "2-3") + assert.EqualValues(t, spec.Linux.Resources.Unified, map[string]string{"memory.min": "65536", "memory.swap.max": "1024"}) assert.EqualValues(t, *spec.Linux.Resources.Memory.Limit, 400) assert.EqualValues(t, *spec.Process.OOMScoreAdj, 500) diff --git a/pkg/cri/server/container_update_resources_linux_test.go b/pkg/cri/server/container_update_resources_linux_test.go index b9407ce54..d22198ab1 100644 --- a/pkg/cri/server/container_update_resources_linux_test.go +++ b/pkg/cri/server/container_update_resources_linux_test.go @@ -48,6 +48,7 @@ func TestUpdateOCILinuxResource(t *testing.T) { Cpus: "0-1", Mems: "2-3", }, + Unified: map[string]string{"memory.min": "65536", "memory.swap.max": "1024"}, }, }, }, @@ -59,6 +60,7 @@ func TestUpdateOCILinuxResource(t *testing.T) { OomScoreAdj: 500, CpusetCpus: "4-5", CpusetMems: "6-7", + Unified: map[string]string{"memory.min": "1507328", "memory.swap.max": "0"}, }, expected: &runtimespec.Spec{ Process: &runtimespec.Process{OOMScoreAdj: oomscoreadj}, @@ -72,6 +74,7 @@ func TestUpdateOCILinuxResource(t *testing.T) { Cpus: "4-5", Mems: "6-7", }, + Unified: map[string]string{"memory.min": "1507328", "memory.swap.max": "0"}, }, }, }, @@ -89,6 +92,7 @@ func TestUpdateOCILinuxResource(t *testing.T) { Cpus: "0-1", Mems: "2-3", }, + Unified: map[string]string{"memory.min": "65536", "memory.swap.max": "1024"}, }, }, }, @@ -111,6 +115,7 @@ func TestUpdateOCILinuxResource(t *testing.T) { Cpus: "0-1", Mems: "6-7", }, + Unified: map[string]string{"memory.min": "65536", "memory.swap.max": "1024"}, }, }, }, @@ -132,6 +137,7 @@ func TestUpdateOCILinuxResource(t *testing.T) { OomScoreAdj: 500, CpusetCpus: "4-5", CpusetMems: "6-7", + Unified: map[string]string{"memory.min": "65536", "memory.swap.max": "1024"}, }, expected: &runtimespec.Spec{ Process: &runtimespec.Process{OOMScoreAdj: oomscoreadj}, @@ -145,6 +151,51 @@ func TestUpdateOCILinuxResource(t *testing.T) { Cpus: "4-5", Mems: "6-7", }, + Unified: map[string]string{"memory.min": "65536", "memory.swap.max": "1024"}, + }, + }, + }, + }, + "should be able to patch the unified map": { + spec: &runtimespec.Spec{ + Process: &runtimespec.Process{OOMScoreAdj: oomscoreadj}, + Linux: &runtimespec.Linux{ + Resources: &runtimespec.LinuxResources{ + Memory: &runtimespec.LinuxMemory{Limit: proto.Int64(12345)}, + CPU: &runtimespec.LinuxCPU{ + Shares: proto.Uint64(1111), + Quota: proto.Int64(2222), + Period: proto.Uint64(3333), + Cpus: "0-1", + Mems: "2-3", + }, + Unified: map[string]string{"memory.min": "65536", "memory.max": "1507328"}, + }, + }, + }, + resources: &runtime.LinuxContainerResources{ + CpuPeriod: 6666, + CpuQuota: 5555, + CpuShares: 4444, + MemoryLimitInBytes: 54321, + OomScoreAdj: 500, + CpusetCpus: "4-5", + CpusetMems: "6-7", + Unified: map[string]string{"memory.min": "1507328", "memory.swap.max": "1024"}, + }, + expected: &runtimespec.Spec{ + Process: &runtimespec.Process{OOMScoreAdj: oomscoreadj}, + Linux: &runtimespec.Linux{ + Resources: &runtimespec.LinuxResources{ + Memory: &runtimespec.LinuxMemory{Limit: proto.Int64(54321)}, + CPU: &runtimespec.LinuxCPU{ + Shares: proto.Uint64(4444), + Quota: proto.Int64(5555), + Period: proto.Uint64(6666), + Cpus: "4-5", + Mems: "6-7", + }, + Unified: map[string]string{"memory.min": "1507328", "memory.max": "1507328", "memory.swap.max": "1024"}, }, }, },