Merge pull request #117813 from pohly/scheduler-perf-test-runtime
scheduler-perf: measure workload runtime and relabel workloads
This commit is contained in:
		| @@ -1,5 +1,4 @@ | ||||
| - name: SchedulingBasic | ||||
|   labels: [performance] | ||||
|   defaultPodTemplatePath: config/pod-default.yaml | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
| @@ -17,13 +16,13 @@ | ||||
|       initPods: 500 | ||||
|       measurePods: 1000 | ||||
|   - name: 5000Nodes | ||||
|     labels: [performance, fast] | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
|       initPods: 1000 | ||||
|       measurePods: 1000 | ||||
|  | ||||
| - name: SchedulingPodAntiAffinity | ||||
|   labels: [performance] | ||||
|   defaultPodTemplatePath: config/pod-with-pod-anti-affinity.yaml | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
| @@ -46,13 +45,13 @@ | ||||
|       initPods: 100 | ||||
|       measurePods: 400 | ||||
|   - name: 5000Nodes | ||||
|     labels: [performance, fast] | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
|       initPods: 1000 | ||||
|       measurePods: 1000 | ||||
|  | ||||
| - name: SchedulingSecrets | ||||
|   labels: [performance] | ||||
|   defaultPodTemplatePath: config/pod-with-secret-volume.yaml | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
| @@ -70,6 +69,7 @@ | ||||
|       initPods: 500 | ||||
|       measurePods: 1000 | ||||
|   - name: 5000Nodes | ||||
|     labels: [performance, fast] | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
|       initPods: 5000 | ||||
| @@ -173,7 +173,6 @@ | ||||
|       measurePods: 1000 | ||||
|  | ||||
| - name: SchedulingPodAffinity | ||||
|   labels: [performance] | ||||
|   defaultPodTemplatePath: config/pod-with-pod-affinity.yaml | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
| @@ -200,6 +199,7 @@ | ||||
|       initPods: 500 | ||||
|       measurePods: 1000 | ||||
|   - name: 5000Nodes | ||||
|     labels: [performance, fast] | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
|       initPods: 5000 | ||||
| @@ -235,7 +235,6 @@ | ||||
|       measurePods: 1000 | ||||
|  | ||||
| - name: SchedulingPreferredPodAntiAffinity | ||||
|   labels: [performance] | ||||
|   defaultPodTemplatePath: config/pod-with-preferred-pod-affinity.yaml | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
| @@ -258,13 +257,13 @@ | ||||
|       initPods: 500 | ||||
|       measurePods: 1000 | ||||
|   - name: 5000Nodes | ||||
|     labels: [performance, fast] | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
|       initPods: 5000 | ||||
|       measurePods: 1000 | ||||
|  | ||||
| - name: SchedulingNodeAffinity | ||||
|   labels: [performance] | ||||
|   defaultPodTemplatePath: config/pod-with-node-affinity.yaml | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
| @@ -286,13 +285,13 @@ | ||||
|       initPods: 500 | ||||
|       measurePods: 1000 | ||||
|   - name: 5000Nodes | ||||
|     labels: [performance, fast] | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
|       initPods: 5000 | ||||
|       measurePods: 1000 | ||||
|  | ||||
| - name: TopologySpreading | ||||
|   labels: [performance] | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
|     countParam: $initNodes | ||||
| @@ -315,6 +314,7 @@ | ||||
|       initPods: 1000 | ||||
|       measurePods: 1000 | ||||
|   - name: 5000Nodes | ||||
|     labels: [performance, fast] | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
|       initPods: 5000 | ||||
| @@ -411,6 +411,7 @@ | ||||
|     collectMetrics: true | ||||
|   workloads: | ||||
|   - name: 500Nodes | ||||
|     labels: [fast] | ||||
|     params: | ||||
|       initNodes: 500 | ||||
|       initPods: 2000 | ||||
| @@ -455,7 +456,6 @@ | ||||
| #      measurePods: 5000 | ||||
|  | ||||
| - name: Unschedulable | ||||
|   labels: [performance] | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
|     countParam: $initNodes | ||||
| @@ -475,6 +475,7 @@ | ||||
|       initPods: 200 | ||||
|       measurePods: 1000 | ||||
|   - name: 5000Nodes/200InitPods | ||||
|     labels: [performance, fast] | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
|       initPods: 200 | ||||
| @@ -508,11 +509,13 @@ | ||||
|       initNodes: 1000 | ||||
|       measurePods: 1000 | ||||
|   - name: 5000Nodes | ||||
|     labels: [performance, fast] | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
|       measurePods: 2000 | ||||
|  | ||||
| - name: SchedulingRequiredPodAntiAffinityWithNSSelector | ||||
|   labels: [performance] | ||||
|   defaultPodTemplatePath: config/pod-anti-affinity-ns-selector.yaml | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
| @@ -536,6 +539,13 @@ | ||||
|     collectMetrics: true | ||||
|     namespace: measure-ns-0 | ||||
|   workloads: | ||||
|   - name: 500Nodes | ||||
|     labels: [fast] | ||||
|     params: | ||||
|       initNodes: 500 | ||||
|       initPodsPerNamespace: 4 | ||||
|       initNamespaces: 10 | ||||
|       measurePods: 100 | ||||
|   - name: 5000Nodes | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
| @@ -544,6 +554,7 @@ | ||||
|       measurePods: 1000 | ||||
|  | ||||
| - name: SchedulingPreferredAntiAffinityWithNSSelector | ||||
|   labels: [performance] | ||||
|   defaultPodTemplatePath: config/pod-preferred-anti-affinity-ns-selector.yaml | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
| @@ -567,6 +578,13 @@ | ||||
|     collectMetrics: true | ||||
|     namespace: measure-ns-0 | ||||
|   workloads: | ||||
|   - name: 500Nodes | ||||
|     labels: [fast] | ||||
|     params: | ||||
|       initNodes: 500 | ||||
|       initPodsPerNamespace: 4 | ||||
|       initNamespaces: 10 | ||||
|       measurePods: 100 | ||||
|   - name: 5000Nodes | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
| @@ -575,6 +593,7 @@ | ||||
|       measurePods: 1000 | ||||
|  | ||||
| - name: SchedulingRequiredPodAffinityWithNSSelector | ||||
|   labels: [performance] | ||||
|   defaultPodTemplatePath: config/pod-affinity-ns-selector.yaml | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
| @@ -601,6 +620,13 @@ | ||||
|     collectMetrics: true | ||||
|     namespace: measure-ns-0 | ||||
|   workloads: | ||||
|   - name: 500Nodes | ||||
|     labels: [fast] | ||||
|     params: | ||||
|       initNodes: 500 | ||||
|       initPodsPerNamespace: 4 | ||||
|       initNamespaces: 10 | ||||
|       measurePods: 100 | ||||
|   - name: 5000Nodes | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
| @@ -609,6 +635,7 @@ | ||||
|       measurePods: 1000 | ||||
|  | ||||
| - name: SchedulingPreferredAffinityWithNSSelector | ||||
|   labels: [performance] | ||||
|   defaultPodTemplatePath: config/pod-preferred-affinity-ns-selector.yaml | ||||
|   workloadTemplate: | ||||
|   - opcode: createNodes | ||||
| @@ -632,6 +659,13 @@ | ||||
|     collectMetrics: true | ||||
|     namespace: measure-ns-0 | ||||
|   workloads: | ||||
|   - name: 500Nodes | ||||
|     labels: [fast] | ||||
|     params: | ||||
|       initNodes: 500 | ||||
|       initPodsPerNamespace: 4 | ||||
|       initNamespaces: 10 | ||||
|       measurePods: 100 | ||||
|   - name: 5000Nodes | ||||
|     params: | ||||
|       initNodes: 5000 | ||||
| @@ -660,6 +694,7 @@ | ||||
|       normalNodes: 400 | ||||
|       measurePods: 400 | ||||
|   - name: 5000Nodes | ||||
|     labels: [performance, fast] | ||||
|     params: | ||||
|       taintNodes: 1000 | ||||
|       normalNodes: 4000 | ||||
|   | ||||
| @@ -769,6 +769,15 @@ func unrollWorkloadTemplate(b *testing.B, wt []op, w *workload) []op { | ||||
| } | ||||
|  | ||||
| func runWorkload(ctx context.Context, b *testing.B, tc *testCase, w *workload) []DataItem { | ||||
| 	start := time.Now() | ||||
| 	b.Cleanup(func() { | ||||
| 		duration := time.Now().Sub(start) | ||||
| 		// This includes startup and shutdown time and thus does not | ||||
| 		// reflect scheduling performance. It's useful to get a feeling | ||||
| 		// for how long each workload runs overall. | ||||
| 		b.ReportMetric(duration.Seconds(), "runtime_seconds") | ||||
| 	}) | ||||
|  | ||||
| 	var cfg *config.KubeSchedulerConfiguration | ||||
| 	var err error | ||||
| 	if tc.SchedulerConfigPath != nil { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Prow Robot
					Kubernetes Prow Robot