[demos] Move all the benchmark demos together
This commit is contained in:
		
							parent
							
								
									e54a3d1844
								
							
						
					
					
						commit
						3c11d589f4
					
				
							
								
								
									
										16
									
								
								.github/workflows/demo_test.yml
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										16
									
								
								.github/workflows/demo_test.yml
									
									
									
									
										vendored
									
									
								
							| @ -653,13 +653,13 @@ jobs: | |||||||
|         build-envs: 'OCCLUM_RELEASE_BUILD=1' |         build-envs: 'OCCLUM_RELEASE_BUILD=1' | ||||||
| 
 | 
 | ||||||
|     - name: Run sysbench download and build |     - name: Run sysbench download and build | ||||||
|       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/sysbench && SGX_MODE=SIM ./dl_and_build.sh" |       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/benchmarks/sysbench && SGX_MODE=SIM ./dl_and_build.sh" | ||||||
| 
 | 
 | ||||||
|     - name: Run prepare sysbench occlum instance |     - name: Run prepare sysbench occlum instance | ||||||
|       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/sysbench && SGX_MODE=SIM ./prepare_sysbench.sh" |       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/benchmarks/sysbench && SGX_MODE=SIM ./prepare_sysbench.sh" | ||||||
| 
 | 
 | ||||||
|     - name: Run sysbench threads benchmark |     - name: Run sysbench threads benchmark | ||||||
|       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/sysbench/occlum_instance; |       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/benchmarks/sysbench/occlum_instance; | ||||||
|             occlum run /bin/sysbench threads --threads=200 --thread-yields=100 --thread-locks=4 --time=30 run" |             occlum run /bin/sysbench threads --threads=200 --thread-yields=100 --thread-locks=4 --time=30 run" | ||||||
| 
 | 
 | ||||||
|   Gvisor_syscalls_test: |   Gvisor_syscalls_test: | ||||||
| @ -735,16 +735,16 @@ jobs: | |||||||
|         build-envs: 'OCCLUM_RELEASE_BUILD=1' |         build-envs: 'OCCLUM_RELEASE_BUILD=1' | ||||||
| 
 | 
 | ||||||
|     - name: Build iperf2 |     - name: Build iperf2 | ||||||
|       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/iperf2; SGX_MODE=SIM ./build.sh" |       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/benchmarks/iperf2; SGX_MODE=SIM ./build.sh" | ||||||
| 
 | 
 | ||||||
|     - name: Start iperf2 server |     - name: Start iperf2 server | ||||||
|       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/iperf2/occlum_server; |       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/benchmarks/iperf2/occlum_server; | ||||||
|             occlum run /bin/iperf -s -p 6888 &" |             occlum run /bin/iperf -s -p 6888 &" | ||||||
| 
 | 
 | ||||||
|     - name: Start iperf2 client |     - name: Start iperf2 client | ||||||
|       run: | |       run: | | ||||||
|         sleep ${{ 5 }}; |         sleep ${{ 5 }}; | ||||||
|         docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/iperf2/occlum_client; |         docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/benchmarks/iperf2/occlum_client; | ||||||
|             occlum run /bin/iperf -c 127.0.0.1 -p 6888 -P 16" |             occlum run /bin/iperf -c 127.0.0.1 -p 6888 -P 16" | ||||||
| 
 | 
 | ||||||
|   Linux_LTP_test: |   Linux_LTP_test: | ||||||
| @ -782,7 +782,7 @@ jobs: | |||||||
|         build-envs: 'OCCLUM_RELEASE_BUILD=1' |         build-envs: 'OCCLUM_RELEASE_BUILD=1' | ||||||
| 
 | 
 | ||||||
|     - name: Build fio dependencies |     - name: Build fio dependencies | ||||||
|       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/fio && ./download_and_build_fio.sh" |       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/benchmarks/fio && ./download_and_build_fio.sh" | ||||||
| 
 | 
 | ||||||
|     - name: Run fio test |     - name: Run fio test | ||||||
|       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/fio && SGX_MODE=SIM ./run_fio_on_occlum.sh fio-seq-read.fio" |       run: docker exec ${{ github.job }} bash -c "cd /root/occlum/demos/benchmarks/fio && SGX_MODE=SIM ./run_fio_on_occlum.sh fio-seq-read.fio" | ||||||
|  | |||||||
| @ -16,7 +16,6 @@ This set of demos shows how real-world apps can be easily run inside SGX enclave | |||||||
| 
 | 
 | ||||||
