Skip to content

Commit

Permalink
perf: Add benchmarks workflows + instructions
Browse files Browse the repository at this point in the history
Signed-off-by: Jakub Buczak <[email protected]>
  • Loading branch information
jakkubu committed Oct 10, 2024
1 parent 07224ad commit 7221f93
Show file tree
Hide file tree
Showing 4 changed files with 254 additions and 0 deletions.
171 changes: 171 additions & 0 deletions test/benchmarks/20-echos.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: 20-echos
spec:
entrypoint: start
activeDeadlineSeconds: 1800
templates:
- name: start
dag:
tasks:
- name: echo-1
templateRef:
name: echo-1
template: print-message
arguments:
parameters:
- name: message
value: echo-1
- name: echo-2
templateRef:
name: echo-1
template: print-message
arguments:
parameters:
- name: message
value: echo-2
- name: echo-3
templateRef:
name: echo-1
template: print-message
arguments:
parameters:
- name: message
value: echo-3
- name: echo-4
templateRef:
name: echo-1
template: print-message
arguments:
parameters:
- name: message
value: echo-4
- name: echo-5
templateRef:
name: echo-1
template: print-message
arguments:
parameters:
- name: message
value: echo-5
- name: echo-6
templateRef:
name: echo-1
template: print-message
arguments:
parameters:
- name: message
value: echo-6
- name: echo-7
templateRef:
name: echo-1
template: print-message
arguments:
parameters:
- name: message
value: echo-7
- name: echo-8
templateRef:
name: echo-1
template: print-message
arguments:
parameters:
- name: message
value: echo-8
- name: echo-9
templateRef:
name: echo-1
template: print-message
arguments:
parameters:
- name: message
value: echo-9
- name: echo-10
templateRef:
name: echo-1
template: print-message
arguments:
parameters:
- name: message
value: echo-10
- name: echo-11
templateRef:
name: echo-2
template: print-message
arguments:
parameters:
- name: message
value: echo-11
- name: echo-12
templateRef:
name: echo-2
template: print-message
arguments:
parameters:
- name: message
value: echo-12
- name: echo-13
templateRef:
name: echo-2
template: print-message
arguments:
parameters:
- name: message
value: echo-13
- name: echo-14
templateRef:
name: echo-2
template: print-message
arguments:
parameters:
- name: message
value: echo-14
- name: echo-15
templateRef:
name: echo-2
template: print-message
arguments:
parameters:
- name: message
value: echo-15
- name: echo-16
templateRef:
name: echo-2
template: print-message
arguments:
parameters:
- name: message
value: echo-16
- name: echo-17
templateRef:
name: echo-2
template: print-message
arguments:
parameters:
- name: message
value: echo-17
- name: echo-18
templateRef:
name: echo-2
template: print-message
arguments:
parameters:
- name: message
value: echo-18
- name: echo-19
templateRef:
name: echo-2
template: print-message
arguments:
parameters:
- name: message
value: echo-19
- name: echo-20
templateRef:
name: echo-2
template: print-message
arguments:
parameters:
- name: message
value: echo-20
51 changes: 51 additions & 0 deletions test/benchmarks/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Benchmarks

## Benchmarking multiple-ref template creation

Benchmarks were performed manually. This should be automated and performed in pipeline. For now let's just describe a process.

Use fresh cluster in latests version.

Argo server started with `server --auth-mode=server --auth-mode=client --kube-api-burst=200 --kube-api-qps=200`

Before each tests following procedure were followed:
1. Delete all workflow
2. Wait for all workflows pods to be removed
3. Restart controller and server

Benchmarking tool: [hey](https://github.com/rakyll/hey). It runs command in parallel by default 200 times using 50 workers. Those values can be modified using:
* `-n`: number of requests
* `-c`: number of workers


Typical call:

```sh
hey \
-n 200 -c 50 \
-m POST \
-disable-keepalive \
-T "application/json" \
-d '{
"serverDryRun": false,
"workflow": {
"metadata": {
"generateName": "curl-echo-test-",
"namespace": "argo-test",
"labels": {
"workflows.argoproj.io/benchmark": "true"
}
},
"spec": {
"workflowTemplateRef": {"name": "20-echos"},
"arguments": {},
"podMetadata": {
"labels": {
"workflows.argoproj.io/benchmark": "true"
}
}
}
}
}' \
https://localhost:2746/api/v1/workflows/argo-test
```
16 changes: 16 additions & 0 deletions test/benchmarks/echo-1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: echo-1
spec:
entrypoint: print-message
templates:
- name: print-message
inputs:
parameters:
- name: message
value: "hello world!"
container:
image: ubuntu
command: [echo]
args: ["{{inputs.parameters.message}}"]
16 changes: 16 additions & 0 deletions test/benchmarks/echo-2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: echo-2
spec:
entrypoint: print-message
templates:
- name: print-message
inputs:
parameters:
- name: message
value: "hello world!"
container:
image: ubuntu
command: [echo]
args: ["{{inputs.parameters.message}}"]

0 comments on commit 7221f93

Please sign in to comment.