From 4c163f5205771a1c6e4a06b1e0eb171d17ba2393 Mon Sep 17 00:00:00 2001 From: Anton Pegushin Date: Mon, 12 May 2025 16:50:12 -0700 Subject: [PATCH 1/2] 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 ecbb567481c9dc75fdd1dd1c110694c5716e3191 Mon Sep 17 00:00:00 2001 From: Anton Pegushin Date: Mon, 12 May 2025 21:06:46 -0700 Subject: [PATCH 2/2] 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..22ec090 --- /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: ${{ github.ref_name }} 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"]