Merge pull request #126352 from macsko/create_smaller_integration_scheduler_perf_cases

Make smaller workloads for scheduler_perf integration tests
This commit is contained in:
Kubernetes Prow Robot 2024-08-20 09:01:41 -07:00 committed by GitHub
commit 2063d8dac1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 211 additions and 27 deletions

View File

@ -110,6 +110,22 @@ make test-integration WHAT=./test/integration/scheduler_perf KUBE_TEST_ARGS=-use
```
Integration testing uses the same `config/performance-config.yaml` as
benchmarking. By default, workloads labeled as `integration-test` are executed
as part of integration testing. `-test-scheduling-label-filter` can be used to
change that.
benchmarking. By default, workloads labeled as `integration-test`
are executed as part of integration testing (in ci-kubernetes-integration-master job).
`-test-scheduling-label-filter` can be used to change that.
All test cases should have at least one workload labeled as `integration-test`.
Running the integration tests with command above will only execute the workloads labeled as `short`.
`SHORT=--short=false` variable added to the command can be used to disable this filtering.
We should make each test case with `short` label very small,
so that all tests with the label should take less than 5 min to complete.
The test cases labeled as `short` are executed in pull-kubernetes-integration job.
### Labels used by CI jobs
| CI Job | Labels |
|----------------------------------|------------------------|
| ci-kubernetes-integration-master | integration-test |
| pull-kubernetes-integration | integration-test,short |
| ci-benchmark-scheduler-perf | performance |

View File

@ -1,8 +1,13 @@
# The following labels are used in this file:
# - fast: short execution time, ideally less than 30 seconds
# - integration-test: used to select workloads that
# run in pull-kubernetes-integration. Choosing those tests
# run in ci-kubernetes-integration-master. Choosing those tests
# is a tradeoff between code coverage and overall runtime.
# - short: used to select workloads that
# run in pull-kubernetes-integration.
# We should make each test case with short label very small,
# so that all tests with the label should take less than 5 min to complete.
# They can be run using --short=true flag.
# - performance: used to select workloads that run
# in ci-benchmark-scheduler-perf. Such workloads
# must run long enough (ideally, longer than 10 seconds)
@ -23,6 +28,12 @@
countParam: $measurePods
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast, short]
params:
initNodes: 5
initPods: 5
measurePods: 10
- name: 500Nodes
labels: [integration-test, fast]
params:
@ -58,6 +69,12 @@
collectMetrics: true
namespace: sched-1
workloads:
- name: 5Nodes
labels: [integration-test, fast, short]
params:
initNodes: 5
initPods: 1
measurePods: 4
- name: 500Nodes
labels: [integration-test, fast]
params:
@ -88,8 +105,14 @@
countParam: $measurePods
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast, short]
params:
initNodes: 5
initPods: 5
measurePods: 10
- name: 500Nodes
labels: [fast]
labels: [integration-test, fast]
params:
initNodes: 500
initPods: 500
@ -121,13 +144,20 @@
persistentVolumeClaimTemplatePath: config/templates/pvc.yaml
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast]
params:
initNodes: 5
initPods: 5
measurePods: 10
- name: 500Nodes
labels: [fast]
labels: [integration-test, performance, fast]
params:
initNodes: 500
initPods: 500
measurePods: 1000
- name: 5000Nodes
labels: [performance]
params:
initNodes: 5000
initPods: 5000
@ -162,13 +192,20 @@
persistentVolumeClaimTemplatePath: config/templates/pvc.yaml
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast]
params:
initNodes: 5
initPods: 5
measurePods: 10
- name: 500Nodes
labels: [fast]
labels: [integration-test, performance, fast]
params:
initNodes: 500
initPods: 500
measurePods: 1000
- name: 5000Nodes
labels: [performance]
params:
initNodes: 5000
initPods: 5000
@ -201,13 +238,20 @@
persistentVolumeClaimTemplatePath: config/templates/pvc.yaml
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast, short]
params:
initNodes: 5
initPods: 5
measurePods: 10
- name: 500Nodes
labels: [integration-test, fast]
labels: [integration-test, performance, fast]
params:
initNodes: 500
initPods: 500
measurePods: 1000
- name: 5000Nodes
labels: [performance]
params:
initNodes: 5000
initPods: 5000
@ -239,8 +283,14 @@
namespace: sched-1
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast]
params:
initNodes: 5
initPods: 5
measurePods: 10
- name: 500Nodes
labels: [fast]
labels: [integration-test, fast]
params:
initNodes: 500
initPods: 500
@ -274,13 +324,20 @@
namespace: sched-1
collectMetrics: true
workloads:
- name: 500Nodes
- name: 5Nodes
labels: [integration-test, fast]
params:
initNodes: 5
initPods: 5
measurePods: 10
- name: 500Nodes
labels: [integration-test, performance, fast]
params:
initNodes: 500
initPods: 500
measurePods: 1000
- name: 5000Nodes
labels: [performance]
params:
initNodes: 5000
initPods: 5000
@ -308,8 +365,14 @@
namespace: sched-1
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast]
params:
initNodes: 5
initPods: 5
measurePods: 10
- name: 500Nodes
labels: [fast]
labels: [integration-test, fast]
params:
initNodes: 500
initPods: 500
@ -348,6 +411,11 @@
countParam: $measurePods
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast]
params:
initNodes: 5
measurePods: 10
- name: 15000Nodes
labels: [performance, fast]
params:
@ -369,8 +437,14 @@
countParam: $measurePods
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast, short]
params:
initNodes: 5
initPods: 5
measurePods: 10
- name: 500Nodes
labels: [fast]
labels: [integration-test, fast]
params:
initNodes: 500
initPods: 500
@ -404,6 +478,12 @@
podTemplatePath: config/templates/pod-with-topology-spreading.yaml
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast, short]
params:
initNodes: 5
initPods: 10
measurePods: 10
- name: 500Nodes
labels: [integration-test, fast]
params:
@ -439,13 +519,20 @@
podTemplatePath: config/templates/pod-with-preferred-topology-spreading.yaml
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast]
params:
initNodes: 5
initPods: 10
measurePods: 10
- name: 500Nodes
labels: [fast]
labels: [integration-test, performance, fast]
params:
initNodes: 500
initPods: 1000
measurePods: 1000
- name: 5000Nodes
labels: [performance]
params:
initNodes: 5000
initPods: 5000
@ -492,13 +579,20 @@
countParam: $measurePods
collectMetrics: true
workloads:
- name: 500Nodes
- name: 5Nodes
labels: [integration-test, fast]
params:
initNodes: 5
initPods: 2
measurePods: 10
- name: 500Nodes
labels: [integration-test, performance, fast]
params:
initNodes: 500
initPods: 200
measurePods: 1000
- name: 5000Nodes
labels: [performance]
params:
initNodes: 5000
initPods: 2000
@ -511,7 +605,6 @@
measurePods: 5000
- name: PreemptionBasic
labels: [performance]
workloadTemplate:
- opcode: createNodes
countParam: $initNodes
@ -523,8 +616,14 @@
podTemplatePath: config/templates/pod-high-priority.yaml
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast, short]
params:
initNodes: 5
initPods: 20
measurePods: 5
- name: 500Nodes
labels: [fast]
labels: [performance, fast]
params:
initNodes: 500
initPods: 2000
@ -539,7 +638,6 @@
# measurePods: 5000
- name: PreemptionPVs
labels: [performance]
workloadTemplate:
- opcode: createNodes
countParam: $initNodes
@ -553,8 +651,14 @@
persistentVolumeClaimTemplatePath: config/templates/pvc.yaml
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast]
params:
initNodes: 5
initPods: 20
measurePods: 5
- name: 500Nodes
labels: [fast]
labels: [performance, fast]
params:
initNodes: 500
initPods: 2000
@ -581,8 +685,14 @@
podTemplatePath: config/templates/pod-default.yaml
collectMetrics: true
workloads:
- name: 5Nodes/2InitPods
labels: [integration-test, fast, short]
params:
initNodes: 5
initPods: 2
measurePods: 10
- name: 500Nodes/200InitPods
labels: [fast]
labels: [integration-test, fast]
params:
initNodes: 500
initPods: 200
@ -622,6 +732,11 @@
podTemplatePath: config/templates//pod-default.yaml
collectMetrics: true
workloads:
- name: 10Nodes
labels: [integration-test, fast]
params:
initNodes: 10
measurePods: 100
- name: 1000Nodes
labels: [integration-test, fast]
params:
@ -662,14 +777,22 @@
collectMetrics: true
namespace: measure-ns-0
workloads:
- name: 10Nodes
labels: [integration-test, fast]
params:
initNodes: 10
initPodsPerNamespace: 2
initNamespaces: 2
measurePods: 6
- name: 500Nodes
labels: [fast]
labels: [performance, fast]
params:
initNodes: 500
initPodsPerNamespace: 4
initNamespaces: 10
measurePods: 100
- name: 5000Nodes
labels: [performance]
params:
initNodes: 5000
initPodsPerNamespace: 40
@ -707,14 +830,22 @@
collectMetrics: true
namespace: measure-ns-0
workloads:
- name: 10Nodes
labels: [integration-test, fast]
params:
initNodes: 10
initPodsPerNamespace: 2
initNamespaces: 2
measurePods: 10
- name: 500Nodes
labels: [fast]
labels: [performance, fast]
params:
initNodes: 500
initPodsPerNamespace: 4
initNamespaces: 10
measurePods: 100
- name: 5000Nodes
labels: [performance]
params:
initNodes: 5000
initPodsPerNamespace: 40
@ -755,14 +886,22 @@
collectMetrics: true
namespace: measure-ns-0
workloads:
- name: 10Nodes
labels: [integration-test, fast]
params:
initNodes: 10
initPodsPerNamespace: 2
initNamespaces: 2
measurePods: 10
- name: 500Nodes
labels: [fast]
labels: [performance, fast]
params:
initNodes: 500
initPodsPerNamespace: 4
initNamespaces: 10
measurePods: 100
- name: 5000Nodes
labels: [performance]
params:
initNodes: 5000
initPodsPerNamespace: 50
@ -800,14 +939,22 @@
collectMetrics: true
namespace: measure-ns-0
workloads:
- name: 10Nodes
labels: [integration-test, fast]
params:
initNodes: 10
initPodsPerNamespace: 2
initNamespaces: 2
measurePods: 10
- name: 500Nodes
labels: [fast]
labels: [performance, fast]
params:
initNodes: 500
initPodsPerNamespace: 4
initNamespaces: 10
measurePods: 100
- name: 5000Nodes
labels: [performance]
params:
initNodes: 5000
initPodsPerNamespace: 50
@ -835,8 +982,14 @@
countParam: $measurePods
collectMetrics: true
workloads:
- name: 5Nodes
labels: [integration-test, fast]
params:
taintNodes: 1
normalNodes: 4
measurePods: 4
- name: 500Nodes
labels: [fast]
labels: [integration-test, fast]
params:
taintNodes: 100
normalNodes: 400
@ -1028,7 +1181,7 @@
collectMetrics: true
workloads:
- name: fast
labels: [integration-test, fast]
labels: [integration-test, fast, short]
params:
# This testcase runs through all code paths without
# taking too long overall.
@ -1165,7 +1318,13 @@
countParam: $measurePods
collectMetrics: true
workloads:
- name: 1Node
- name: 1Node_10GatedPods
labels: [integration-test, fast]
params:
gatedPods: 10
deletingPods: 100
measurePods: 100
- name: 1Node_10000GatedPods
labels: [performance, fast]
params:
gatedPods: 10000
@ -1192,7 +1351,12 @@
countParam: $measurePods
collectMetrics: true
workloads:
- name: 1000Node
- name: 1Node_10GatedPods
labels: [integration-test, fast]
params:
gatedPods: 10
measurePods: 10
- name: 1Node_10000GatedPods
labels: [performance, fast]
params:
gatedPods: 10000

View File

@ -29,6 +29,10 @@ func TestScheduling(t *testing.T) {
t.Fatal(err)
}
if testing.Short() {
*testSchedulingLabelFilter += ",+short"
}
for _, tc := range testCases {
t.Run(tc.Name, func(t *testing.T) {
for _, w := range tc.Workloads {