From 274ad0391fc1a342294259d6b11a6d8716b6630e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Skocze=C5=84?= Date: Mon, 27 Jan 2025 11:55:08 +0000 Subject: [PATCH] Add scheduler_perf test case for default PodTopologySpreading constraints --- .../misc/performance-config.yaml | 75 +++++++++++++++++++ .../scheduler_perf/templates/service.yaml | 11 +++ 2 files changed, 86 insertions(+) create mode 100644 test/integration/scheduler_perf/templates/service.yaml diff --git a/test/integration/scheduler_perf/misc/performance-config.yaml b/test/integration/scheduler_perf/misc/performance-config.yaml index b7536930622..026748ba63d 100644 --- a/test/integration/scheduler_perf/misc/performance-config.yaml +++ b/test/integration/scheduler_perf/misc/performance-config.yaml @@ -74,6 +74,14 @@ initNodes: 5000 initPods: 1000 measurePods: 10000 + - name: 5000Nodes_50000Pods_QueueingHintsEnabled + featureGates: + SchedulerQueueingHints: true + labels: [performance] + params: + initNodes: 5000 + initPods: 5000 + measurePods: 50000 # This test case simulates the scheduling of daemonset. # https://github.com/kubernetes/kubernetes/issues/124709 @@ -253,6 +261,73 @@ initPods: 5000 measurePods: 5000 +# This test case simulates the scheduling of pods with service. +# It benchmarks default PodTopologySpread constraints that calculate the label selector from services. +- name: DefaultTopologySpreading + workloadTemplate: + - opcode: createNodes + countParam: $initNodes + nodeTemplatePath: ../templates/node-default.yaml + labelNodePrepareStrategy: + labelKey: "topology.kubernetes.io/zone" + labelValues: ["moon-1", "moon-2", "moon-3"] + - opcode: createAny + namespace: service-ns + templatePath: ../templates/service.yaml + - opcode: createPods + countParam: $initPods + podTemplatePath: ../templates/pod-default.yaml + - opcode: createPods + namespace: service-ns + countParam: $measurePods + podTemplatePath: ../templates/pod-with-label.yaml + collectMetrics: true + workloads: + - name: 5Nodes + featureGates: + SchedulerQueueingHints: false + labels: [integration-test, short] + params: + initNodes: 5 + initPods: 10 + measurePods: 10 + - name: 5Nodes_QueueingHintsEnabled + featureGates: + SchedulerQueueingHints: true + labels: [integration-test, short] + params: + initNodes: 5 + initPods: 10 + measurePods: 10 + - name: 500Nodes + labels: [performance, short] + params: + initNodes: 500 + initPods: 1000 + measurePods: 1000 + - name: 5000Nodes_10000Pods + labels: [performance] + params: + initNodes: 5000 + initPods: 5000 + measurePods: 10000 + - name: 5000Nodes_50000Pods + featureGates: + SchedulerQueueingHints: false + labels: [performance] + params: + initNodes: 5000 + initPods: 5000 + measurePods: 50000 + - name: 5000Nodes_50000Pods_QueueingHintsEnabled + featureGates: + SchedulerQueueingHints: true + labels: [performance] + params: + initNodes: 5000 + initPods: 5000 + measurePods: 50000 + - name: PreemptionBasic workloadTemplate: - opcode: createNodes diff --git a/test/integration/scheduler_perf/templates/service.yaml b/test/integration/scheduler_perf/templates/service.yaml new file mode 100644 index 00000000000..54cc52ce69b --- /dev/null +++ b/test/integration/scheduler_perf/templates/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + generateName: service- +spec: + selector: + app: scheduler-perf + ports: + - protocol: TCP + port: 80 + targetPort: 8000