From e25cb05b527dafb0517f75e584fab8f6ee05365a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Oct 2023 19:03:20 +0000 Subject: [PATCH 01/26] feat(deps): bump github.com/docker/docker Bumps [github.com/docker/docker](https://github.com/docker/docker) from 20.10.21+incompatible to 24.0.7+incompatible. - [Release notes](https://github.com/docker/docker/releases) - [Commits](https://github.com/docker/docker/compare/v20.10.21...v24.0.7) --- updated-dependencies: - dependency-name: github.com/docker/docker dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: BUPT-wxq <1725712048@qq.com> --- go.mod | 8 +++++--- go.sum | 15 ++++++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 558f0ebb6..548673893 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/NVIDIA/go-nvml v0.11.6-0.0.20220823120812-7e2082095e82 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/containerd/nri v0.3.0 - github.com/docker/docker v20.10.21+incompatible + github.com/docker/docker v24.0.7+incompatible github.com/evanphx/json-patch v5.6.0+incompatible github.com/fsnotify/fsnotify v1.6.0 github.com/gin-gonic/gin v1.8.1 @@ -63,6 +63,8 @@ require ( sigs.k8s.io/yaml v1.3.0 ) +require github.com/containerd/cgroups/v3 v3.0.2 // indirect + require ( cloud.google.com/go/compute v1.7.0 // indirect github.com/Azure/azure-sdk-for-go v65.0.0+incompatible // indirect @@ -89,7 +91,7 @@ require ( github.com/blang/semver/v4 v4.0.0 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/checkpoint-restore/go-criu/v5 v5.3.0 // indirect - github.com/cilium/ebpf v0.7.0 // indirect + github.com/cilium/ebpf v0.9.1 // indirect github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 // indirect github.com/container-storage-interface/spec v1.5.0 // indirect github.com/containerd/cgroups v1.0.3 // indirect @@ -178,7 +180,7 @@ require ( github.com/rivo/uniseg v0.2.0 // indirect github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021 // indirect github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 // indirect - github.com/sirupsen/logrus v1.8.1 // indirect + github.com/sirupsen/logrus v1.9.0 // indirect github.com/spf13/afero v1.6.0 // indirect github.com/storageos/go-api v2.2.0+incompatible // indirect github.com/stretchr/objx v0.5.0 // indirect diff --git a/go.sum b/go.sum index eb75c2f50..f8ba66e77 100644 --- a/go.sum +++ b/go.sum @@ -221,8 +221,9 @@ github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLI github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= +github.com/cilium/ebpf v0.9.1 h1:64sn2K3UKw8NbP/blsixRpF3nXuyhz/VjRlRzvlBRu4= +github.com/cilium/ebpf v0.9.1/go.mod h1:+OhNOIXx/Fnu1IE8bJz2dzOA+VSfyTfdNUVdlQnxUFY= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 h1:eIHD9GNM3Hp7kcRW5mvcz7WTR3ETeoYYKwpgA04kaXE= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0= @@ -257,6 +258,8 @@ github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTF github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= github.com/containerd/cgroups v1.0.3 h1:ADZftAkglvCiD44c77s5YmMqaP2pzVCFZvBmAlBdAP4= github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= +github.com/containerd/cgroups/v3 v3.0.2 h1:f5WFqIVSgo5IZmtTT3qVBo6TzI1ON6sycSBKkymb9L0= +github.com/containerd/cgroups/v3 v3.0.2/go.mod h1:JUgITrzdFqp42uI2ryGA+ge0ap/nxzYgkGmIcetmErE= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= @@ -395,8 +398,8 @@ github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6 github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.21+incompatible h1:UTLdBmHk3bEY+w8qeO5KttOhy6OmXWsl/FEet9Uswog= -github.com/docker/docker v20.10.21+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= +github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= @@ -450,8 +453,8 @@ github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoD github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= -github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.0 h1:+cqqvzZV87b4adx/5ayVOaYZ2CrvM4ejQvUdBzPPUss= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= @@ -1093,8 +1096,9 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= @@ -1564,6 +1568,7 @@ golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From d267fd98fa16ed3fe8b66d0f98a33e7bcc6e300a Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Wed, 1 Nov 2023 11:25:04 +0800 Subject: [PATCH 02/26] koordlet: add pagecache collector unit Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../pagecache/page_cache_collector_test.go | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go new file mode 100644 index 000000000..297ecd913 --- /dev/null +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -0,0 +1,202 @@ +/* +Copyright 2022 The Koordinator Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package pagecache + +import ( + "testing" + "time" + + gocache "github.com/patrickmn/go-cache" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/golang/mock/gomock" + "github.com/koordinator-sh/koordinator/pkg/koordlet/metriccache" + "github.com/koordinator-sh/koordinator/pkg/koordlet/metricsadvisor/framework" + "github.com/koordinator-sh/koordinator/pkg/koordlet/resourceexecutor" + "github.com/koordinator-sh/koordinator/pkg/koordlet/statesinformer" + mock_statesinformer "github.com/koordinator-sh/koordinator/pkg/koordlet/statesinformer/mockstatesinformer" + "github.com/koordinator-sh/koordinator/pkg/koordlet/util/system" + "github.com/stretchr/testify/assert" +) + +func Test_collectPageCache(t *testing.T) { + testNow := time.Now() + testContainerID := "containerd://123abc" + testPodMetaDir := "kubepods.slice/kubepods-podxxxxxxxx.slice" + testPodParentDir := "/kubepods.slice/kubepods-podxxxxxxxx.slice" + testContainerParentDir := "/kubepods.slice/kubepods-podxxxxxxxx.slice/cri-containerd-123abc.scope" + testMemStat := ` + total_cache 104857600 + total_rss 104857600 + total_inactive_anon 104857600 + total_active_anon 0 + total_inactive_file 104857600 + total_active_file 0 + total_unevictable 0 + ` + meminfo := `MemTotal: 1048576 kB + MemFree: 262144 kB + MemAvailable: 524288 kB + Buffers: 0 kB + Cached: 262144 kB + SwapCached: 0 kB + Active: 524288 kB + Inactive: 262144 kB + Active(anon): 262144 kB + Inactive(anon): 262144 kB + Active(file): 0 kB + Inactive(file): 262144 kB + Unevictable: 0 kB + Mlocked: 0 kB + SwapTotal: 0 kB + SwapFree: 0 kB + Dirty: 0 kB + Writeback: 0 kB + AnonPages: 0 kB + Mapped: 0 kB + Shmem: 0 kB + Slab: 0 kB + SReclaimable: 0 kB + SUnreclaim: 0 kB + KernelStack: 0 kB + PageTables: 0 kB + NFS_Unstable: 0 kB + Bounce: 0 kB + WritebackTmp: 0 kB + CommitLimit: 0 kB + Committed_AS: 0 kB + VmallocTotal: 0 kB + VmallocUsed: 0 kB + VmallocChunk: 0 kB + HardwareCorrupted: 0 kB + AnonHugePages: 0 kB + ShmemHugePages: 0 kB + ShmemPmdMapped: 0 kB + CmaTotal: 0 kB + CmaFree: 0 kB + HugePages_Total: 0 + HugePages_Free: 0 + HugePages_Rsvd: 0 + HugePages_Surp: 0 + Hugepagesize: 0 kB + DirectMap4k: 0 kB + DirectMap2M: 0 kB + DirectMap1G: 0 kB` + testPod := &corev1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-pod", + Namespace: "test", + UID: "xxxxxxxx", + }, + Status: corev1.PodStatus{ + Phase: corev1.PodRunning, + ContainerStatuses: []corev1.ContainerStatus{ + { + Name: "test-container", + ContainerID: testContainerID, + State: corev1.ContainerState{ + Running: &corev1.ContainerStateRunning{}, + }, + }, + }, + }, + } + + type fields struct { + podFilterOption framework.PodFilter + getPodMetas []*statesinformer.PodMeta + initPodLastStat func(lastState *gocache.Cache) + initContainerLastStat func(lastState *gocache.Cache) + SetSysUtil func(helper *system.FileTestUtil) + } + tests := []struct { + name string + fields fields + wantEnable bool + wantStarted bool + }{ + { + name: "collect pagecache info", + fields: fields{ + podFilterOption: framework.DefaultPodFilter, + getPodMetas: []*statesinformer.PodMeta{ + { + CgroupDir: testPodMetaDir, + Pod: testPod, + }, + }, + initPodLastStat: func(lastState *gocache.Cache) { + lastState.Set(string(testPod.UID), framework.CPUStat{ + CPUUsage: 0, + Timestamp: testNow.Add(-time.Second), + }, gocache.DefaultExpiration) + }, + initContainerLastStat: func(lastState *gocache.Cache) { + lastState.Set(testContainerID, framework.CPUStat{ + CPUUsage: 0, + Timestamp: testNow.Add(-time.Second), + }, gocache.DefaultExpiration) + }, + SetSysUtil: func(helper *system.FileTestUtil) { + helper.WriteProcSubFileContents(system.ProcMemInfoName, meminfo) + helper.WriteCgroupFileContents(testPodParentDir, system.MemoryStat, testMemStat) + helper.WriteCgroupFileContents(testContainerParentDir, system.MemoryStat, testMemStat) + }, + }, + wantEnable: true, + wantStarted: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + helper := system.NewFileTestUtil(t) + defer helper.Cleanup() + if tt.fields.SetSysUtil != nil { + tt.fields.SetSysUtil(helper) + } + ctrl := gomock.NewController(t) + defer ctrl.Finish() + metricCache, err := metriccache.NewMetricCache(&metriccache.Config{ + TSDBPath: t.TempDir(), + TSDBEnablePromMetrics: false, + }) + assert.NoError(t, err) + defer func() { + metricCache.Close() + }() + statesInformer := mock_statesinformer.NewMockStatesInformer(ctrl) + statesInformer.EXPECT().HasSynced().Return(true).AnyTimes() + statesInformer.EXPECT().GetAllPods().Return(tt.fields.getPodMetas).Times(1) + collector := New(&framework.Options{ + Config: &framework.Config{ + EnablePageCacheCollector: true, + }, + StatesInformer: statesInformer, + MetricCache: metricCache, + CgroupReader: resourceexecutor.NewCgroupReader(), + }) + c := collector.(*pageCacheCollector) + assert.NotPanics(t, func() { + c.collectPageCache() + }) + assert.Equal(t, tt.wantEnable, c.Enabled()) + assert.Equal(t, tt.wantStarted, c.Started()) + }) + + } +} From 49d5a14ab2bd3ce140d772122cc57f377495ec63 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Mon, 13 Nov 2023 10:03:17 +0800 Subject: [PATCH 03/26] koordlet:add page cache collector unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- pkg/koordlet/util/meminfo.go | 2 +- pkg/koordlet/util/system/kidled_util.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/koordlet/util/meminfo.go b/pkg/koordlet/util/meminfo.go index 6d6279fd3..0074aeb42 100644 --- a/pkg/koordlet/util/meminfo.go +++ b/pkg/koordlet/util/meminfo.go @@ -91,7 +91,7 @@ func (i *MemInfo) MemUsageBytes() uint64 { // MemWithPageCacheUsageBytes returns the usage of mem with page cache bytes. func (i *MemInfo) MemUsageWithPageCache() uint64 { - // total - available + // total - available + activefile + inactivefile return (i.MemTotal - i.MemAvailable + i.ActiveFile + i.InactiveFile) * 1024 } diff --git a/pkg/koordlet/util/system/kidled_util.go b/pkg/koordlet/util/system/kidled_util.go index 8b8827e17..6dc008d32 100644 --- a/pkg/koordlet/util/system/kidled_util.go +++ b/pkg/koordlet/util/system/kidled_util.go @@ -34,7 +34,7 @@ var ( kidledColdBoundary = defaultKidledColdBoundary defaultKidledScanPeriodInseconds uint32 = 5 defaultKidledUseHierarchy uint8 = 1 - defaultKidledColdBoundary int = 3 + defaultKidledColdBoundary int = 5 ) // the unit of Csei, Dsei, Cfei ... is byte From 23f26deb88b63de87168bca343be01c3b47c1df9 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Thu, 19 Oct 2023 11:40:37 +0800 Subject: [PATCH 04/26] fix uasgeWithHotPageCache and add usageWithPageCache Signed-off-by: BUPT-wxq <1725712048@qq.com> --- pkg/koordlet/metriccache/metric_types.go | 4 ++++ pkg/koordlet/util/cold_page_test.go | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/koordlet/metriccache/metric_types.go b/pkg/koordlet/metriccache/metric_types.go index a0b84c4d0..51186ebb6 100644 --- a/pkg/koordlet/metriccache/metric_types.go +++ b/pkg/koordlet/metriccache/metric_types.go @@ -49,6 +49,10 @@ const ( // NodeBE NodeMetricBE MetricKind = "node_be" + PriorityMetricCPUUsage MetricKind = "priority_cpu_usage" + PriorityMetricCPURealLimit MetricKind = "priority_cpu_real_limit" + PriorityMetricCPURequest MetricKind = "priority_cpu_request" + PodMetricCPUUsage MetricKind = "pod_cpu_usage" PodMetricMemoryUsage MetricKind = "pod_memory_usage" PodMemoryWithPageCacheUsage MetricKind = "pod_memory_usage_with_page_cache" diff --git a/pkg/koordlet/util/cold_page_test.go b/pkg/koordlet/util/cold_page_test.go index 4b531c705..2c041b48b 100644 --- a/pkg/koordlet/util/cold_page_test.go +++ b/pkg/koordlet/util/cold_page_test.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, From dccacfbd7550c441dcbed87e67054bde9cd15ea6 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Mon, 13 Nov 2023 10:36:37 +0800 Subject: [PATCH 05/26] koordlet: add page cache collector unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- go.mod | 8 +++----- go.sum | 15 +++++---------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 548673893..558f0ebb6 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/NVIDIA/go-nvml v0.11.6-0.0.20220823120812-7e2082095e82 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/containerd/nri v0.3.0 - github.com/docker/docker v24.0.7+incompatible + github.com/docker/docker v20.10.21+incompatible github.com/evanphx/json-patch v5.6.0+incompatible github.com/fsnotify/fsnotify v1.6.0 github.com/gin-gonic/gin v1.8.1 @@ -63,8 +63,6 @@ require ( sigs.k8s.io/yaml v1.3.0 ) -require github.com/containerd/cgroups/v3 v3.0.2 // indirect - require ( cloud.google.com/go/compute v1.7.0 // indirect github.com/Azure/azure-sdk-for-go v65.0.0+incompatible // indirect @@ -91,7 +89,7 @@ require ( github.com/blang/semver/v4 v4.0.0 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/checkpoint-restore/go-criu/v5 v5.3.0 // indirect - github.com/cilium/ebpf v0.9.1 // indirect + github.com/cilium/ebpf v0.7.0 // indirect github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 // indirect github.com/container-storage-interface/spec v1.5.0 // indirect github.com/containerd/cgroups v1.0.3 // indirect @@ -180,7 +178,7 @@ require ( github.com/rivo/uniseg v0.2.0 // indirect github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021 // indirect github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 // indirect - github.com/sirupsen/logrus v1.9.0 // indirect + github.com/sirupsen/logrus v1.8.1 // indirect github.com/spf13/afero v1.6.0 // indirect github.com/storageos/go-api v2.2.0+incompatible // indirect github.com/stretchr/objx v0.5.0 // indirect diff --git a/go.sum b/go.sum index f8ba66e77..eb75c2f50 100644 --- a/go.sum +++ b/go.sum @@ -221,9 +221,8 @@ github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLI github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= -github.com/cilium/ebpf v0.9.1 h1:64sn2K3UKw8NbP/blsixRpF3nXuyhz/VjRlRzvlBRu4= -github.com/cilium/ebpf v0.9.1/go.mod h1:+OhNOIXx/Fnu1IE8bJz2dzOA+VSfyTfdNUVdlQnxUFY= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 h1:eIHD9GNM3Hp7kcRW5mvcz7WTR3ETeoYYKwpgA04kaXE= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0= @@ -258,8 +257,6 @@ github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTF github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= github.com/containerd/cgroups v1.0.3 h1:ADZftAkglvCiD44c77s5YmMqaP2pzVCFZvBmAlBdAP4= github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= -github.com/containerd/cgroups/v3 v3.0.2 h1:f5WFqIVSgo5IZmtTT3qVBo6TzI1ON6sycSBKkymb9L0= -github.com/containerd/cgroups/v3 v3.0.2/go.mod h1:JUgITrzdFqp42uI2ryGA+ge0ap/nxzYgkGmIcetmErE= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= @@ -398,8 +395,8 @@ github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6 github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= -github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.21+incompatible h1:UTLdBmHk3bEY+w8qeO5KttOhy6OmXWsl/FEet9Uswog= +github.com/docker/docker v20.10.21+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= @@ -453,8 +450,8 @@ github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoD github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.0 h1:+cqqvzZV87b4adx/5ayVOaYZ2CrvM4ejQvUdBzPPUss= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= @@ -1096,9 +1093,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= @@ -1568,7 +1564,6 @@ golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From 08ec8c70c0274490c1c0dc192aebde1505d6e8d2 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Mon, 13 Nov 2023 16:05:06 +0800 Subject: [PATCH 06/26] koordlet: add page cache collector unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../coldmemoryresource/cold_page_collector_test.go | 2 +- .../coldmemoryresource/cold_page_kidled_test.go | 12 ++++++------ pkg/koordlet/util/cold_page.go | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_collector_test.go index 773a05118..71246acaf 100644 --- a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_collector_test.go @@ -82,7 +82,7 @@ func Test_NewColdPageCollector(t *testing.T) { appendableDB: opt.MetricCache, metricDB: opt.MetricCache, started: atomic.NewBool(false), - coldBoundary: 3, + coldBoundary: system.GetKidledColdBoundary(), }, }, } diff --git a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go index 23b1e41c1..346b89d40 100644 --- a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go @@ -424,14 +424,14 @@ func Test_collectNodeColdPageInfo(t *testing.T) { # ||||| [1,2) [2,5) [5,15) [15,30) [30,60) [60,120) [120,240) [240,+inf) csei 2613248 4657152 18182144 293683200 0 0 0 0 dsei 2568192 5140480 15306752 48648192 0 0 0 0 - cfei 2633728 4640768 66531328 340172800 0 0 0 0 - dfei 0 0 4096 0 0 0 0 0 + cfei 2633728 4640768 66531328 340172800 52834304 0 0 0 + dfei 0 0 4096 0 52834304 52834304 0 0 csui 0 0 0 0 0 0 0 0 dsui 0 0 0 0 0 0 0 0 cfui 0 0 0 0 0 0 0 0 dfui 0 0 0 0 0 0 0 0 - csea 765952 1044480 3784704 52834304 0 0 0 0 - dsea 286720 270336 1564672 5390336 0 0 0 0 + csea 765952 1044480 3784704 52834304 52834304 0 0 0 + dsea 286720 270336 1564672 5390336 52834304 0 0 0 cfea 9273344 16609280 152109056 315121664 0 0 0 0 dfea 0 0 0 0 0 0 0 0 csua 0 0 0 0 0 0 0 0 @@ -530,8 +530,8 @@ func Test_collectNodeColdPageInfo(t *testing.T) { } assert.NoError(t, err) got1, got2 := testGetNodeMetrics(t, c.metricDB, testNow, 5*time.Second) - assert.Equal(t, float64(7.33569024e+08), got1) - assert.Equal(t, float64(3.401728e+08), got2) + assert.Equal(t, float64(1.02090752e+09), got1) + assert.Equal(t, float64(52834304), got2) // test collect failed helper.WriteCgroupFileContents("", system.MemoryIdlePageStats, ``) helper.WriteProcSubFileContents(system.ProcMemInfoName, ``) diff --git a/pkg/koordlet/util/cold_page.go b/pkg/koordlet/util/cold_page.go index 3f44ab1c3..4673efbc0 100644 --- a/pkg/koordlet/util/cold_page.go +++ b/pkg/koordlet/util/cold_page.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, From 948de3d373053fe1fc13eada2c4cabe575ec8ac6 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Mon, 13 Nov 2023 16:05:37 +0800 Subject: [PATCH 07/26] koordlet: add page cache collector unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- pkg/koordlet/util/system/kidled_util_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/koordlet/util/system/kidled_util_test.go b/pkg/koordlet/util/system/kidled_util_test.go index 59f9e3d08..3dc46f8ed 100644 --- a/pkg/koordlet/util/system/kidled_util_test.go +++ b/pkg/koordlet/util/system/kidled_util_test.go @@ -176,15 +176,15 @@ func Test_GetColdPageTotalBytes(t *testing.T) { # |||| / # ||||| [1,2) [2,5) [5,15) [15,30) [30,60) [60,120) [120,240) [240,+inf) csei 2613248 4657152 18182144 293683200 0 0 0 0 - dsei 2568192 5140480 15306752 48648192 0 0 0 0 - cfei 2633728 4640768 66531328 340172800 0 0 0 0 + dsei 2568192 5140480 15306752 48648192 52834304 52834304 0 0 + cfei 2633728 4640768 66531328 340172800 52834304 52834304 0 0 dfei 0 0 4096 0 0 0 0 0 csui 0 0 0 0 0 0 0 0 dsui 0 0 0 0 0 0 0 0 cfui 0 0 0 0 0 0 0 0 dfui 0 0 0 0 0 0 0 0 - csea 765952 1044480 3784704 52834304 0 0 0 0 - dsea 286720 270336 1564672 5390336 0 0 0 0 + csea 765952 1044480 3784704 52834304 52834304 0 0 0 + dsea 286720 270336 1564672 5390336 52834304 0 0 0 cfea 9273344 16609280 152109056 315121664 0 0 0 0 dfea 0 0 0 0 0 0 0 0 csua 0 0 0 0 0 0 0 0 @@ -196,7 +196,7 @@ func Test_GetColdPageTotalBytes(t *testing.T) { assert.NoError(t, err) assert.NotNil(t, coldPageInfo) got := coldPageInfo.GetColdPageTotalBytes() - assert.Equal(t, uint64(340172800), got) + assert.Equal(t, uint64(52834304), got) } func Test_SetKidledScanPeriodInSeconds(t *testing.T) { From 54fb0897727de893687442a4a2124608de631c81 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Mon, 13 Nov 2023 16:17:46 +0800 Subject: [PATCH 08/26] koordlet: add page cache collector unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- pkg/koordlet/resourceexecutor/reader_test.go | 4 ++-- pkg/koordlet/util/cold_page.go | 2 +- pkg/koordlet/util/cold_page_test.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/koordlet/resourceexecutor/reader_test.go b/pkg/koordlet/resourceexecutor/reader_test.go index b852c8612..87df0a6e2 100644 --- a/pkg/koordlet/resourceexecutor/reader_test.go +++ b/pkg/koordlet/resourceexecutor/reader_test.go @@ -1377,7 +1377,7 @@ func TestCgroupReader_ReadColdPageUsage(t *testing.T) { # ||||| [1,2) [2,5) [5,15) [15,30) [30,60) [60,120) [120,240) [240,+inf) csei 2613248 4657152 18182144 293683200 0 0 0 0 dsei 2568192 5140480 15306752 48648192 0 0 0 0 - cfei 2633728 4640768 66531328 340172800 0 0 0 0 + cfei 2633728 4640768 66531328 340172800 0 52834304 0 0 dfei 0 0 4096 0 0 0 0 0 csui 0 0 0 0 0 0 0 0 dsui 0 0 0 0 0 0 0 0 @@ -1396,7 +1396,7 @@ func TestCgroupReader_ReadColdPageUsage(t *testing.T) { args: args{ parentDir: "/kubepods.slice", }, - want: uint64(340172800), + want: uint64(52834304), wantErr: false, }, { diff --git a/pkg/koordlet/util/cold_page.go b/pkg/koordlet/util/cold_page.go index 4673efbc0..3f44ab1c3 100644 --- a/pkg/koordlet/util/cold_page.go +++ b/pkg/koordlet/util/cold_page.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/pkg/koordlet/util/cold_page_test.go b/pkg/koordlet/util/cold_page_test.go index 2c041b48b..4b531c705 100644 --- a/pkg/koordlet/util/cold_page_test.go +++ b/pkg/koordlet/util/cold_page_test.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, From 3212f81cd1597a9ba79afcad3ad310bed5a7f539 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Mon, 13 Nov 2023 17:08:31 +0800 Subject: [PATCH 09/26] koordlet: add page cache collector unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../collectors/pagecache/page_cache_collector_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go index 297ecd913..96d52c5ba 100644 --- a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -20,11 +20,11 @@ import ( "testing" "time" + "github.com/golang/mock/gomock" gocache "github.com/patrickmn/go-cache" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/golang/mock/gomock" "github.com/koordinator-sh/koordinator/pkg/koordlet/metriccache" "github.com/koordinator-sh/koordinator/pkg/koordlet/metricsadvisor/framework" "github.com/koordinator-sh/koordinator/pkg/koordlet/resourceexecutor" From 18f6b963616d9f602ee0da9f2b9cf6aaddc76772 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Tue, 14 Nov 2023 09:50:04 +0800 Subject: [PATCH 10/26] koordlet: add unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../collectors/coldmemoryresource/cold_page_kidled_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go index 346b89d40..cf2b98d42 100644 --- a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go @@ -563,8 +563,8 @@ func Test_collectPodColdPageInfo(t *testing.T) { # ||||| [1,2) [2,5) [5,15) [15,30) [30,60) [60,120) [120,240) [240,+inf) csei 2613248 4657152 18182144 293683200 0 0 0 0 dsei 2568192 5140480 15306752 48648192 0 0 0 0 - cfei 2633728 4640768 66531328 340172800 0 0 0 0 - dfei 0 0 4096 0 0 0 0 0 + cfei 2633728 4640768 66531328 340172800 0 52834304 0 0 + dfei 0 0 4096 0 0 52834304 0 0 csui 0 0 0 0 0 0 0 0 dsui 0 0 0 0 0 0 0 0 cfui 0 0 0 0 0 0 0 0 From c52c886a5669cf70fb20eef7b750b3b40446fcc0 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Tue, 14 Nov 2023 17:42:40 +0800 Subject: [PATCH 11/26] koordlet: add page cache unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../coldmemoryresource/cold_page_kidled_test.go | 8 ++++---- pkg/koordlet/util/cold_page_test.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go index cf2b98d42..7e5bb20a3 100644 --- a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go @@ -810,8 +810,8 @@ func Test_kidledcoldPageCollector_collectHostAppsColdPageInfo(t *testing.T) { # ||||| [1,2) [2,5) [5,15) [15,30) [30,60) [60,120) [120,240) [240,+inf) csei 2613248 4657152 18182144 293683200 0 0 0 0 dsei 2568192 5140480 15306752 48648192 0 0 0 0 - cfei 2633728 4640768 66531328 340172800 0 0 0 0 - dfei 0 0 4096 0 0 0 0 0 + cfei 2633728 4640768 66531328 340172800 0 52834304 0 0 + dfei 0 0 4096 0 0 52834304 0 0 csui 0 0 0 0 0 0 0 0 dsui 0 0 0 0 0 0 0 0 cfui 0 0 0 0 0 0 0 0 @@ -884,8 +884,8 @@ func Test_kidledcoldPageCollector_collectHostAppsColdPageInfo(t *testing.T) { wants: wants{ hostMetric: map[string]wantMetric{ "test-host-app": { - coldPageSize: 340172800, - memWithHotCache: 209715200, + coldPageSize: 1.05668608e+08, + memWithHotCache: 4.44219392e+08, }, }, }, diff --git a/pkg/koordlet/util/cold_page_test.go b/pkg/koordlet/util/cold_page_test.go index 4b531c705..2c041b48b 100644 --- a/pkg/koordlet/util/cold_page_test.go +++ b/pkg/koordlet/util/cold_page_test.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, From 016e34d1ba12bc0d8aacc00b6ed661eefc4f8503 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Tue, 14 Nov 2023 17:44:41 +0800 Subject: [PATCH 12/26] koordlet: add page cache unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- pkg/koordlet/metriccache/metric_types.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkg/koordlet/metriccache/metric_types.go b/pkg/koordlet/metriccache/metric_types.go index 51186ebb6..a0b84c4d0 100644 --- a/pkg/koordlet/metriccache/metric_types.go +++ b/pkg/koordlet/metriccache/metric_types.go @@ -49,10 +49,6 @@ const ( // NodeBE NodeMetricBE MetricKind = "node_be" - PriorityMetricCPUUsage MetricKind = "priority_cpu_usage" - PriorityMetricCPURealLimit MetricKind = "priority_cpu_real_limit" - PriorityMetricCPURequest MetricKind = "priority_cpu_request" - PodMetricCPUUsage MetricKind = "pod_cpu_usage" PodMetricMemoryUsage MetricKind = "pod_memory_usage" PodMemoryWithPageCacheUsage MetricKind = "pod_memory_usage_with_page_cache" From 9818ab9b13a68a8be3252e37eb3afc7dd09b01b9 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Tue, 14 Nov 2023 20:06:00 +0800 Subject: [PATCH 13/26] koordlet: add page cache unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../collectors/pagecache/page_cache_collector_test.go | 2 +- pkg/koordlet/util/cold_page_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go index 96d52c5ba..4e5a3d3ab 100644 --- a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -22,6 +22,7 @@ import ( "github.com/golang/mock/gomock" gocache "github.com/patrickmn/go-cache" + "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -31,7 +32,6 @@ import ( "github.com/koordinator-sh/koordinator/pkg/koordlet/statesinformer" mock_statesinformer "github.com/koordinator-sh/koordinator/pkg/koordlet/statesinformer/mockstatesinformer" "github.com/koordinator-sh/koordinator/pkg/koordlet/util/system" - "github.com/stretchr/testify/assert" ) func Test_collectPageCache(t *testing.T) { diff --git a/pkg/koordlet/util/cold_page_test.go b/pkg/koordlet/util/cold_page_test.go index 2c041b48b..4b531c705 100644 --- a/pkg/koordlet/util/cold_page_test.go +++ b/pkg/koordlet/util/cold_page_test.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, From a886fa2838f88149a4c65b7b8f8af88c0d203f1d Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Wed, 15 Nov 2023 15:17:56 +0800 Subject: [PATCH 14/26] koordlet: add page cache unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../pagecache/page_cache_collector_test.go | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go index 4e5a3d3ab..c937fce42 100644 --- a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -116,6 +116,22 @@ func Test_collectPageCache(t *testing.T) { }, }, } + testFailedPod := &corev1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-failed-pod", + Namespace: "test", + UID: "yyyyyy", + }, + Status: corev1.PodStatus{ + Phase: corev1.PodFailed, + ContainerStatuses: []corev1.ContainerStatus{ + { + Name: "test-container", + ContainerID: testContainerID, + }, + }, + }, + } type fields struct { podFilterOption framework.PodFilter @@ -161,6 +177,40 @@ func Test_collectPageCache(t *testing.T) { wantEnable: true, wantStarted: true, }, + { + name: "test failed pod", + fields: fields{ + podFilterOption: framework.DefaultPodFilter, + getPodMetas: []*statesinformer.PodMeta{ + { + CgroupDir: testPodMetaDir, + Pod: testPod, + }, + { + Pod: testFailedPod, + }, + }, + initPodLastStat: func(lastState *gocache.Cache) { + lastState.Set(string(testPod.UID), framework.CPUStat{ + CPUUsage: 0, + Timestamp: testNow.Add(-time.Second), + }, gocache.DefaultExpiration) + }, + initContainerLastStat: func(lastState *gocache.Cache) { + lastState.Set(testContainerID, framework.CPUStat{ + CPUUsage: 0, + Timestamp: testNow.Add(-time.Second), + }, gocache.DefaultExpiration) + }, + SetSysUtil: func(helper *system.FileTestUtil) { + helper.WriteProcSubFileContents(system.ProcMemInfoName, meminfo) + helper.WriteCgroupFileContents(testPodParentDir, system.MemoryStat, testMemStat) + helper.WriteCgroupFileContents(testContainerParentDir, system.MemoryStat, testMemStat) + }, + }, + wantEnable: true, + wantStarted: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { From 0744fa6a3a24bff1bf16ee5633fcb25905a65af1 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Wed, 15 Nov 2023 15:21:23 +0800 Subject: [PATCH 15/26] koordlet: add page cache unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../collectors/pagecache/page_cache_collector_test.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go index c937fce42..62d6dd81d 100644 --- a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -113,6 +113,11 @@ func Test_collectPageCache(t *testing.T) { Running: &corev1.ContainerStateRunning{}, }, }, + { + Name: "test-failed-container", + ContainerID: testContainerID, + State: corev1.ContainerState{}, + }, }, }, } From 6e39cfcd5427d5f290c4011f02525b9e0de7e2e9 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Wed, 15 Nov 2023 15:43:39 +0800 Subject: [PATCH 16/26] koordlet: add page cache unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../collectors/pagecache/page_cache_collector_test.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go index 62d6dd81d..20bff3d06 100644 --- a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -183,7 +183,7 @@ func Test_collectPageCache(t *testing.T) { wantStarted: true, }, { - name: "test failed pod", + name: "test failed pod and failed container", fields: fields{ podFilterOption: framework.DefaultPodFilter, getPodMetas: []*statesinformer.PodMeta{ @@ -210,7 +210,6 @@ func Test_collectPageCache(t *testing.T) { SetSysUtil: func(helper *system.FileTestUtil) { helper.WriteProcSubFileContents(system.ProcMemInfoName, meminfo) helper.WriteCgroupFileContents(testPodParentDir, system.MemoryStat, testMemStat) - helper.WriteCgroupFileContents(testContainerParentDir, system.MemoryStat, testMemStat) }, }, wantEnable: true, From 1ddfe5c6aeaa3160a96088ea866f4fc9beee7b18 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Wed, 15 Nov 2023 15:53:53 +0800 Subject: [PATCH 17/26] koordlet: add page cache unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../collectors/pagecache/page_cache_collector_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go index 20bff3d06..8cefde7cc 100644 --- a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -248,6 +248,9 @@ func Test_collectPageCache(t *testing.T) { assert.NotPanics(t, func() { c.collectPageCache() }) + assert.NotPanics(t, func() { + c.Setup(&framework.Context{}) + }) assert.Equal(t, tt.wantEnable, c.Enabled()) assert.Equal(t, tt.wantStarted, c.Started()) }) From 25afa9271ec2ca1ce9fd142dbde82db4ef887e9c Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Sat, 18 Nov 2023 16:28:52 +0800 Subject: [PATCH 18/26] koordlet: add unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../cold_page_kidled_test.go | 223 +++++++++--------- .../pagecache/page_cache_collector_test.go | 110 ++++----- pkg/koordlet/util/meminfo.go | 4 +- 3 files changed, 169 insertions(+), 168 deletions(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go index 7e5bb20a3..30f823491 100644 --- a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go @@ -196,53 +196,53 @@ func Test_collectColdPageInfo(t *testing.T) { total_unevictable 0 ` meminfo := `MemTotal: 1048576 kB - MemFree: 262144 kB - MemAvailable: 524288 kB - Buffers: 0 kB - Cached: 262144 kB - SwapCached: 0 kB - Active: 524288 kB - Inactive: 262144 kB - Active(anon): 262144 kB - Inactive(anon): 262144 kB - Active(file): 0 kB - Inactive(file): 262144 kB - Unevictable: 0 kB - Mlocked: 0 kB - SwapTotal: 0 kB - SwapFree: 0 kB - Dirty: 0 kB - Writeback: 0 kB - AnonPages: 0 kB - Mapped: 0 kB - Shmem: 0 kB - Slab: 0 kB - SReclaimable: 0 kB - SUnreclaim: 0 kB - KernelStack: 0 kB - PageTables: 0 kB - NFS_Unstable: 0 kB - Bounce: 0 kB - WritebackTmp: 0 kB - CommitLimit: 0 kB - Committed_AS: 0 kB - VmallocTotal: 0 kB - VmallocUsed: 0 kB - VmallocChunk: 0 kB - HardwareCorrupted: 0 kB - AnonHugePages: 0 kB - ShmemHugePages: 0 kB - ShmemPmdMapped: 0 kB - CmaTotal: 0 kB - CmaFree: 0 kB - HugePages_Total: 0 - HugePages_Free: 0 - HugePages_Rsvd: 0 - HugePages_Surp: 0 - Hugepagesize: 0 kB - DirectMap4k: 0 kB - DirectMap2M: 0 kB - DirectMap1G: 0 kB` +MemFree: 262144 kB +MemAvailable: 524288 kB +Buffers: 0 kB +Cached: 262144 kB +SwapCached: 0 kB +Active: 524288 kB +Inactive: 262144 kB +Active(anon): 262144 kB +Inactive(anon): 262144 kB +Active(file): 0 kB +Inactive(file): 262144 kB +Unevictable: 0 kB +Mlocked: 0 kB +SwapTotal: 0 kB +SwapFree: 0 kB +Dirty: 0 kB +Writeback: 0 kB +AnonPages: 0 kB +Mapped: 0 kB +Shmem: 0 kB +Slab: 0 kB +SReclaimable: 0 kB +SUnreclaim: 0 kB +KernelStack: 0 kB +PageTables: 0 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 0 kB +Committed_AS: 0 kB +VmallocTotal: 0 kB +VmallocUsed: 0 kB +VmallocChunk: 0 kB +HardwareCorrupted: 0 kB +AnonHugePages: 0 kB +ShmemHugePages: 0 kB +ShmemPmdMapped: 0 kB +CmaTotal: 0 kB +CmaFree: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 0 kB +DirectMap4k: 0 kB +DirectMap2M: 0 kB +DirectMap1G: 0 kB` testPod := &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "test-pod", @@ -440,53 +440,53 @@ func Test_collectNodeColdPageInfo(t *testing.T) { dfua 0 0 0 0 0 0 0 0 slab 0 0 0 0 0 0 0 0` meminfo := `MemTotal: 1048576 kB - MemFree: 262144 kB - MemAvailable: 524288 kB - Buffers: 0 kB - Cached: 262144 kB - SwapCached: 0 kB - Active: 524288 kB - Inactive: 262144 kB - Active(anon): 262144 kB - Inactive(anon): 262144 kB - Active(file): 0 kB - Inactive(file): 262144 kB - Unevictable: 0 kB - Mlocked: 0 kB - SwapTotal: 0 kB - SwapFree: 0 kB - Dirty: 0 kB - Writeback: 0 kB - AnonPages: 0 kB - Mapped: 0 kB - Shmem: 0 kB - Slab: 0 kB - SReclaimable: 0 kB - SUnreclaim: 0 kB - KernelStack: 0 kB - PageTables: 0 kB - NFS_Unstable: 0 kB - Bounce: 0 kB - WritebackTmp: 0 kB - CommitLimit: 0 kB - Committed_AS: 0 kB - VmallocTotal: 0 kB - VmallocUsed: 0 kB - VmallocChunk: 0 kB - HardwareCorrupted: 0 kB - AnonHugePages: 0 kB - ShmemHugePages: 0 kB - ShmemPmdMapped: 0 kB - CmaTotal: 0 kB - CmaFree: 0 kB - HugePages_Total: 0 - HugePages_Free: 0 - HugePages_Rsvd: 0 - HugePages_Surp: 0 - Hugepagesize: 0 kB - DirectMap4k: 0 kB - DirectMap2M: 0 kB - DirectMap1G: 0 kB` +MemFree: 262144 kB +MemAvailable: 524288 kB +Buffers: 0 kB +Cached: 262144 kB +SwapCached: 0 kB +Active: 524288 kB +Inactive: 262144 kB +Active(anon): 262144 kB +Inactive(anon): 262144 kB +Active(file): 0 kB +Inactive(file): 262144 kB +Unevictable: 0 kB +Mlocked: 0 kB +SwapTotal: 0 kB +SwapFree: 0 kB +Dirty: 0 kB +Writeback: 0 kB +AnonPages: 0 kB +Mapped: 0 kB +Shmem: 0 kB +Slab: 0 kB +SReclaimable: 0 kB +SUnreclaim: 0 kB +KernelStack: 0 kB +PageTables: 0 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 0 kB +Committed_AS: 0 kB +VmallocTotal: 0 kB +VmallocUsed: 0 kB +VmallocChunk: 0 kB +HardwareCorrupted: 0 kB +AnonHugePages: 0 kB +ShmemHugePages: 0 kB +ShmemPmdMapped: 0 kB +CmaTotal: 0 kB +CmaFree: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 0 kB +DirectMap4k: 0 kB +DirectMap2M: 0 kB +DirectMap1G: 0 kB` helper := system.NewFileTestUtil(t) defer helper.Cleanup() ctrl := gomock.NewController(t) @@ -530,7 +530,8 @@ func Test_collectNodeColdPageInfo(t *testing.T) { } assert.NoError(t, err) got1, got2 := testGetNodeMetrics(t, c.metricDB, testNow, 5*time.Second) - assert.Equal(t, float64(1.02090752e+09), got1) + // memInfo.MemTotal*1024 - memInfo.MemAvailable*1024 + memInfo.ActiveFile*1024 + memInfo.InactiveFile*1024 - coldPageUsageBytes + assert.Equal(t, float64(1048576*1024-524288*1024+0*1024+262144*1024-52834304), got1) assert.Equal(t, float64(52834304), got2) // test collect failed helper.WriteCgroupFileContents("", system.MemoryIdlePageStats, ``) @@ -579,14 +580,14 @@ func Test_collectPodColdPageInfo(t *testing.T) { dfua 0 0 0 0 0 0 0 0 slab 0 0 0 0 0 0 0 0` testMemStat := ` - total_cache 104857600 - total_rss 104857600 - total_inactive_anon 104857600 - total_active_anon 0 - total_inactive_file 104857600 - total_active_file 0 - total_unevictable 0 - ` +total_cache 104857600 +total_rss 104857600 +total_inactive_anon 104857600 +total_active_anon 0 +total_inactive_file 104857600 +total_active_file 0 +total_unevictable 0 +` testPod := &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "test-pod", @@ -826,14 +827,14 @@ func Test_kidledcoldPageCollector_collectHostAppsColdPageInfo(t *testing.T) { dfua 0 0 0 0 0 0 0 0 slab 0 0 0 0 0 0 0 0` testMemStat := ` - total_cache 104857600 - total_rss 104857600 - total_inactive_anon 104857600 - total_active_anon 340172800 - total_inactive_file 104857600 - total_active_file 0 - total_unevictable 0 - ` +total_cache 104857600 +total_rss 104857600 +total_inactive_anon 104857600 +total_active_anon 340172800 +total_inactive_file 104857600 +total_active_file 0 +total_unevictable 0 +` type fields struct { getNodeSLO *slov1alpha1.NodeSLO SetSysUtil func(helper *system.FileTestUtil) diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go index 8cefde7cc..2d7e2efcd 100644 --- a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -41,62 +41,62 @@ func Test_collectPageCache(t *testing.T) { testPodParentDir := "/kubepods.slice/kubepods-podxxxxxxxx.slice" testContainerParentDir := "/kubepods.slice/kubepods-podxxxxxxxx.slice/cri-containerd-123abc.scope" testMemStat := ` - total_cache 104857600 - total_rss 104857600 - total_inactive_anon 104857600 - total_active_anon 0 - total_inactive_file 104857600 - total_active_file 0 - total_unevictable 0 - ` +total_cache 104857600 +total_rss 104857600 +total_inactive_anon 104857600 +total_active_anon 0 +total_inactive_file 104857600 +total_active_file 0 +total_unevictable 0 +` meminfo := `MemTotal: 1048576 kB - MemFree: 262144 kB - MemAvailable: 524288 kB - Buffers: 0 kB - Cached: 262144 kB - SwapCached: 0 kB - Active: 524288 kB - Inactive: 262144 kB - Active(anon): 262144 kB - Inactive(anon): 262144 kB - Active(file): 0 kB - Inactive(file): 262144 kB - Unevictable: 0 kB - Mlocked: 0 kB - SwapTotal: 0 kB - SwapFree: 0 kB - Dirty: 0 kB - Writeback: 0 kB - AnonPages: 0 kB - Mapped: 0 kB - Shmem: 0 kB - Slab: 0 kB - SReclaimable: 0 kB - SUnreclaim: 0 kB - KernelStack: 0 kB - PageTables: 0 kB - NFS_Unstable: 0 kB - Bounce: 0 kB - WritebackTmp: 0 kB - CommitLimit: 0 kB - Committed_AS: 0 kB - VmallocTotal: 0 kB - VmallocUsed: 0 kB - VmallocChunk: 0 kB - HardwareCorrupted: 0 kB - AnonHugePages: 0 kB - ShmemHugePages: 0 kB - ShmemPmdMapped: 0 kB - CmaTotal: 0 kB - CmaFree: 0 kB - HugePages_Total: 0 - HugePages_Free: 0 - HugePages_Rsvd: 0 - HugePages_Surp: 0 - Hugepagesize: 0 kB - DirectMap4k: 0 kB - DirectMap2M: 0 kB - DirectMap1G: 0 kB` +MemFree: 262144 kB +MemAvailable: 524288 kB +Buffers: 0 kB +Cached: 262144 kB +SwapCached: 0 kB +Active: 524288 kB +Inactive: 262144 kB +Active(anon): 262144 kB +Inactive(anon): 262144 kB +Active(file): 0 kB +Inactive(file): 262144 kB +Unevictable: 0 kB +Mlocked: 0 kB +SwapTotal: 0 kB +SwapFree: 0 kB +Dirty: 0 kB +Writeback: 0 kB +AnonPages: 0 kB +Mapped: 0 kB +Shmem: 0 kB +Slab: 0 kB +SReclaimable: 0 kB +SUnreclaim: 0 kB +KernelStack: 0 kB +PageTables: 0 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 0 kB +Committed_AS: 0 kB +VmallocTotal: 0 kB +VmallocUsed: 0 kB +VmallocChunk: 0 kB +HardwareCorrupted: 0 kB +AnonHugePages: 0 kB +ShmemHugePages: 0 kB +ShmemPmdMapped: 0 kB +CmaTotal: 0 kB +CmaFree: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 0 kB +DirectMap4k: 0 kB +DirectMap2M: 0 kB +DirectMap1G: 0 kB` testPod := &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "test-pod", diff --git a/pkg/koordlet/util/meminfo.go b/pkg/koordlet/util/meminfo.go index 0074aeb42..b4dd8edae 100644 --- a/pkg/koordlet/util/meminfo.go +++ b/pkg/koordlet/util/meminfo.go @@ -91,8 +91,8 @@ func (i *MemInfo) MemUsageBytes() uint64 { // MemWithPageCacheUsageBytes returns the usage of mem with page cache bytes. func (i *MemInfo) MemUsageWithPageCache() uint64 { - // total - available + activefile + inactivefile - return (i.MemTotal - i.MemAvailable + i.ActiveFile + i.InactiveFile) * 1024 + // total - free + return (i.MemTotal - i.MemFree) * 1024 } // readMemInfo reads and parses the meminfo from the given file. From 7c9d5183e59a37322c7eab2cd7d79ce1c45f8cc2 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Sat, 18 Nov 2023 16:46:25 +0800 Subject: [PATCH 19/26] koordlet: add unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- pkg/koordlet/util/meminfo_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/koordlet/util/meminfo_test.go b/pkg/koordlet/util/meminfo_test.go index df0b4db29..b576e0e6a 100644 --- a/pkg/koordlet/util/meminfo_test.go +++ b/pkg/koordlet/util/meminfo_test.go @@ -340,7 +340,7 @@ DirectMap1G: 261095424 kB` got = memInfo.MemUsageBytes() assert.Equal(t, uint64((263432804-256703236)<<10), got) got = memInfo.MemUsageWithPageCache() - assert.Equal(t, uint64((263432804-256703236+2496524+2222452)<<10), got) + assert.Equal(t, uint64((263432804-254391744)<<10), got) } func TestGetNUMAMemInfo(t *testing.T) { From dacfc82229666b0ca37088c9178e8d97dab26973 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Mon, 20 Nov 2023 15:21:35 +0800 Subject: [PATCH 20/26] koodlet: add unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- pkg/koordlet/util/cold_page.go | 2 +- pkg/koordlet/util/cold_page_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/koordlet/util/cold_page.go b/pkg/koordlet/util/cold_page.go index 3f44ab1c3..e6071adc9 100644 --- a/pkg/koordlet/util/cold_page.go +++ b/pkg/koordlet/util/cold_page.go @@ -25,7 +25,7 @@ func GetNodeMemUsageWithHotPageCache(coldPageUsageBytes uint64) (uint64, error) if err != nil { return 0, err } - return memInfo.MemTotal*1024 - memInfo.MemAvailable*1024 + memInfo.ActiveFile*1024 + memInfo.InactiveFile*1024 - coldPageUsageBytes, nil + return memInfo.MemTotal*1024 - memInfo.MemFree*1024 - coldPageUsageBytes, nil } func GetCgroupMemUsageWithHotPageCache(cgroupReader resourceexecutor.CgroupReader, parentDir string, coldPageUsageBytes uint64) (uint64, error) { diff --git a/pkg/koordlet/util/cold_page_test.go b/pkg/koordlet/util/cold_page_test.go index 4b531c705..8bd5c5806 100644 --- a/pkg/koordlet/util/cold_page_test.go +++ b/pkg/koordlet/util/cold_page_test.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -90,7 +90,7 @@ DirectMap1G: 261095424 kB` helper.WriteProcSubFileContents(system.ProcMemInfoName, testMemInfo) }, }, - want: uint64((263432804-256703236+2496524+2222452)<<10) - uint64(100), + want: uint64((263432804-254391744)<<10) - uint64(100), wantErr: false, }, { From 183a91a577e2caf2adcb6beb51c20597faaa5d3f Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Mon, 20 Nov 2023 15:41:09 +0800 Subject: [PATCH 21/26] koodlet: add unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../collectors/coldmemoryresource/cold_page_kidled_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go index 30f823491..5282af421 100644 --- a/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/coldmemoryresource/cold_page_kidled_test.go @@ -530,8 +530,8 @@ DirectMap1G: 0 kB` } assert.NoError(t, err) got1, got2 := testGetNodeMetrics(t, c.metricDB, testNow, 5*time.Second) - // memInfo.MemTotal*1024 - memInfo.MemAvailable*1024 + memInfo.ActiveFile*1024 + memInfo.InactiveFile*1024 - coldPageUsageBytes - assert.Equal(t, float64(1048576*1024-524288*1024+0*1024+262144*1024-52834304), got1) + // memInfo.MemTotal*1024 - memInfo.MemFree*1024 - coldPageUsageBytes + assert.Equal(t, float64((1048576-262144)<<10-52834304), got1) assert.Equal(t, float64(52834304), got2) // test collect failed helper.WriteCgroupFileContents("", system.MemoryIdlePageStats, ``) From 6918ee944ca64e6b0bdd8fb8cd201474e20cf222 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Mon, 20 Nov 2023 15:44:32 +0800 Subject: [PATCH 22/26] koodlet: add unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- pkg/koordlet/util/cold_page_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/koordlet/util/cold_page_test.go b/pkg/koordlet/util/cold_page_test.go index 8bd5c5806..ea44b894c 100644 --- a/pkg/koordlet/util/cold_page_test.go +++ b/pkg/koordlet/util/cold_page_test.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, From 00197c3280dcf272ab21393ed3ff345f9619da27 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Fri, 24 Nov 2023 16:11:17 +0800 Subject: [PATCH 23/26] koordlet: add unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../pagecache/page_cache_collector_test.go | 99 +++++++++++++++++-- 1 file changed, 89 insertions(+), 10 deletions(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go index 2d7e2efcd..244d65776 100644 --- a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -114,9 +114,11 @@ DirectMap1G: 0 kB` }, }, { - Name: "test-failed-container", + Name: "test-no-running-container", ContainerID: testContainerID, - State: corev1.ContainerState{}, + State: corev1.ContainerState{ + Terminated: &corev1.ContainerStateTerminated{}, + }, }, }, }, @@ -125,7 +127,7 @@ DirectMap1G: 0 kB` ObjectMeta: metav1.ObjectMeta{ Name: "test-failed-pod", Namespace: "test", - UID: "yyyyyy", + UID: "yyyyyyyy", }, Status: corev1.PodStatus{ Phase: corev1.PodFailed, @@ -146,10 +148,13 @@ DirectMap1G: 0 kB` SetSysUtil func(helper *system.FileTestUtil) } tests := []struct { - name string - fields fields - wantEnable bool - wantStarted bool + name string + fields fields + wantEnable bool + wantStarted bool + wantNodeMetric float64 + wantPodMetric float64 + wantContainerMetric float64 }{ { name: "collect pagecache info", @@ -179,8 +184,11 @@ DirectMap1G: 0 kB` helper.WriteCgroupFileContents(testContainerParentDir, system.MemoryStat, testMemStat) }, }, - wantEnable: true, - wantStarted: true, + wantEnable: true, + wantStarted: true, + wantNodeMetric: (1048576 - 262144) << 10, + wantPodMetric: 104857600 + 0 + 0 + 104857600 + 0, + wantContainerMetric: 104857600 + 0 + 0 + 104857600 + 0, }, { name: "test failed pod and failed container", @@ -235,7 +243,7 @@ DirectMap1G: 0 kB` }() statesInformer := mock_statesinformer.NewMockStatesInformer(ctrl) statesInformer.EXPECT().HasSynced().Return(true).AnyTimes() - statesInformer.EXPECT().GetAllPods().Return(tt.fields.getPodMetas).Times(1) + statesInformer.EXPECT().GetAllPods().Return(tt.fields.getPodMetas).AnyTimes() collector := New(&framework.Options{ Config: &framework.Config{ EnablePageCacheCollector: true, @@ -253,7 +261,78 @@ DirectMap1G: 0 kB` }) assert.Equal(t, tt.wantEnable, c.Enabled()) assert.Equal(t, tt.wantStarted, c.Started()) + if tt.name == "collect pagecache info" { + nodeGot := testGetNodePageCacheMetrics(t, metricCache, testNow, 5*time.Second) + assert.Equal(t, tt.wantNodeMetric, nodeGot) + podGot := testGetPodPageCacheMetrics(t, metricCache, string(c.statesInformer.GetAllPods()[0].Pod.UID), testNow, 5*time.Second) + assert.Equal(t, tt.wantPodMetric, podGot) + containerGot := testGetContainerPageCacheMetrics(t, metricCache, string(c.statesInformer.GetAllPods()[0].Pod.Status.ContainerStatuses[0].ContainerID), testNow, 5*time.Second) + assert.Equal(t, tt.wantContainerMetric, containerGot) + } }) } } + +func testGetNodePageCacheMetrics(t *testing.T, metricCache metriccache.TSDBStorage, testNow time.Time, d time.Duration) float64 { + testStart := testNow.Add(-d) + testEnd := testNow.Add(d) + queryParam := metriccache.QueryParam{ + Start: &testStart, + End: &testEnd, + Aggregate: metriccache.AggregationTypeAVG, + } + querier, err := metricCache.Querier(*queryParam.Start, *queryParam.End) + assert.NoError(t, err) + nodeMemWithPageCacheAggregateResult, err := testQuery(querier, metriccache.NodeMemoryUsageWithPageCacheMetric, nil) + assert.NoError(t, err) + nodeMemWithPageCacheUsed, err := nodeMemWithPageCacheAggregateResult.Value(queryParam.Aggregate) + assert.NoError(t, err) + return nodeMemWithPageCacheUsed +} + +func testGetPodPageCacheMetrics(t *testing.T, metricCache metriccache.TSDBStorage, podUID string, testNow time.Time, d time.Duration) float64 { + testStart := testNow.Add(-d) + testEnd := testNow.Add(d) + queryParam := metriccache.QueryParam{ + Start: &testStart, + End: &testEnd, + Aggregate: metriccache.AggregationTypeAVG, + } + querier, err := metricCache.Querier(*queryParam.Start, *queryParam.End) + assert.NoError(t, err) + podMemWithPageCacheAggregateResult, err := testQuery(querier, metriccache.PodMemoryUsageWithPageCacheMetric, metriccache.MetricPropertiesFunc.Pod(podUID)) + assert.NoError(t, err) + podMemWithPageCacheUsed, err := podMemWithPageCacheAggregateResult.Value(queryParam.Aggregate) + assert.NoError(t, err) + return podMemWithPageCacheUsed +} + +func testGetContainerPageCacheMetrics(t *testing.T, metricCache metriccache.TSDBStorage, containerUID string, testNow time.Time, d time.Duration) float64 { + testStart := testNow.Add(-d) + testEnd := testNow.Add(d) + queryParam := metriccache.QueryParam{ + Start: &testStart, + End: &testEnd, + Aggregate: metriccache.AggregationTypeAVG, + } + querier, err := metricCache.Querier(*queryParam.Start, *queryParam.End) + assert.NoError(t, err) + containerMemWithPageCacheAggregateResult, err := testQuery(querier, metriccache.ContainerMemoryUsageWithPageCacheMetric, metriccache.MetricPropertiesFunc.Container(containerUID)) + assert.NoError(t, err) + containerMemWithPageCacheUsed, err := containerMemWithPageCacheAggregateResult.Value(queryParam.Aggregate) + assert.NoError(t, err) + return containerMemWithPageCacheUsed +} + +func testQuery(querier metriccache.Querier, resource metriccache.MetricResource, properties map[metriccache.MetricProperty]string) (metriccache.AggregateResult, error) { + queryMeta, err := resource.BuildQueryMeta(properties) + if err != nil { + return nil, err + } + aggregateResult := metriccache.DefaultAggregateResultFactory.New(queryMeta) + if err = querier.Query(queryMeta, nil, aggregateResult); err != nil { + return nil, err + } + return aggregateResult, nil +} From e29f4a9143805a91144bffa8b7d7973fa6563112 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Mon, 27 Nov 2023 20:02:47 +0800 Subject: [PATCH 24/26] koordlet: add unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../collectors/pagecache/page_cache_collector_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go index 244d65776..5dca7e9a0 100644 --- a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -266,7 +266,7 @@ DirectMap1G: 0 kB` assert.Equal(t, tt.wantNodeMetric, nodeGot) podGot := testGetPodPageCacheMetrics(t, metricCache, string(c.statesInformer.GetAllPods()[0].Pod.UID), testNow, 5*time.Second) assert.Equal(t, tt.wantPodMetric, podGot) - containerGot := testGetContainerPageCacheMetrics(t, metricCache, string(c.statesInformer.GetAllPods()[0].Pod.Status.ContainerStatuses[0].ContainerID), testNow, 5*time.Second) + containerGot := testGetContainerPageCacheMetrics(t, metricCache, c.statesInformer.GetAllPods()[0].Pod.Status.ContainerStatuses[0].ContainerID, testNow, 5*time.Second) assert.Equal(t, tt.wantContainerMetric, containerGot) } }) From 3cf33d52d000eaa9d9b3537183131f5fbc9d1a17 Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Tue, 28 Nov 2023 15:24:17 +0800 Subject: [PATCH 25/26] koordlet: add unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../collectors/pagecache/page_cache_collector_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go index 5dca7e9a0..d1071c209 100644 --- a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -141,6 +141,7 @@ DirectMap1G: 0 kB` } type fields struct { + name string podFilterOption framework.PodFilter getPodMetas []*statesinformer.PodMeta initPodLastStat func(lastState *gocache.Cache) @@ -159,6 +160,7 @@ DirectMap1G: 0 kB` { name: "collect pagecache info", fields: fields{ + name: "used to collect metrics", podFilterOption: framework.DefaultPodFilter, getPodMetas: []*statesinformer.PodMeta{ { @@ -261,7 +263,7 @@ DirectMap1G: 0 kB` }) assert.Equal(t, tt.wantEnable, c.Enabled()) assert.Equal(t, tt.wantStarted, c.Started()) - if tt.name == "collect pagecache info" { + if tt.fields.name == "used to collect metrics" { nodeGot := testGetNodePageCacheMetrics(t, metricCache, testNow, 5*time.Second) assert.Equal(t, tt.wantNodeMetric, nodeGot) podGot := testGetPodPageCacheMetrics(t, metricCache, string(c.statesInformer.GetAllPods()[0].Pod.UID), testNow, 5*time.Second) From 496ac3efe14dc7643a4ec2a86c02b01db81a384d Mon Sep 17 00:00:00 2001 From: BUPT-wxq <1725712048@qq.com> Date: Thu, 30 Nov 2023 11:19:52 +0800 Subject: [PATCH 26/26] koordlet: add unit test Signed-off-by: BUPT-wxq <1725712048@qq.com> --- .../collectors/pagecache/page_cache_collector_test.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go index d1071c209..113794d44 100644 --- a/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go +++ b/pkg/koordlet/metricsadvisor/collectors/pagecache/page_cache_collector_test.go @@ -141,7 +141,6 @@ DirectMap1G: 0 kB` } type fields struct { - name string podFilterOption framework.PodFilter getPodMetas []*statesinformer.PodMeta initPodLastStat func(lastState *gocache.Cache) @@ -151,6 +150,7 @@ DirectMap1G: 0 kB` tests := []struct { name string fields fields + wantMetrics bool wantEnable bool wantStarted bool wantNodeMetric float64 @@ -158,9 +158,9 @@ DirectMap1G: 0 kB` wantContainerMetric float64 }{ { - name: "collect pagecache info", + name: "collect pagecache info", + wantMetrics: true, fields: fields{ - name: "used to collect metrics", podFilterOption: framework.DefaultPodFilter, getPodMetas: []*statesinformer.PodMeta{ { @@ -193,7 +193,8 @@ DirectMap1G: 0 kB` wantContainerMetric: 104857600 + 0 + 0 + 104857600 + 0, }, { - name: "test failed pod and failed container", + name: "test failed pod and failed container", + wantMetrics: false, fields: fields{ podFilterOption: framework.DefaultPodFilter, getPodMetas: []*statesinformer.PodMeta{ @@ -263,7 +264,7 @@ DirectMap1G: 0 kB` }) assert.Equal(t, tt.wantEnable, c.Enabled()) assert.Equal(t, tt.wantStarted, c.Started()) - if tt.fields.name == "used to collect metrics" { + if tt.wantMetrics { nodeGot := testGetNodePageCacheMetrics(t, metricCache, testNow, 5*time.Second) assert.Equal(t, tt.wantNodeMetric, nodeGot) podGot := testGetPodPageCacheMetrics(t, metricCache, string(c.statesInformer.GetAllPods()[0].Pod.UID), testNow, 5*time.Second)