[hw-ci] Add MySQL to hw mode test
This commit is contained in:
		
							parent
							
								
									d7d485de27
								
							
						
					
					
						commit
						b3e2d6c873
					
				
							
								
								
									
										46
									
								
								.github/workflows/hw_mode_test.yml
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										46
									
								
								.github/workflows/hw_mode_test.yml
									
									
									
									
										vendored
									
									
								
							| @ -922,6 +922,52 @@ jobs: | |||||||
|       if: ${{ always() }} |       if: ${{ always() }} | ||||||
|       run: docker stop ${{ env.CONTAINER_NAME }} |       run: docker stop ${{ env.CONTAINER_NAME }} | ||||||
| 
 | 
 | ||||||
|  |   MySQL_test: | ||||||
|  |     timeout-minutes: 180 | ||||||
|  |     if: github.event_name == 'push' || ${{ contains(github.event.pull_request.labels.*.name, 'SGX-hardware-test-required') }} | ||||||
|  |     runs-on: ${{ matrix.self_runner }} | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         self_runner: [[self-hosted, SGX2-HW]] | ||||||
|  | 
 | ||||||
|  |     steps: | ||||||
|  |     - name: Clean before running | ||||||
|  |       run: | | ||||||
|  |         sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" | ||||||
|  | 
 | ||||||
|  |     - name: Checkout code | ||||||
|  |       if: github.event_name == 'push' | ||||||
|  |       uses: actions/checkout@v2 | ||||||
|  |       with: | ||||||
|  |         submodules: true | ||||||
|  | 
 | ||||||
|  |     - name: Checkout code from fork | ||||||
|  |       if: ${{ contains(github.event.pull_request.labels.*.name, 'SGX-hardware-test-required') }} | ||||||
|  |       uses: actions/checkout@v2 | ||||||
|  |       with: | ||||||
|  |         ref: refs/pull/${{ github.event.pull_request.number }}/merge | ||||||
|  |         submodules: true | ||||||
|  | 
 | ||||||
|  |     - uses: ./.github/workflows/composite_action/hw | ||||||
|  |       with: | ||||||
|  |         container-name: ${{ github.job }} | ||||||
|  |         build-envs: 'OCCLUM_RELEASE_BUILD=1' | ||||||
|  | 
 | ||||||
|  |     - name: Download and build mysql | ||||||
|  |       run: docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/mysql && ./dl_and_build_mysql.sh" | ||||||
|  | 
 | ||||||
|  |     - name: Run mysql server | ||||||
|  |       run: docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/mysql && ./run_mysql_server.sh" & | ||||||
|  | 
 | ||||||
|  |     - name: Run mysql benchmarks | ||||||
|  |       run: | | ||||||
|  |         sleep 120; | ||||||
|  |         docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/mysql && ./run_benchmarks.sh" | ||||||
|  | 
 | ||||||
|  |     - name: Clean the environment | ||||||
|  |       if: ${{ always() }} | ||||||
|  |       run: docker stop ${{ env.CONTAINER_NAME }} | ||||||
|  | 
 | ||||||