| * [bash](bash/): A demo of [Bash](https://www.gnu.org/software/bash/) shell script. | * [bash](bash/): A demo of [Bash](https://www.gnu.org/software/bash/) shell script. | ||||||
| * [cluster_serving](cluster_serving/): A demo of [Analytics Zoo Cluster Serving](https://analytics-zoo.github.io/master/#ClusterServingGuide/ProgrammingGuide/) inference solution. | * [cluster_serving](cluster_serving/): A demo of [Analytics Zoo Cluster Serving](https://analytics-zoo.github.io/master/#ClusterServingGuide/ProgrammingGuide/) inference solution. | ||||||
| * [fio](fio/): A demo of [Flexible I/O Tester](https://github.com/axboe/fio). |  | ||||||
| * [fish](fish/): A demo of [FISH](https://fishshell.com) shell script. | * [fish](fish/): A demo of [FISH](https://fishshell.com) shell script. | ||||||
| * [flink](flink/): A demo of [Apache Flink](https://flink.apache.org). | * [flink](flink/): A demo of [Apache Flink](https://flink.apache.org). | ||||||
| * [font](font/font_support_for_java): A demo of supporting font with Java. | * [font](font/font_support_for_java): A demo of supporting font with Java. | ||||||
| @ -33,6 +32,16 @@ This set of demos shows how real-world apps can be easily run inside SGX enclave | |||||||
| * [vault](golang/vault/): A demo of [HashiCorp Vault](https://github.com/hashicorp/vault). | * [vault](golang/vault/): A demo of [HashiCorp Vault](https://github.com/hashicorp/vault). | ||||||
| * [xgboost](xgboost/): A demo of [XGBoost](https://xgboost.readthedocs.io/en/latest). | * [xgboost](xgboost/): A demo of [XGBoost](https://xgboost.readthedocs.io/en/latest). | ||||||
| 
 | 
 | ||||||
|  | ## Benchmark demos | ||||||
|  | 
 | ||||||
|  | This set of demos shows how commonly used benchmarking tools can be run inside SGX enclaves with Occlum. | ||||||
|  | 
 | ||||||
|  | * [fio](benchmarks/fio/): A demo of [Flexible I/O Tester](https://github.com/axboe/fio). | ||||||
|  | * [iperf2](benchmarks/iperf2/): A demo of [Iperf2](https://sourceforge.net/projects/iperf2/), a tool for measuring Internet bandwidth performance. | ||||||
|  | * [iperf3](benchmarks/iperf3/): A demo of [Iperf3](https://github.com/esnet/iperf), a tool for measuring Internet bandwidth performance. | ||||||
|  | * [sysbench](benchmarks/sysbench/): A demo of [Sysbench](https://github.com/akopytov/sysbench), a scriptable multi-threaded benchmark tool for Linux. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ## Programming language demos | ## Programming language demos | ||||||
| 
 | 
 | ||||||
| This set of demos shows how apps written with popular programming languages can be run inside SGX enclaves with Occlum. | This set of demos shows how apps written with popular programming languages can be run inside SGX enclaves with Occlum. | ||||||
|  | |||||||
							
								
								
									
										9
									
								
								demos/benchmarks/README.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										9
									
								
								demos/benchmarks/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | # Benchmark Demos | ||||||
|  | 
 | ||||||
|  | This set of demos shows how commonly used benchmarking tools can be run inside SGX enclaves with Occlum. | ||||||
|  | 
 | ||||||
|  | * [fio](fio/): A demo of [Flexible I/O Tester](https://github.com/axboe/fio). | ||||||
|  | * [iperf2](iperf2/): A demo of [Iperf2](https://sourceforge.net/projects/iperf2/), a tool for measuring Internet bandwidth performance. | ||||||
|  | * [iperf3](iperf3/): A demo of [Iperf3](https://github.com/esnet/iperf), a tool for measuring Internet bandwidth performance. | ||||||
|  | * [sysbench](sysbench/): A demo of [Sysbench](https://github.com/akopytov/sysbench), a scriptable multi-threaded benchmark tool for Linux. | ||||||
|  | 
 | ||||||
| @ -35,4 +35,4 @@ function build_occlum_instance() | |||||||
| 
 | 
 | ||||||
| dl_and_build_iperf | dl_and_build_iperf | ||||||
| build_occlum_instance occlum_server | build_occlum_instance occlum_server | ||||||
| build_occlum_instance occlum_client | build_occlum_instance occlum_client | ||||||
| @ -6,4 +6,4 @@ targets: | |||||||
|   - target: /bin |   - target: /bin | ||||||
|     copy: |     copy: | ||||||
|       - files: |       - files: | ||||||
|         - ${IPERF_INSTALL_DIR}/bin/iperf |         - ${IPERF_INSTALL_DIR}/bin/iperf | ||||||
							
								
								
									
										28
									
								
								demos/benchmarks/iperf3/README.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										28
									
								
								demos/benchmarks/iperf3/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | |||||||
|  | # Run iperf3 on Occlum | ||||||
|  | 
 | ||||||
|  | [`Iperf3`](https://github.com/esnet/iperf) 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 iperf3 server for on one time benchmark | ||||||
|  | ``` | ||||||
|  | cd occlum_server | ||||||
|  | occlum run /bin/iperf3 -s -p 6777 -1 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | * Start the iperf3 client with 16 streams | ||||||
|  | ``` | ||||||
|  | cd occlum_client | ||||||
|  | occlum run /bin/iperf3 -c 127.0.0.1 -p 6777 -P 16 | ||||||
|  | ``` | ||||||
							
								
								
									
										39
									
								
								demos/benchmarks/iperf3/build.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										39
									
								
								demos/benchmarks/iperf3/build.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,39 @@ | |||||||
|  | #! /bin/bash | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}"  )" >/dev/null 2>&1 && pwd )" | ||||||
|  | 
 | ||||||
|  | export IPERF3_INSTALL_DIR=${script_dir}/iperf-install | ||||||
|  | 
 | ||||||
|  | function dl_and_build_iperf() | ||||||
|  | { | ||||||
|  |     rm -rf iperf-* | ||||||
|  |     rm -rf 3.11* | ||||||
|  |     mkdir -p ${IPERF3_INSTALL_DIR} | ||||||
|  |     wget https://github.com/esnet/iperf/archive/refs/tags/3.11.tar.gz | ||||||
|  |     tar zxf 3.11.tar.gz | ||||||
|  |     pushd iperf-3.11 | ||||||
|  |     ./configure | ||||||
|  |     make install exec_prefix=${IPERF3_INSTALL_DIR} | ||||||
|  |     popd | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function build_occlum_instance() | ||||||
|  | { | ||||||
|  |     name=$1 | ||||||
|  |     rm -rf ${name} | ||||||
|  |     occlum new ${name} | ||||||
|  |     pushd ${name} | ||||||
|  |     copy_bom -f ../iperf3.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 | ||||||
							
								
								
									
										13
									
								
								demos/benchmarks/iperf3/iperf3.yaml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										13
									
								
								demos/benchmarks/iperf3/iperf3.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | includes: | ||||||
|  |   - base.yaml | ||||||
|  | # bash | ||||||
|  | targets: | ||||||
|  |   # copy iperf | ||||||
|  |   - target: /bin | ||||||
|  |     copy: | ||||||
|  |       - files: | ||||||
|  |         - ${IPERF3_INSTALL_DIR}/bin/iperf3 | ||||||
|  |   - target: /opt/occlum/glibc/lib | ||||||
|  |     copy: | ||||||
|  |       - files: | ||||||
|  |           - ${IPERF3_INSTALL_DIR}/lib/libiperf.so.0 | ||||||
| @ -10,7 +10,7 @@ copy_bom -f ../sysbench.yaml --root image --include-dir /opt/occlum/etc/template | |||||||
| 
 | 
 | ||||||
| new_json="$(jq '.resource_limits.user_space_size = "800MB" | | new_json="$(jq '.resource_limits.user_space_size = "800MB" | | ||||||
|                 .resource_limits.max_num_of_threads = 256 ' Occlum.json)" && \ |                 .resource_limits.max_num_of_threads = 256 ' Occlum.json)" && \ | ||||||
|     echo "${new_json}" > Occlum.json | echo "${new_json}" > Occlum.json | ||||||
| 
 | 
 | ||||||
| occlum build | occlum build | ||||||
| #occlum run /bin/sysbench threads --threads=200 --thread-yields=100 --thread-locks=4 --time=10 run | #occlum run /bin/sysbench threads --threads=200 --thread-yields=100 --thread-locks=4 --time=10 run | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user