This section explains how to benchmark Helm CLI concurrency on an Arm64-based GCP SUSE virtual machine.
Since Helm does not provide built-in performance metrics, concurrency behavior is measured by running multiple Helm commands in parallel and recording the total execution time.
Before starting the benchmark, ensure Helm is installed and the Kubernetes cluster is accessible.
helm version
kubectl get nodes
All nodes should be in Ready state.
Helm installs applications using “charts.” Configure Helm to download charts from the Bitnami repository and update the local chart index.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Isolate benchmark workloads from other cluster resources.
kubectl create namespace helm-bench
Prepare the cluster by pulling container images and initializing caches.
helm install warmup bitnami/nginx \
-n helm-bench \
--set service.type=ClusterIP \
--timeout 10m
The first install is usually slower because images must be downloaded and Kubernetes needs to initialize internal objects. This warm-up run reduces image-pull and initialization overhead so the benchmark focuses more on Helm CLI concurrency and Kubernetes API behavior.
You should see output (near the top of the output) that is similar to:
NAME: warmup
LAST DEPLOYED: Tue Dec 9 21:10:44 2025
NAMESPACE: helm-bench
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 22.3.3
APP VERSION: 1.29.3
After validation, remove the warm-up deployment:
helm uninstall warmup -n helm-bench
Helm does not provide native concurrency or throughput metrics. Concurrency benchmarking is performed by executing multiple Helm CLI operations in parallel and measuring overall completion time.
Run multiple Helm installs in parallel using background jobs.
time (
for i in {1..5}; do
helm install nginx-$i bitnami/nginx \
-n helm-bench \
--set service.type=ClusterIP \
--timeout 10m &
done
wait
)
This step simulates multiple teams deploying applications at the same time. Helm submits all requests without waiting for pods to fully start.
What this measures:
You should see an output similar to:
real 0m3.998s
user 0m12.798s
sys 0m0.339s
Confirm that Helm reports all components were installed successfully and that Kubernetes created and started the applications:
helm list -n helm-bench
kubectl get pods -n helm-bench
Expected:
deployed stateRunning statusRun a benchmark that includes workload readiness time.
time (
for i in {1..3}; do
helm install nginx-wait-$i bitnami/nginx \
-n helm-bench \
--set service.type=ClusterIP \
--wait \
--timeout 15m &
done
wait
)
Measure Helm concurrency combined with scheduler and image-pull contention to understand end-to-end readiness impact.
The output is similar to:
real 0m12.924s
user 0m7.333s
sys 0m0.312s
Results from the earlier run on the c4a-standard-4 (4 vCPU, 16 GB memory) Arm64 VM in GCP (SUSE):
| Test Case | Parallel Installs | --wait Used | Timeout | Total Time (real) |
|---|---|---|---|---|
| Parallel Install (No Wait) | 5 | No | 10m | 3.99 s |
| Parallel Install (With Wait) | 3 | Yes | 15m | 12.92 s |
Key observations:
You have successfully benchmarked Helm concurrency on a Google Axion C4A Arm64 virtual machine. The benchmarks demonstrated that:
--wait flag extends deployment time to reflect actual workload initializationThese results establish a performance baseline for deploying containerized workloads with Helm on Arm64-based cloud infrastructure, helping you make informed decisions about deployment strategies and resource allocation.