|   Stress_test_with_musl: |   Stress_test_with_musl: | ||||||
|     timeout-minutes: 360 |     timeout-minutes: 360 | ||||||
|     if: github.event_name == 'schedule' |     if: github.event_name == 'schedule' | ||||||
|  | |||||||
| @ -21,6 +21,7 @@ This set of demos shows how real-world apps can be easily run inside SGX enclave | |||||||
| * [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. | ||||||
| * [grpc](grpc/): A client and server communicating through [gRPC](https://grpc.io), containing [glibc-supported demo](grpc/grpc_glibc) and [musl-supported demo](grpc/grpc_musl). | * [grpc](grpc/): A client and server communicating through [gRPC](https://grpc.io), containing [glibc-supported demo](grpc/grpc_glibc) and [musl-supported demo](grpc/grpc_musl). | ||||||
| * [https_server](https_server/): A HTTPS file server based on [Mongoose Embedded Web Server Library](https://github.com/cesanta/mongoose). | * [https_server](https_server/): A HTTPS file server based on [Mongoose Embedded Web Server Library](https://github.com/cesanta/mongoose). | ||||||
|  | * [mysql](mysql/): A demo of [MySQL](https://www.mysql.com/). | ||||||
| * [openvino](openvino/) A benchmark of [OpenVINO Inference Engine](https://docs.openvinotoolkit.org/2019_R3/_docs_IE_DG_inference_engine_intro.html). | * [openvino](openvino/) A benchmark of [OpenVINO Inference Engine](https://docs.openvinotoolkit.org/2019_R3/_docs_IE_DG_inference_engine_intro.html). | ||||||
| * [pytorch](pytorch/): Demos of standalone and distributed [PyTorch](https://pytorch.org/). | * [pytorch](pytorch/): Demos of standalone and distributed [PyTorch](https://pytorch.org/). | ||||||
| * [redis](redis/): A demo of [Redis](https://redis.io). | * [redis](redis/): A demo of [Redis](https://redis.io). | ||||||
|  | |||||||
| @ -39,10 +39,36 @@ patch -s -p0 < apply-mysql-to-occlum.patch | |||||||
| pushd mysql_src | pushd mysql_src | ||||||
| mkdir bld && cd bld | mkdir bld && cd bld | ||||||
| 
 | 
 | ||||||
| cmake -j$(nproc) .. -DCMAKE_CXX_FLAGS="-fpic -pie" -DCMAKE_C_FLAGS="-fpic -pie" | cmake -j$(nproc) .. \ | ||||||
| 
 |     -DCMAKE_CXX_FLAGS="-fpic -pie" -DCMAKE_C_FLAGS="-fpic -pie" \ | ||||||
| CC="-fpic -pie" CXX="-fpic -pie" make -j$(nproc) |     -DWITH_ARCHIVE_STORAGE_ENGINE=0 \ | ||||||
|  |     -DWITH_EXAMPLE_STORAGE_ENGINE=0 \ | ||||||
|  |     -DWITH_FEDERATED_STORAGE_ENGINE=0 \ | ||||||
|  |     -DDISABLE_PSI_COND=1 \ | ||||||
|  |     -DDISABLE_PSI_DATA_LOCK=1 \ | ||||||
|  |     -DDISABLE_PSI_ERROR=1 \ | ||||||
|  |     -DDISABLE_PSI_FILE=1 \ | ||||||
|  |     -DDISABLE_PSI_IDLE=1 \ | ||||||
|  |     -DDISABLE_PSI_MEMORY=1 \ | ||||||
|  |     -DDISABLE_PSI_METADATA=1 \ | ||||||
|  |     -DDISABLE_PSI_MUTEX=1 \ | ||||||
|  |     -DDISABLE_PSI_PS=1 \ | ||||||
|  |     -DDISABLE_PSI_RWLOCK=1 \ | ||||||
|  |     -DDISABLE_PSI_SOCKET=1 \ | ||||||
|  |     -DDISABLE_PSI_SP=1 \ | ||||||
|  |     -DDISABLE_PSI_STAGE=0 \ | ||||||
|  |     -DDISABLE_PSI_STATEMENT=1 \ | ||||||
|  |     -DDISABLE_PSI_STATEMENT_DIGEST=1 \ | ||||||
|  |     -DDISABLE_PSI_TABLE=1 \ | ||||||
|  |     -DDISABLE_PSI_THREAD=0 \ | ||||||
|  |     -DDISABLE_PSI_TRANSACTION=1 \ | ||||||
|  |     -DWITH_MYSQLX=0 \ | ||||||
|  |     -DWITH_NDB_JAVA=0 \ | ||||||
|  |     -DWITH_RAPID=0 \ | ||||||
|  |     -DWITH_ROUTER=0 \ | ||||||
|  |     -DWITH_UNIT_TESTS=0 | ||||||
| 
 | 
 | ||||||
|  | make -j4 | ||||||
| make install -j$(nproc) | make install -j$(nproc) | ||||||
| cd .. | cd .. | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,7 +11,6 @@ port                =   3306 | |||||||
| bind-address        =   127.0.0.1 | bind-address        =   127.0.0.1 | ||||||
| skip-networking     =   0 | skip-networking     =   0 | ||||||
| skip_ssl            =   0 | skip_ssl            =   0 | ||||||
| mysqlx              =   0 |  | ||||||
| wait_timeout        =   60 | wait_timeout        =   60 | ||||||
| interactive_timeout =   120 | interactive_timeout =   120 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -27,7 +27,7 @@ targets: | |||||||
|   - target: /opt/occlum/glibc/lib |   - target: /opt/occlum/glibc/lib | ||||||
|     copy: |     copy: | ||||||
|       - files: |       - files: | ||||||
|         - /usr/local/mysql/lib/mysqlrouter/private/libprotobuf-lite.so.3.19.4 |         - ../mysql_src/bld/library_output_directory/libprotobuf-lite.so.3.19.4 | ||||||
|   - target: / |   - target: / | ||||||
|     copy: |     copy: | ||||||
|       - files: |       - files: | ||||||
|  | |||||||
							
								
								
									
										63
									
								
								demos/mysql/run_benchmarks.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										63
									
								
								demos/mysql/run_benchmarks.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,63 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | GREEN='\033[1;32m' | ||||||
|  | NC='\033[0m' | ||||||
|  | 
 | ||||||
|  | echo -e "${GREEN}Install sysbench first${NC}" | ||||||
|  | 
 | ||||||
|  | # We use sysbench to test mysql, need to install it first | ||||||
|  | apt-get install -y sysbench | ||||||
|  | 
 | ||||||
|  | function run_benchmarks() | ||||||
|  | { | ||||||
|  |     WORKLOADS=("oltp_point_select" "oltp_write_only" "oltp_read_write") | ||||||
|  |     for item in ${WORKLOADS[@]} | ||||||
|  |     do | ||||||
|  |         echo "start to prepare for $item" | ||||||
|  |         sleep 3 | ||||||
|  |         sysbench /usr/share/sysbench/$item.lua\ | ||||||
|  |             --mysql-host='127.0.0.1'\ | ||||||
|  |             --mysql-user=root\ | ||||||
|  |             --time=60\ | ||||||
|  |             --mysql-db=mysql\ | ||||||
|  |             --tables=3\ | ||||||
|  |             --table_size=100000\ | ||||||
|  |             --rand-type=pareto\ | ||||||
|  |             prepare | ||||||
|  | 
 | ||||||
|  |         echo "start to run $item" | ||||||
|  |         sleep 3 | ||||||
|  |         sysbench /usr/share/sysbench/$item.lua\ | ||||||
|  |             --mysql-host='127.0.0.1'\ | ||||||
|  |             --mysql-user=root\ | ||||||
|  |             --time=60\ | ||||||
|  |             --mysql-db=mysql\ | ||||||
|  |             --tables=3\ | ||||||
|  |             --table_size=100000\ | ||||||
|  |             --rand-type=pareto\ | ||||||
|  |             --threads=2\ | ||||||
|  |             --report-interval=10\ | ||||||
|  |             run | ||||||
|  | 
 | ||||||
|  |         echo "start to cleanup $item" | ||||||
|  |         sleep 3 | ||||||
|  |         sysbench /usr/share/sysbench/$item.lua\ | ||||||
|  |             --mysql-host='127.0.0.1'\ | ||||||
|  |             --mysql-user=root\ | ||||||
|  |             --time=60\ | ||||||
|  |             --mysql-db=mysql\ | ||||||
|  |             --tables=3\ | ||||||
|  |             --table_size=100000\ | ||||||
|  |             --rand-type=pareto\ | ||||||
|  |             --threads=2\ | ||||||
|  |             --report-interval=10\ | ||||||
|  |             cleanup | ||||||
|  |     done | ||||||
|  | 
 | ||||||
|  |     echo "all done" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | echo -e "${GREEN}Run benchmarks using sysbench${NC}" | ||||||
|  | 
 | ||||||
|  | run_benchmarks | ||||||
| @ -14,8 +14,8 @@ MYSQLD=mysqld | |||||||
| rm -rf occlum_instance && occlum new occlum_instance | rm -rf occlum_instance && occlum new occlum_instance | ||||||
| pushd occlum_instance | pushd occlum_instance | ||||||
| 
 | 
 | ||||||
| new_json="$(jq '.resource_limits.user_space_size = "3500MB" | | new_json="$(jq '.resource_limits.user_space_size = "8000MB" | | ||||||
|                 .resource_limits.kernel_space_heap_size ="3000MB" | |                 .resource_limits.kernel_space_heap_size ="1000MB" | | ||||||
|                 .resource_limits.max_num_of_threads = 96' Occlum.json)" && \ |                 .resource_limits.max_num_of_threads = 96' Occlum.json)" && \ | ||||||
| echo "${new_json}" > Occlum.json | echo "${new_json}" > Occlum.json | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user