Skip to content

Commit

Permalink
add windows11 bootstorm workload
Browse files Browse the repository at this point in the history
  • Loading branch information
ebattat committed Nov 2, 2023
1 parent 11dcc05 commit dfb8cab
Show file tree
Hide file tree
Showing 21 changed files with 322 additions and 452 deletions.
28 changes: 22 additions & 6 deletions .github/workflows/Nightly_Perf_Env_CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,11 @@ jobs:
- 'vdbench_vm_scale'
- 'clusterbuster'
- 'bootstorm_vm_scale'
- 'windows_vm_scale'
- 'windows_vm_scale_windows10'
- 'windows_vm_scale_windows11'
- 'windows_vm_scale_windows_server_2019'
- 'windows_vm_scale_windows_server_2022'

steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
Expand Down Expand Up @@ -181,30 +185,42 @@ jobs:
THREADS_LIMIT: 20
RUN_TYPE: 'perf_ci'
ENABLE_PROMETHEUS_SNAPSHOT: 'True'
WINDOWS_URL: ${{ secrets.PERF_WINDOWS_URL }}
WINDOWS10_URL: ${{ secrets.PERF_WINDOWS10_URL }}
WINDOWS11_URL: ${{ secrets.PERF_WINDOWS11_URL }}
WINDOWS_SERVER_2019_URL: ${{ secrets.PERF_WINDOWS_SERVER_2019_URL }}
WINDOWS_SERVER_2022_URL: ${{ secrets.PERF_WINDOWS_SERVER_2022_URL }}
run: |
build=$(pip freeze | grep benchmark-runner | sed 's/==/=/g')
build_version="$(cut -d'=' -f2 <<<"$build")"
echo '>>>>>>>>>>>>>>>>>>>>>>>>>> Start E2E workload: ${{ matrix.workload }} >>>>>>>>>>>>>>>>>>>>>>>>>>'
scp -r "$RUNNER_PATH/.kube/config" provision:"$CONTAINER_KUBECONFIG_PATH"
# SCALE: Run vdbench/ bootstorm
if [[ '${{ matrix.workload }}' == 'vdbench_pod_scale' || '${{ matrix.workload }}' == 'vdbench_kata_scale' || '${{ matrix.workload }}' == 'vdbench_vm_scale' || '${{ matrix.workload }}' == 'bootstorm_vm_scale' || '${{ matrix.workload }}' == 'windows_vm_scale' ]]
workload=$(awk -F_ '{print $1"_"$2}' <<< '${{ matrix.workload }}')
run=$(awk -F_ '{print $3}' <<< '${{ matrix.workload }}')
# SCALE RUN
if [[ '$run' == 'scale' ]]
then
workload=$(awk -F_ '{print $1"_"$2}' <<< '${{ matrix.workload }}')
# bootstorm_vm_scale: no need redis for synchronization but need SCALE and THREADS_LIMIT
if [[ '${{ matrix.workload }}' == 'bootstorm_vm_scale' ]]
then
# Warm-up: Pull the Fedora image from quay.io for each node
ssh -t provision "podman run --rm -t -e WORKLOAD='$workload' -e KUBEADMIN_PASSWORD='$KUBEADMIN_PASSWORD' -e SCALE='$SCALE' -e SCALE_NODES=$SCALE_NODES -e REDIS='$REDIS' -e RUN_ARTIFACTS_URL='$RUN_ARTIFACTS_URL' -e BUILD_VERSION='$build_version' -e RUN_TYPE='$RUN_TYPE' -e KATA_CPUOFFLINE_WORKAROUND='True' -e SAVE_ARTIFACTS_LOCAL='False' -e ENABLE_PROMETHEUS_SNAPSHOT='$ENABLE_PROMETHEUS_SNAPSHOT' -e THREADS_LIMIT='$THREADS_LIMIT' -e WINDOWS_URL='$WINDOWS_URL' -e TIMEOUT='$TIMEOUT' -e log_level='INFO' -v '$CONTAINER_KUBECONFIG_PATH':'$CONTAINER_KUBECONFIG_PATH' --privileged 'quay.io/ebattat/benchmark-runner:latest'"
SCALE=$BOOTSTORM_SCALE
elif [[ '${{ matrix.workload }}' == 'windows_vm_scale' ]]
elif [[ '$workload' == 'windows_vm' ]]
then
case '${{ matrix.workload }}' in
'windows_vm_scale_windows10') WINDOWS_URL=$WINDOWS10_URL ;;
'windows_vm_scale_windows11') WINDOWS_URL=$WINDOWS11_URL ;;
'windows_vm_scale_windows_server_2019') WINDOWS_URL=$WINDOWS_SERVER_2019_URL ;;
'windows_vm_scale_windows_server_2022') WINDOWS_URL=$WINDOWS_SERVER_2022_URL ;;
*) echo "Unknown Windows scale workload ${{ matrix_workload }}"; exit 1 ;;
esac
# Warm-up: Load DV for Windows
ssh -t provision "podman run --rm -t -e WORKLOAD='$workload' -e KUBEADMIN_PASSWORD='$KUBEADMIN_PASSWORD' -e SCALE='$SCALE' -e SCALE_NODES=$SCALE_NODES -e REDIS='$REDIS' -e RUN_ARTIFACTS_URL='$RUN_ARTIFACTS_URL' -e BUILD_VERSION='$build_version' -e RUN_TYPE='$RUN_TYPE' -e KATA_CPUOFFLINE_WORKAROUND='True' -e SAVE_ARTIFACTS_LOCAL='False' -e ENABLE_PROMETHEUS_SNAPSHOT='$ENABLE_PROMETHEUS_SNAPSHOT' -e THREADS_LIMIT='$THREADS_LIMIT' -e WINDOWS_URL='$WINDOWS_URL' -e TIMEOUT='$TIMEOUT' -e log_level='INFO' -v '$CONTAINER_KUBECONFIG_PATH':'$CONTAINER_KUBECONFIG_PATH' --privileged 'quay.io/ebattat/benchmark-runner:latest'"
SCALE=$WINDOWS_SCALE
fi
# SCALE_NODES is a list, not add ''
ssh -t provision "podman run --rm -t -e WORKLOAD='$workload' -e KUBEADMIN_PASSWORD='$KUBEADMIN_PASSWORD' -e SCALE='$SCALE' -e SCALE_NODES=$SCALE_NODES -e REDIS='$REDIS' -e PIN_NODE_BENCHMARK_OPERATOR='$PIN_NODE_BENCHMARK_OPERATOR' -e PIN_NODE1='$PIN_NODE1' -e PIN_NODE2='$PIN_NODE2' -e ELASTICSEARCH='$ELASTICSEARCH' -e ELASTICSEARCH_PORT='$ELASTICSEARCH_PORT' -e ELASTICSEARCH_USER='$ELASTICSEARCH_USER' -e ELASTICSEARCH_PASSWORD='$ELASTICSEARCH_PASSWORD' -e IBM_REGION_NAME='$IBM_REGION_NAME' -e IBM_ENDPOINT_URL='$IBM_ENDPOINT_URL' -e IBM_ACCESS_KEY_ID='$IBM_ACCESS_KEY_ID' -e IBM_SECRET_ACCESS_KEY='$IBM_SECRET_ACCESS_KEY' -e IBM_BUCKET='$IBM_BUCKET' -e IBM_KEY='$IBM_KEY' -e RUN_ARTIFACTS_URL='$RUN_ARTIFACTS_URL' -e BUILD_VERSION='$build_version' -e RUN_TYPE='$RUN_TYPE' -e KATA_CPUOFFLINE_WORKAROUND='True' -e SAVE_ARTIFACTS_LOCAL='False' -e ENABLE_PROMETHEUS_SNAPSHOT='$ENABLE_PROMETHEUS_SNAPSHOT' -e THREADS_LIMIT='$THREADS_LIMIT' -e WINDOWS_URL='$WINDOWS_URL' -e TIMEOUT='$TIMEOUT' -e log_level='INFO' -v '$CONTAINER_KUBECONFIG_PATH':'$CONTAINER_KUBECONFIG_PATH' --privileged 'quay.io/ebattat/benchmark-runner:latest'"
# NOT SCALE RUN
else
if [[ '${{ matrix.workload }}' == 'clusterbuster' ]]
then
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: kubevirt.io/v1alpha3
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
{% if scale -%}
Expand Down Expand Up @@ -33,6 +33,12 @@ spec:
terminationGracePeriodSeconds: 0
evictionStrategy: LiveMigrate
domain:
features:
smm: {}
firmware:
bootloader:
efi:
secureBoot: false
clock:
timer:
hpet:
Expand Down Expand Up @@ -63,11 +69,12 @@ spec:
- masquerade: {}
model: virtio
name: nic-0
networkInterfaceMultiqueue: true
tpm: { }
features:
acpi: {}
apic: {}
hyperv:
evmcs: {}
frequencies: {}
ipi: {}
reenlightenment: {}
Expand All @@ -78,7 +85,8 @@ spec:
spinlocks:
spinlocks: 8191
synic: {}
synictimer: {}
synictimer:
direct: {}
vapic: {}
vpindex: {}
machine:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ template_data:
limit_memory: 2G
limit_cpu: 1
sockets: 1
storage: 40Gi
storage: 70Gi
default:
requests_memory: 2G
requests_cpu: 1
limit_memory: 2G
limit_cpu: 1
sockets: 1
storage: 40Gi
storage: 70Gi
579 changes: 179 additions & 400 deletions benchmark_runner/grafana/perf/jsonnet/main.libsonnet

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion benchmark_runner/workloads/workloads_operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@ def __init__(self):
self._snapshot = PrometheusSnapshot(oc=self._oc, artifacts_path=self._run_artifacts_path, verbose=True)
self._prometheus_snap_interval = self._environment_variables_dict.get('prometheus_snap_interval', '')
self._prometheus_metrics_operation = PrometheusMetricsOperation()
if self._environment_variables_dict.get('windows_url', ''):
file_name = os.path.basename(self._environment_variables_dict.get('windows_url', ''))
self._windows_os = os.path.splitext(file_name)[0]

