From 1747483922b93d8dcd508dd6bae8a6587eab63d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Skocze=C5=84?= Date: Wed, 24 Jul 2024 13:33:19 +0000 Subject: [PATCH 1/2] Add larger scheduler_perf test cases --- .../config/performance-config.yaml | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/test/integration/scheduler_perf/config/performance-config.yaml b/test/integration/scheduler_perf/config/performance-config.yaml index 9d5183d4666..82031eb91e1 100644 --- a/test/integration/scheduler_perf/config/performance-config.yaml +++ b/test/integration/scheduler_perf/config/performance-config.yaml @@ -35,6 +35,12 @@ initNodes: 5000 initPods: 1000 measurePods: 1000 + - name: 5000Nodes_10000Pods + labels: [performance] + params: + initNodes: 5000 + initPods: 1000 + measurePods: 10000 - name: SchedulingPodAntiAffinity defaultPodTemplatePath: config/templates/pod-with-pod-anti-affinity.yaml @@ -64,6 +70,12 @@ initNodes: 5000 initPods: 1000 measurePods: 1000 + - name: 5000Nodes_2000Pods + labels: [performance] + params: + initNodes: 5000 + initPods: 1000 + measurePods: 2000 - name: SchedulingSecrets defaultPodTemplatePath: config/templates/pod-with-secret-volume.yaml @@ -88,6 +100,12 @@ initNodes: 5000 initPods: 5000 measurePods: 1000 + - name: 5000Nodes_10000Pods + labels: [performance] + params: + initNodes: 5000 + initPods: 1000 + measurePods: 10000 - name: SchedulingInTreePVs labels: [performance] @@ -115,6 +133,11 @@ initNodes: 5000 initPods: 5000 measurePods: 1000 + - name: 5000Nodes_2000Pods + params: + initNodes: 5000 + initPods: 1000 + measurePods: 2000 - name: SchedulingMigratedInTreePVs labels: [performance] @@ -151,6 +174,11 @@ initNodes: 5000 initPods: 5000 measurePods: 1000 + - name: 5000Nodes_5000Pods + params: + initNodes: 5000 + initPods: 5000 + measurePods: 5000 - name: SchedulingCSIPVs labels: [performance] @@ -185,6 +213,11 @@ initNodes: 5000 initPods: 5000 measurePods: 1000 + - name: 5000Nodes_5000Pods + params: + initNodes: 5000 + initPods: 5000 + measurePods: 5000 - name: SchedulingPodAffinity defaultPodTemplatePath: config/templates/pod-with-pod-affinity.yaml @@ -218,6 +251,12 @@ initNodes: 5000 initPods: 5000 measurePods: 1000 + - name: 5000Nodes_5000Pods + labels: [performance] + params: + initNodes: 5000 + initPods: 5000 + measurePods: 5000 - name: SchedulingPreferredPodAffinity labels: [performance] @@ -247,6 +286,11 @@ initNodes: 5000 initPods: 5000 measurePods: 1000 + - name: 5000Nodes_5000Pods + params: + initNodes: 5000 + initPods: 5000 + measurePods: 5000 - name: SchedulingPreferredPodAntiAffinity defaultPodTemplatePath: config/templates/pod-with-preferred-pod-affinity.yaml @@ -276,6 +320,12 @@ initNodes: 5000 initPods: 5000 measurePods: 1000 + - name: 5000Nodes_5000Pods + labels: [performance] + params: + initNodes: 5000 + initPods: 5000 + measurePods: 5000 # This test case simulates the scheduling of daemonset. # https://github.com/kubernetes/kubernetes/issues/124709 @@ -331,6 +381,12 @@ initNodes: 5000 initPods: 5000 measurePods: 1000 + - name: 5000Nodes_10000Pods + labels: [performance] + params: + initNodes: 5000 + initPods: 5000 + measurePods: 10000 - name: TopologySpreading workloadTemplate: @@ -360,6 +416,12 @@ initNodes: 5000 initPods: 5000 measurePods: 2000 + - name: 5000Nodes_5000Pods + labels: [performance] + params: + initNodes: 5000 + initPods: 5000 + measurePods: 5000 - name: PreferredTopologySpreading labels: [performance] @@ -389,6 +451,11 @@ initNodes: 5000 initPods: 5000 measurePods: 2000 + - name: 5000Nodes_5000Pods + params: + initNodes: 5000 + initPods: 5000 + measurePods: 5000 - name: MixedSchedulingBasePod labels: [performance] @@ -437,6 +504,11 @@ initNodes: 5000 initPods: 2000 measurePods: 1000 + - name: 5000Nodes_5000Pods + params: + initNodes: 5000 + initPods: 2000 + measurePods: 5000 - name: PreemptionBasic labels: [performance] @@ -521,6 +593,12 @@ initNodes: 5000 initPods: 200 measurePods: 5000 + - name: 5000Nodes/200InitPods/10000Pods + labels: [performance] + params: + initNodes: 5000 + initPods: 200 + measurePods: 10000 - name: 5000Nodes/2000InitPods params: initNodes: 5000 @@ -554,6 +632,11 @@ params: initNodes: 5000 measurePods: 2000 + - name: 5000Nodes_10000Pods + labels: [performance] + params: + initNodes: 5000 + measurePods: 10000 - name: SchedulingRequiredPodAntiAffinityWithNSSelector labels: [performance] @@ -593,6 +676,12 @@ initPodsPerNamespace: 40 initNamespaces: 100 measurePods: 1000 + - name: 5000Nodes_2000Pods + params: + initNodes: 6000 + initPodsPerNamespace: 40 + initNamespaces: 100 + measurePods: 2000 - name: SchedulingPreferredAntiAffinityWithNSSelector labels: [performance] @@ -632,6 +721,12 @@ initPodsPerNamespace: 40 initNamespaces: 100 measurePods: 1000 + - name: 5000Nodes_2000Pods + params: + initNodes: 5000 + initPodsPerNamespace: 40 + initNamespaces: 100 + measurePods: 2000 - name: SchedulingRequiredPodAffinityWithNSSelector labels: [performance] @@ -674,6 +769,12 @@ initPodsPerNamespace: 50 initNamespaces: 100 measurePods: 1000 + - name: 5000Nodes_2000Pods + params: + initNodes: 5000 + initPodsPerNamespace: 50 + initNamespaces: 100 + measurePods: 2000 - name: SchedulingPreferredAffinityWithNSSelector labels: [performance] @@ -713,6 +814,12 @@ initPodsPerNamespace: 50 initNamespaces: 100 measurePods: 1000 + - name: 5000Nodes_5000Pods + params: + initNodes: 5000 + initPodsPerNamespace: 50 + initNamespaces: 100 + measurePods: 5000 - name: SchedulingWithNodeInclusionPolicy featureGates: From 3b7b50a2cc477aaee6262c9a36469c2a194735e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Skocze=C5=84?= Date: Thu, 25 Jul 2024 10:56:58 +0000 Subject: [PATCH 2/2] Create fresh etcd instance for each workload in scheduler_perf --- test/integration/framework/etcd.go | 24 ++++++------ .../config/performance-config.yaml | 38 +++++++++---------- .../scheduler_perf/scheduler_perf.go | 4 +- 3 files changed, 34 insertions(+), 32 deletions(-) diff --git a/test/integration/framework/etcd.go b/test/integration/framework/etcd.go index 48aae9f28dc..d816f623dca 100644 --- a/test/integration/framework/etcd.go +++ b/test/integration/framework/etcd.go @@ -64,15 +64,17 @@ func getAvailablePort() (int, error) { // startEtcd executes an etcd instance. The returned function will signal the // etcd process and wait for it to exit. -func startEtcd(output io.Writer) (func(), error) { - etcdURL := env.GetEnvAsStringOrFallback("KUBE_INTEGRATION_ETCD_URL", "http://127.0.0.1:2379") - conn, err := net.Dial("tcp", strings.TrimPrefix(etcdURL, "http://")) - if err == nil { - klog.Infof("etcd already running at %s", etcdURL) - conn.Close() - return func() {}, nil +func startEtcd(output io.Writer, forceCreate bool) (func(), error) { + if !forceCreate { + etcdURL := env.GetEnvAsStringOrFallback("KUBE_INTEGRATION_ETCD_URL", "http://127.0.0.1:2379") + conn, err := net.Dial("tcp", strings.TrimPrefix(etcdURL, "http://")) + if err == nil { + klog.Infof("etcd already running at %s", etcdURL) + _ = conn.Close() + return func() {}, nil + } + klog.V(1).Infof("could not connect to etcd: %v", err) } - klog.V(1).Infof("could not connect to etcd: %v", err) currentURL, stop, err := RunCustomEtcd("integration_test_etcd_data", nil, output) if err != nil { @@ -217,7 +219,7 @@ func EtcdMain(tests func() int) { goleak.IgnoreTopFunction("github.com/moby/spdystream.(*Connection).shutdown"), ) - stop, err := startEtcd(nil) + stop, err := startEtcd(nil, false) if err != nil { klog.Fatalf("cannot run integration tests: unable to start etcd: %v", err) } @@ -247,8 +249,8 @@ func GetEtcdURL() string { // // Starting etcd multiple times per test run instead of once with EtcdMain // provides better separation between different tests. -func StartEtcd(tb testing.TB, etcdOutput io.Writer) { - stop, err := startEtcd(etcdOutput) +func StartEtcd(tb testing.TB, etcdOutput io.Writer, forceCreate bool) { + stop, err := startEtcd(etcdOutput, forceCreate) if err != nil { tb.Fatalf("unable to start etcd: %v", err) } diff --git a/test/integration/scheduler_perf/config/performance-config.yaml b/test/integration/scheduler_perf/config/performance-config.yaml index 82031eb91e1..0e48e85b122 100644 --- a/test/integration/scheduler_perf/config/performance-config.yaml +++ b/test/integration/scheduler_perf/config/performance-config.yaml @@ -30,7 +30,7 @@ initPods: 500 measurePods: 1000 - name: 5000Nodes - labels: [performance, fast] + labels: [fast] params: initNodes: 5000 initPods: 1000 @@ -65,7 +65,7 @@ initPods: 100 measurePods: 400 - name: 5000Nodes - labels: [performance, fast] + labels: [fast] params: initNodes: 5000 initPods: 1000 @@ -95,7 +95,7 @@ initPods: 500 measurePods: 1000 - name: 5000Nodes - labels: [performance, fast] + labels: [fast] params: initNodes: 5000 initPods: 5000 @@ -108,7 +108,6 @@ measurePods: 10000 - name: SchedulingInTreePVs - labels: [performance] workloadTemplate: - opcode: createNodes countParam: $initNodes @@ -134,13 +133,13 @@ initPods: 5000 measurePods: 1000 - name: 5000Nodes_2000Pods + labels: [performance] params: initNodes: 5000 initPods: 1000 measurePods: 2000 - name: SchedulingMigratedInTreePVs - labels: [performance] workloadTemplate: - opcode: createNodes countParam: $initNodes @@ -175,13 +174,13 @@ initPods: 5000 measurePods: 1000 - name: 5000Nodes_5000Pods + labels: [performance] params: initNodes: 5000 initPods: 5000 measurePods: 5000 - name: SchedulingCSIPVs - labels: [performance] workloadTemplate: - opcode: createNodes countParam: $initNodes @@ -214,6 +213,7 @@ initPods: 5000 measurePods: 1000 - name: 5000Nodes_5000Pods + labels: [performance] params: initNodes: 5000 initPods: 5000 @@ -246,7 +246,7 @@ initPods: 500 measurePods: 1000 - name: 5000Nodes - labels: [performance, fast] + labels: [fast] params: initNodes: 5000 initPods: 5000 @@ -259,7 +259,6 @@ measurePods: 5000 - name: SchedulingPreferredPodAffinity - labels: [performance] defaultPodTemplatePath: config/templates/pod-with-preferred-pod-affinity.yaml workloadTemplate: - opcode: createNodes @@ -287,6 +286,7 @@ initPods: 5000 measurePods: 1000 - name: 5000Nodes_5000Pods + labels: [performance] params: initNodes: 5000 initPods: 5000 @@ -315,7 +315,7 @@ initPods: 500 measurePods: 1000 - name: 5000Nodes - labels: [performance, fast] + labels: [fast] params: initNodes: 5000 initPods: 5000 @@ -376,7 +376,7 @@ initPods: 500 measurePods: 1000 - name: 5000Nodes - labels: [performance, fast] + labels: [fast] params: initNodes: 5000 initPods: 5000 @@ -411,7 +411,7 @@ initPods: 1000 measurePods: 1000 - name: 5000Nodes - labels: [performance, fast] + labels: [fast] params: initNodes: 5000 initPods: 5000 @@ -424,7 +424,6 @@ measurePods: 5000 - name: PreferredTopologySpreading - labels: [performance] workloadTemplate: - opcode: createNodes countParam: $initNodes @@ -452,13 +451,13 @@ initPods: 5000 measurePods: 2000 - name: 5000Nodes_5000Pods + labels: [performance] params: initNodes: 5000 initPods: 5000 measurePods: 5000 - name: MixedSchedulingBasePod - labels: [performance] defaultPodTemplatePath: config/templates/pod-default.yaml workloadTemplate: - opcode: createNodes @@ -505,6 +504,7 @@ initPods: 2000 measurePods: 1000 - name: 5000Nodes_5000Pods + labels: [performance] params: initNodes: 5000 initPods: 2000 @@ -588,7 +588,7 @@ initPods: 200 measurePods: 1000 - name: 5000Nodes/200InitPods - labels: [performance, fast] + labels: [fast] params: initNodes: 5000 initPods: 200 @@ -628,7 +628,7 @@ initNodes: 1000 measurePods: 1000 - name: 5000Nodes - labels: [performance, fast] + labels: [fast] params: initNodes: 5000 measurePods: 2000 @@ -639,7 +639,6 @@ measurePods: 10000 - name: SchedulingRequiredPodAntiAffinityWithNSSelector - labels: [performance] defaultPodTemplatePath: config/templates/pod-anti-affinity-ns-selector.yaml workloadTemplate: - opcode: createNodes @@ -677,6 +676,7 @@ initNamespaces: 100 measurePods: 1000 - name: 5000Nodes_2000Pods + labels: [performance] params: initNodes: 6000 initPodsPerNamespace: 40 @@ -684,7 +684,6 @@ measurePods: 2000 - name: SchedulingPreferredAntiAffinityWithNSSelector - labels: [performance] defaultPodTemplatePath: config/templates/pod-preferred-anti-affinity-ns-selector.yaml workloadTemplate: - opcode: createNodes @@ -722,6 +721,7 @@ initNamespaces: 100 measurePods: 1000 - name: 5000Nodes_2000Pods + labels: [performance] params: initNodes: 5000 initPodsPerNamespace: 40 @@ -729,7 +729,6 @@ measurePods: 2000 - name: SchedulingRequiredPodAffinityWithNSSelector - labels: [performance] defaultPodTemplatePath: config/templates/pod-affinity-ns-selector.yaml workloadTemplate: - opcode: createNodes @@ -770,6 +769,7 @@ initNamespaces: 100 measurePods: 1000 - name: 5000Nodes_2000Pods + labels: [performance] params: initNodes: 5000 initPodsPerNamespace: 50 @@ -777,7 +777,6 @@ measurePods: 2000 - name: SchedulingPreferredAffinityWithNSSelector - labels: [performance] defaultPodTemplatePath: config/templates/pod-preferred-affinity-ns-selector.yaml workloadTemplate: - opcode: createNodes @@ -815,6 +814,7 @@ initNamespaces: 100 measurePods: 1000 - name: 5000Nodes_5000Pods + labels: [performance] params: initNodes: 5000 initPodsPerNamespace: 50 diff --git a/test/integration/scheduler_perf/scheduler_perf.go b/test/integration/scheduler_perf/scheduler_perf.go index 7ecaca00f55..81bf96efe80 100644 --- a/test/integration/scheduler_perf/scheduler_perf.go +++ b/test/integration/scheduler_perf/scheduler_perf.go @@ -777,8 +777,8 @@ func setupTestCase(t testing.TB, tc *testCase, output io.Writer, outOfTreePlugin framework.GoleakCheck(t) // Now that we are ready to run, start - // etcd. - framework.StartEtcd(t, output) + // a brand new etcd. + framework.StartEtcd(t, output, true) for feature, flag := range tc.FeatureGates { featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, feature, flag)