Add iperf2 demo

This commit is contained in:
Zheng, Qi 2022-05-18 18:29:41 +08:00 committed by volcano
parent 40ad9d1648
commit 495c6695a9
4 changed files with 100 additions and 0 deletions

@ -707,6 +707,31 @@ jobs:
run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/python/flask; run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/python/flask;
curl --cacert flask.crt -X GET https://localhost:4996/customer/1" curl --cacert flask.crt -X GET https://localhost:4996/customer/1"
iperf2_test:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v1
with:
submodules: true
- uses: ./.github/workflows/composite_action/sim
with:
container-name: ${{ github.job }}
build-envs: 'OCCLUM_RELEASE_BUILD=1'
- name: Build iperf2
run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/iperf2; SGX_MODE=SIM ./build.sh"
- name: Start iperf2 server
run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/iperf2/occlum_server;
occlum run /bin/iperf -s -p 6888 &"
- name: Start iperf2 client
run: |
sleep ${{ 5 }};
docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/iperf2/occlum_client;
occlum run /bin/iperf -c 127.0.0.1 -p 6888 -P 16"
Linux_LTP_test: Linux_LTP_test:
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
steps: steps:

28
demos/iperf2/README.md Normal file

@ -0,0 +1,28 @@
# Run iperf2 on Occlum
[`Iperf2`](https://sourceforge.net/projects/iperf2/) is a popular tool for measuring Internet bandwidth performance.
### Build
```
./build.sh
```
If everything goes well, it generates two occlum instances.
```
occlum_server
occlum_client
```
### Run the test
* Start the iperf2 server
```
cd occlum_server
occlum run /bin/iperf -s -p 6888
```
* Start the iperf2 client with 16 threads
```
cd occlum_client
occlum run /bin/iperf -c 127.0.0.1 -p 6888 -P 16
```

38
demos/iperf2/build.sh Executable file

@ -0,0 +1,38 @@
#! /bin/bash
set -e
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
export IPERF_INSTALL_DIR=${script_dir}/iperf2-install
function dl_and_build_iperf()
{
rm -rf iperf2-*
rm -rf ${IPERF_INSTALL_DIR}
mkdir -p ${IPERF_INSTALL_DIR}
git clone https://git.code.sf.net/p/iperf2/code iperf2-code
pushd iperf2-code
./configure
make install exec_prefix=${IPERF_INSTALL_DIR}
popd
}
function build_occlum_instance()
{
name=$1
rm -rf ${name}
occlum new ${name}
pushd ${name}
copy_bom -f ../iperf2.yaml --root image --include-dir /opt/occlum/etc/template
new_json="$(jq '.resource_limits.user_space_size = "1000MB" |
.resource_limits.max_num_of_threads = 64 ' Occlum.json)" && \
echo "${new_json}" > Occlum.json
occlum build
popd
}
dl_and_build_iperf
build_occlum_instance occlum_server
build_occlum_instance occlum_client

9
demos/iperf2/iperf2.yaml Normal file

@ -0,0 +1,9 @@
includes:
- base.yaml
# bash
targets:
# copy iperf
- target: /bin
copy:
- files:
- ${IPERF_INSTALL_DIR}/bin/iperf