def __get_workload_file_name(self, workload):
"""
Expand Down Expand Up @@ -365,7 +368,7 @@ def __get_metadata(self, kind: str = None, status: str = None, result: dict = No
if 'bootstorm' in self._workload:
metadata.update({'vm_os_version': 'fedora37'})
if 'windows' in self._workload:
metadata.update({'vm_os_version': 'windows_server_2019'})
metadata.update({'vm_os_version': self._windows_os})
if result:
metadata.update(result)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ spec:
- ReadWriteMany
resources:
requests:
storage: 40Gi
storage: 70Gi
volumeMode: Block
storageClassName: ocs-storagecluster-ceph-rbd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: kubevirt.io/v1alpha3
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: windows-vm-deadbeef
Expand All @@ -17,6 +17,12 @@ spec:
terminationGracePeriodSeconds: 0
evictionStrategy: LiveMigrate
domain:
features:
smm: {}
firmware:
bootloader:
efi:
secureBoot: false
clock:
timer:
hpet:
Expand All @@ -43,11 +49,12 @@ spec:
- masquerade: {}
model: virtio
name: nic-0
networkInterfaceMultiqueue: true
tpm: { }
features:
acpi: {}
apic: {}
hyperv:
evmcs: {}
frequencies: {}
ipi: {}
reenlightenment: {}
Expand All @@ -58,7 +65,8 @@ spec:
spinlocks:
spinlocks: 8191
synic: {}
synictimer: {}
synictimer:
direct: {}
vapic: {}
vpindex: {}
machine:
Expand Down Expand Up @@ -89,7 +97,7 @@ spec:
- ReadWriteMany
resources:
requests:
storage: 40Gi
storage: 70Gi
volumeMode: Block
storageClassName: ocs-storagecluster-ceph-rbd
source:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ spec:
- ReadWriteMany
resources:
requests:
storage: 40Gi
storage: 70Gi
volumeMode: Block
storageClassName: ocs-storagecluster-ceph-rbd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: kubevirt.io/v1alpha3
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: windows-vm-deadbeef
Expand All @@ -17,6 +17,12 @@ spec:
terminationGracePeriodSeconds: 0
evictionStrategy: LiveMigrate
domain:
features:
smm: {}
firmware:
bootloader:
efi:
secureBoot: false
clock:
timer:
hpet:
Expand All @@ -43,11 +49,12 @@ spec:
- masquerade: {}
model: virtio
name: nic-0
networkInterfaceMultiqueue: true
tpm: { }
features:
acpi: {}
apic: {}
hyperv:
evmcs: {}
frequencies: {}
ipi: {}
reenlightenment: {}
Expand All @@ -58,7 +65,8 @@ spec:
spinlocks:
spinlocks: 8191
synic: {}
synictimer: {}
synictimer:
direct: {}
vapic: {}
vpindex: {}
machine:
Expand Down Expand Up @@ -89,7 +97,7 @@ spec:
- ReadWriteMany
resources:
requests:
storage: 40Gi
storage: 70Gi
volumeMode: Block
storageClassName: ocs-storagecluster-ceph-rbd
source:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ spec:
- ReadWriteMany
resources:
requests:
storage: 40Gi
storage: 70Gi
volumeMode: Block
storageClassName: ocs-storagecluster-ceph-rbd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: kubevirt.io/v1alpha3
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: windows-vm-deadbeef
Expand All @@ -17,6 +17,12 @@ spec:
terminationGracePeriodSeconds: 0
evictionStrategy: LiveMigrate
domain:
features:
smm: {}
firmware:
bootloader:
efi:
secureBoot: false
clock:
timer:
hpet:
Expand All @@ -43,11 +49,12 @@ spec:
- masquerade: {}
model: virtio
name: nic-0
networkInterfaceMultiqueue: true
tpm: { }
features:
acpi: {}
apic: {}
hyperv:
evmcs: {}
frequencies: {}
ipi: {}
reenlightenment: {}
Expand All @@ -58,7 +65,8 @@ spec:
spinlocks:
spinlocks: 8191
synic: {}
synictimer: {}
synictimer:
direct: {}
vapic: {}
vpindex: {}
machine:
Expand Down Expand Up @@ -89,7 +97,7 @@ spec:
- ReadWriteMany
resources:
requests:
storage: 40Gi
storage: 70Gi
volumeMode: Block
storageClassName: ocs-storagecluster-ceph-rbd
source:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ spec:
- ReadWriteMany
resources:
requests:
storage: 40Gi
storage: 70Gi
volumeMode: Block
storageClassName: ocs-storagecluster-ceph-rbd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: kubevirt.io/v1alpha3
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: windows-vm-deadbeef
Expand All @@ -17,6 +17,12 @@ spec:
terminationGracePeriodSeconds: 0
evictionStrategy: LiveMigrate
domain:
features:
smm: {}
firmware:
bootloader:
efi:
secureBoot: false
clock:
timer:
hpet:
Expand All @@ -43,11 +49,12 @@ spec:
- masquerade: {}
model: virtio
name: nic-0
networkInterfaceMultiqueue: true
tpm: { }
features:
acpi: {}
apic: {}
hyperv:
evmcs: {}
frequencies: {}
ipi: {}
reenlightenment: {}
Expand All @@ -58,7 +65,8 @@ spec:
spinlocks:
spinlocks: 8191
synic: {}
synictimer: {}
synictimer:
direct: {}
vapic: {}
vpindex: {}
machine:
Expand Down Expand Up @@ -89,7 +97,7 @@ spec:
- ReadWriteMany
resources:
requests:
storage: 40Gi
storage: 70Gi
volumeMode: Block
storageClassName: ocs-storagecluster-ceph-rbd
source:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ spec:
- ReadWriteMany
resources:
requests:
storage: 40Gi
storage: 70Gi
volumeMode: Block
storageClassName: ocs-storagecluster-ceph-rbd
Loading

0 comments on commit dfb8cab

Please sign in to comment.