From 4c163f5205771a1c6e4a06b1e0eb171d17ba2393 Mon Sep 17 00:00:00 2001 From: Anton Pegushin Date: Mon, 12 May 2025 16:50:12 -0700 Subject: [PATCH 1/3] Cleanup and align inter- and intra-node network perf configs. --- config/dp_network_internode/README | 1 - .../iperf_client_pod.yaml | 20 +++++++++---------- .../iperf_server_pod.yaml | 15 +++++++------- .../dp_network_internode/iperf_service.yaml | 2 +- .../iperf_client_pod.yaml | 20 +++++++++---------- .../iperf_server_pod.yaml | 15 +++++++------- .../dp_network_intranode/iperf_service.yaml | 2 +- 7 files changed, 36 insertions(+), 39 deletions(-) diff --git a/config/dp_network_internode/README b/config/dp_network_internode/README index e3b3b98..4d5e020 100644 --- a/config/dp_network_internode/README +++ b/config/dp_network_internode/README @@ -2,4 +2,3 @@ Run dp_network_internode individually using the following command: cd ../../; ./run.sh -t "dp_network_internode" -r -o " Please use the qperf results for the network latency and the iperf3 results for bandwidth. - diff --git a/config/dp_network_internode/iperf_client_pod.yaml b/config/dp_network_internode/iperf_client_pod.yaml index 128abfc..76850b0 100644 --- a/config/dp_network_internode/iperf_client_pod.yaml +++ b/config/dp_network_internode/iperf_client_pod.yaml @@ -12,7 +12,7 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - - key: podtype + - key: podtype operator: In values: - server @@ -20,7 +20,7 @@ spec: hostname: iperfclient subdomain: kbench-service-oid-0-tid-0 containers: - - image: nginx + - image: nginx resources: limits: memory: "4200Mi" @@ -30,23 +30,23 @@ spec: cpu: "1000m" ephemeral-storage: "5Gi" command: ["/bin/sh","-c"] - args: + args: - sleep 2s; apt-get update; apt-get install -y iperf3; apt-get install -y procps; apt-get install -y net-tools; - apt-get install -y iputils-ping; apt-get install -y qperf; + apt-get install -y iputils-ping; apt-get clean; apt-get install -y wget gawk make; apt-get clean; apt-get install -y gcc libpath-tiny-perl; - cd /tmp; - wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; - tar xvf qperf-0.4.9.tar.gz; - cd qperf-0.4.9; - ./configure; - make; + cd /tmp; + wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; + tar xvf qperf-0.4.9.tar.gz; + cd qperf-0.4.9; + ./configure; + make; sleep infinity; name: iperfclientcontainer diff --git a/config/dp_network_internode/iperf_server_pod.yaml b/config/dp_network_internode/iperf_server_pod.yaml index 7f0a555..ccca890 100644 --- a/config/dp_network_internode/iperf_server_pod.yaml +++ b/config/dp_network_internode/iperf_server_pod.yaml @@ -20,7 +20,7 @@ spec: cpu: "1000m" ephemeral-storage: "5Gi" command: ["/bin/sh","-c"] - args: + args: - sleep 2s; apt-get update; apt-get install -y iperf3; @@ -32,12 +32,11 @@ spec: apt-get install -y wget gawk make; apt-get clean; apt-get install -y gcc libpath-tiny-perl; - cd /tmp; - wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; - wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; - tar xvf qperf-0.4.9.tar.gz; - cd qperf-0.4.9; - ./configure; - make; + cd /tmp; + wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; + tar xvf qperf-0.4.9.tar.gz; + cd qperf-0.4.9; + ./configure; + make; sleep infinity; name: iperfservercontainer diff --git a/config/dp_network_internode/iperf_service.yaml b/config/dp_network_internode/iperf_service.yaml index d1f0cd3..6f15a7a 100644 --- a/config/dp_network_internode/iperf_service.yaml +++ b/config/dp_network_internode/iperf_service.yaml @@ -5,7 +5,7 @@ metadata: namespace: kbench-pod-namespace spec: selector: - name: myiperf + name: myiperf clusterIP: None ports: - name: foo # Actually, no port is needed. diff --git a/config/dp_network_intranode/iperf_client_pod.yaml b/config/dp_network_intranode/iperf_client_pod.yaml index 35f843b..dcc33a2 100644 --- a/config/dp_network_intranode/iperf_client_pod.yaml +++ b/config/dp_network_intranode/iperf_client_pod.yaml @@ -12,7 +12,7 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - - key: podtype + - key: podtype operator: In values: - server @@ -20,7 +20,7 @@ spec: hostname: iperfclient subdomain: kbench-service-oid-0-tid-0 containers: - - image: nginx + - image: nginx resources: limits: memory: "4200Mi" @@ -30,23 +30,23 @@ spec: cpu: "1000m" ephemeral-storage: "5Gi" command: ["/bin/sh","-c"] - args: + args: - sleep 2s; apt-get update; apt-get install -y iperf3; apt-get install -y procps; apt-get install -y net-tools; - apt-get install -y iputils-ping; apt-get install -y qperf; + apt-get install -y iputils-ping; apt-get clean; apt-get install -y wget gawk make; apt-get clean; apt-get install -y gcc libpath-tiny-perl; - cd /tmp; - wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; - tar xvf qperf-0.4.9.tar.gz; - cd qperf-0.4.9; - ./configure; - make; + cd /tmp; + wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; + tar xvf qperf-0.4.9.tar.gz; + cd qperf-0.4.9; + ./configure; + make; sleep infinity; name: iperfclientcontainer diff --git a/config/dp_network_intranode/iperf_server_pod.yaml b/config/dp_network_intranode/iperf_server_pod.yaml index 7f0a555..ccca890 100644 --- a/config/dp_network_intranode/iperf_server_pod.yaml +++ b/config/dp_network_intranode/iperf_server_pod.yaml @@ -20,7 +20,7 @@ spec: cpu: "1000m" ephemeral-storage: "5Gi" command: ["/bin/sh","-c"] - args: + args: - sleep 2s; apt-get update; apt-get install -y iperf3; @@ -32,12 +32,11 @@ spec: apt-get install -y wget gawk make; apt-get clean; apt-get install -y gcc libpath-tiny-perl; - cd /tmp; - wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; - wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; - tar xvf qperf-0.4.9.tar.gz; - cd qperf-0.4.9; - ./configure; - make; + cd /tmp; + wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; + tar xvf qperf-0.4.9.tar.gz; + cd qperf-0.4.9; + ./configure; + make; sleep infinity; name: iperfservercontainer diff --git a/config/dp_network_intranode/iperf_service.yaml b/config/dp_network_intranode/iperf_service.yaml index d1f0cd3..6f15a7a 100644 --- a/config/dp_network_intranode/iperf_service.yaml +++ b/config/dp_network_intranode/iperf_service.yaml @@ -5,7 +5,7 @@ metadata: namespace: kbench-pod-namespace spec: selector: - name: myiperf + name: myiperf clusterIP: None ports: - name: foo # Actually, no port is needed. From 0daa098a65a7dff392c6352592ef9a48958651e2 Mon Sep 17 00:00:00 2001 From: Anton Pegushin Date: Mon, 12 May 2025 21:06:46 -0700 Subject: [PATCH 2/3] Containerize kbench-iperf3 test image. --- .github/workflows/kbench-iperf3-release.yml | 33 +++++++++++++++++++++ test_images/Makefile | 15 ++++++++++ test_images/kbench-iperf3.Dockerfile | 23 ++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 .github/workflows/kbench-iperf3-release.yml create mode 100644 test_images/Makefile create mode 100644 test_images/kbench-iperf3.Dockerfile diff --git a/.github/workflows/kbench-iperf3-release.yml b/.github/workflows/kbench-iperf3-release.yml new file mode 100644 index 0000000..237e6a4 --- /dev/null +++ b/.github/workflows/kbench-iperf3-release.yml @@ -0,0 +1,33 @@ +name: Build and push docker image for k-bench iperf3 test containers + +on: + push: + paths: + - "test_images/**" + +jobs: + build-and-push: + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push image + run: | + cd test_images + make build-kbench-iperf3 + make push-kbench-iperf3 + env: + IMAGE_REPO: ghcr.io/${{ github.repository_owner }} + IMAGE_TAG: latest diff --git a/test_images/Makefile b/test_images/Makefile new file mode 100644 index 0000000..3d60f28 --- /dev/null +++ b/test_images/Makefile @@ -0,0 +1,15 @@ +KBENCH_IPERF3_DOCKERFILE = kbench-iperf3.Dockerfile +IMAGE_REPO ?= localhost:5000 +IMAGE_REPO := $(shell echo $(IMAGE_REPO) | tr '[:upper:]' '[:lower:]') +IMAGE_TAG ?= latest +IMAGE_NAME = $(IMAGE_REPO)/kbench-iperf3:$(IMAGE_TAG) + +PHONY: build-kbench-iperf3 push-kbench-iperf3 all + +all: build-kbench-iperf3 push-kbench-iperf3 + +build-kbench-iperf3: + docker build -t $(IMAGE_NAME) -f $(KBENCH_IPERF3_DOCKERFILE) . + +push-kbench-iperf3: + docker push $(IMAGE_NAME) \ No newline at end of file diff --git a/test_images/kbench-iperf3.Dockerfile b/test_images/kbench-iperf3.Dockerfile new file mode 100644 index 0000000..ab22175 --- /dev/null +++ b/test_images/kbench-iperf3.Dockerfile @@ -0,0 +1,23 @@ +# Use the official Nginx base image +FROM nginx:latest + +# Install iperf3 +RUN apt-get update && \ + apt-get install -y iperf3 && \ + apt-get install -y procps && \ + apt-get install -y net-tools && \ + apt-get install -y iputils-ping && \ + apt-get install -y qperf && \ + apt-get install -y wget gawk make && \ + apt-get install -y gcc libpath-tiny-perl && \ + # Clean up apt cache to reduce image size + apt-get clean && \ + rm -rf /var/lib/apt/lists/* +# Install qperf +RUN cd /tmp && \ + wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz && \ + tar xvf qperf-0.4.9.tar.gz && \ + cd qperf-0.4.9 && \ + ./configure && \ + make +CMD ["/bin/sh","-c","sleep infinity"] From 3adff5de3c0751fca3d82c0fd39c42e0359bbd34 Mon Sep 17 00:00:00 2001 From: Anton Pegushin Date: Mon, 12 May 2025 22:10:01 -0700 Subject: [PATCH 3/3] Use static kbench-iperf3 container image for iperf3 tests. --- .../iperf_client_pod.yaml | 25 +++---------------- .../iperf_server_pod.yaml | 25 +++---------------- .../iperf_client_pod.yaml | 25 +++---------------- .../iperf_server_pod.yaml | 25 +++---------------- test_images/Makefile | 2 +- test_images/kbench-iperf3.Dockerfile | 1 + 6 files changed, 14 insertions(+), 89 deletions(-) diff --git a/config/dp_network_internode/iperf_client_pod.yaml b/config/dp_network_internode/iperf_client_pod.yaml index 76850b0..98749e6 100644 --- a/config/dp_network_internode/iperf_client_pod.yaml +++ b/config/dp_network_internode/iperf_client_pod.yaml @@ -20,7 +20,9 @@ spec: hostname: iperfclient subdomain: kbench-service-oid-0-tid-0 containers: - - image: nginx + - name: iperfclientcontainer + image: ghcr.io/anpegush/kbench-iperf3:latest + imagePullPolicy: IfNotPresent resources: limits: memory: "4200Mi" @@ -29,24 +31,3 @@ spec: memory: "4200Mi" cpu: "1000m" ephemeral-storage: "5Gi" - command: ["/bin/sh","-c"] - args: - - sleep 2s; - apt-get update; - apt-get install -y iperf3; - apt-get install -y procps; - apt-get install -y net-tools; - apt-get install -y qperf; - apt-get install -y iputils-ping; - apt-get clean; - apt-get install -y wget gawk make; - apt-get clean; - apt-get install -y gcc libpath-tiny-perl; - cd /tmp; - wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; - tar xvf qperf-0.4.9.tar.gz; - cd qperf-0.4.9; - ./configure; - make; - sleep infinity; - name: iperfclientcontainer diff --git a/config/dp_network_internode/iperf_server_pod.yaml b/config/dp_network_internode/iperf_server_pod.yaml index ccca890..ebc2de6 100644 --- a/config/dp_network_internode/iperf_server_pod.yaml +++ b/config/dp_network_internode/iperf_server_pod.yaml @@ -10,7 +10,9 @@ spec: hostname: iperfserver subdomain: kbench-service-oid-0-tid-0 containers: - - image: nginx + - name: iperfservercontainer + image: ghcr.io/anpegush/kbench-iperf3:latest + imagePullPolicy: IfNotPresent resources: limits: memory: "4200Mi" @@ -19,24 +21,3 @@ spec: memory: "4200Mi" cpu: "1000m" ephemeral-storage: "5Gi" - command: ["/bin/sh","-c"] - args: - - sleep 2s; - apt-get update; - apt-get install -y iperf3; - apt-get install -y procps; - apt-get install -y net-tools; - apt-get install -y qperf; - apt-get install -y iputils-ping; - apt-get clean; - apt-get install -y wget gawk make; - apt-get clean; - apt-get install -y gcc libpath-tiny-perl; - cd /tmp; - wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; - tar xvf qperf-0.4.9.tar.gz; - cd qperf-0.4.9; - ./configure; - make; - sleep infinity; - name: iperfservercontainer diff --git a/config/dp_network_intranode/iperf_client_pod.yaml b/config/dp_network_intranode/iperf_client_pod.yaml index dcc33a2..92d8abc 100644 --- a/config/dp_network_intranode/iperf_client_pod.yaml +++ b/config/dp_network_intranode/iperf_client_pod.yaml @@ -20,7 +20,9 @@ spec: hostname: iperfclient subdomain: kbench-service-oid-0-tid-0 containers: - - image: nginx + - name: iperfclientcontainer + image: ghcr.io/anpegush/kbench-iperf3:latest + imagePullPolicy: IfNotPresent resources: limits: memory: "4200Mi" @@ -29,24 +31,3 @@ spec: memory: "4200Mi" cpu: "1000m" ephemeral-storage: "5Gi" - command: ["/bin/sh","-c"] - args: - - sleep 2s; - apt-get update; - apt-get install -y iperf3; - apt-get install -y procps; - apt-get install -y net-tools; - apt-get install -y qperf; - apt-get install -y iputils-ping; - apt-get clean; - apt-get install -y wget gawk make; - apt-get clean; - apt-get install -y gcc libpath-tiny-perl; - cd /tmp; - wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; - tar xvf qperf-0.4.9.tar.gz; - cd qperf-0.4.9; - ./configure; - make; - sleep infinity; - name: iperfclientcontainer diff --git a/config/dp_network_intranode/iperf_server_pod.yaml b/config/dp_network_intranode/iperf_server_pod.yaml index ccca890..ebc2de6 100644 --- a/config/dp_network_intranode/iperf_server_pod.yaml +++ b/config/dp_network_intranode/iperf_server_pod.yaml @@ -10,7 +10,9 @@ spec: hostname: iperfserver subdomain: kbench-service-oid-0-tid-0 containers: - - image: nginx + - name: iperfservercontainer + image: ghcr.io/anpegush/kbench-iperf3:latest + imagePullPolicy: IfNotPresent resources: limits: memory: "4200Mi" @@ -19,24 +21,3 @@ spec: memory: "4200Mi" cpu: "1000m" ephemeral-storage: "5Gi" - command: ["/bin/sh","-c"] - args: - - sleep 2s; - apt-get update; - apt-get install -y iperf3; - apt-get install -y procps; - apt-get install -y net-tools; - apt-get install -y qperf; - apt-get install -y iputils-ping; - apt-get clean; - apt-get install -y wget gawk make; - apt-get clean; - apt-get install -y gcc libpath-tiny-perl; - cd /tmp; - wget https://www.openfabrics.org/downloads/qperf/qperf-0.4.9.tar.gz; - tar xvf qperf-0.4.9.tar.gz; - cd qperf-0.4.9; - ./configure; - make; - sleep infinity; - name: iperfservercontainer diff --git a/test_images/Makefile b/test_images/Makefile index 3d60f28..98121bc 100644 --- a/test_images/Makefile +++ b/test_images/Makefile @@ -12,4 +12,4 @@ build-kbench-iperf3: docker build -t $(IMAGE_NAME) -f $(KBENCH_IPERF3_DOCKERFILE) . push-kbench-iperf3: - docker push $(IMAGE_NAME) \ No newline at end of file + docker push $(IMAGE_NAME) diff --git a/test_images/kbench-iperf3.Dockerfile b/test_images/kbench-iperf3.Dockerfile index ab22175..6af35d0 100644 --- a/test_images/kbench-iperf3.Dockerfile +++ b/test_images/kbench-iperf3.Dockerfile @@ -21,3 +21,4 @@ RUN cd /tmp && \ ./configure && \ make CMD ["/bin/sh","-c","sleep infinity"] +