mirror of
				https://github.com/masonr/yet-another-bench-script.git
				synced 2025-10-30 21:36:17 +00:00 
			
		
		
		
	add ARM compatibility
This commit is contained in:
		| @@ -9,6 +9,15 @@ This directory contains all of the binaries required to run the benchmarking tes | ||||
| * **iperf_x64** - v3.10 (compiled 28 May 2021) - 64-bit version | ||||
| * **iperf_x86** - v3.10 (compiled 28 May 2021) - 32-bit version | ||||
|  | ||||
| ### ARM Binaries | ||||
|  | ||||
| ARM compatibilty is considered experimental. Static binaries for ARM-based machines are cross-compiled within a Holy Build Box container using the [musl toolchain](https://musl.cc/). | ||||
|  | ||||
| * **fio_aarch64** - v3.27 (compiled 05 June 2021) - ARM 64-bit version | ||||
| * **fio_arm** - v3.27 (compiled 05 June 2021) - ARM 32-bit version | ||||
| * **iperf_aarch64** - v3.10 (compiled 05 June 2021) - ARM 64-bit version | ||||
| * **iperf_arm** - v3.10 (compiled 05 June 2021) - ARM 32-bit version | ||||
|  | ||||
| ### Compile Notes | ||||
|  | ||||
| **Pre-reqs**: | ||||
| @@ -27,3 +36,21 @@ docker run -t -i --rm -v `pwd`:/io phusion/holy-build-box-32:latest linux32 bash | ||||
| ``` | ||||
|  | ||||
| 64-bit and 32-bit binaries will be placed in the current directory. | ||||
|  | ||||
| ### ARM Compile Notes | ||||
|  | ||||
| Compilation of ARM-compatible binaries requires additional environment variables to identify the proper musl toolchain and architecture to target for cross-compilation. | ||||
|  | ||||
| **Compiling 64-bit binaries**: | ||||
|  | ||||
| ```sh | ||||
| docker run -t -i --rm -v `pwd`:/io --env ARCH=aarch64 --env CROSS=aarch64-linux-musl --env HOST=aarch64-linux-gnu phusion/holy-build-box-64:latest bash /io/compile-arm.sh | ||||
| ``` | ||||
|  | ||||
| **Compiling 32-bit binaries**: | ||||
|  | ||||
| ```sh | ||||
| docker run -t -i --rm -v `pwd`:/io --env ARCH=arm --env CROSS=arm-linux-musleabihf --env HOST=arm-linux-gnueabihf phusion/holy-build-box-64:latest bash /io/compile-arm.sh | ||||
| ``` | ||||
|  | ||||
| 64-bit (aarch64) and 32-bit (arm) binaries will be placed in the current directory. | ||||
|   | ||||
							
								
								
									
										51
									
								
								bin/compile-arm.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										51
									
								
								bin/compile-arm.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
|  | ||||
| # Activate Holy Build Box lib compiliation environment | ||||
| source /hbb/activate | ||||
|  | ||||
| set -x  | ||||
|  | ||||
| yum install -y yum-plugin-ovl # fix for docker overlay fs | ||||
| yum install -y xz | ||||
|  | ||||
| # download musl cross compilation toolchain | ||||
| cd ~ | ||||
| curl -L "https://musl.cc/${CROSS}-cross.tgz" -o "${CROSS}-cross.tgz" | ||||
| tar xf ${CROSS}-cross.tgz | ||||
|  | ||||
| # download, compile, and install libaio as static library | ||||
| cd ~ | ||||
| curl -L http://ftp.de.debian.org/debian/pool/main/liba/libaio/libaio_0.3.112.orig.tar.xz -o "libaio.tar.xz" | ||||
| tar xf libaio.tar.xz | ||||
| cd libaio-*/src | ||||
| CC=/root/${CROSS}-cross/bin/${CROSS}-gcc ENABLE_SHARED=0 make prefix=/hbb_exe install | ||||
|  | ||||
| # Activate Holy Build Box exe compilation environment | ||||
| source /hbb_exe/activate | ||||
|  | ||||
| # download and compile fio | ||||
| cd ~ | ||||
| curl -L https://github.com/axboe/fio/archive/fio-3.27.tar.gz -o "fio.tar.gz" | ||||
| tar xf fio.tar.gz | ||||
| cd fio-fio* | ||||
| CC=/root/${CROSS}-cross/bin/${CROSS}-gcc ./configure --disable-native --build-static | ||||
| make | ||||
|  | ||||
| # verify no external shared library links | ||||
| libcheck fio | ||||
| # copy fio binary to mounted dir | ||||
| cp fio /io/fio_$ARCH | ||||
|  | ||||
| # download and compile iperf | ||||
| cd ~ | ||||
| curl -L https://github.com/esnet/iperf/archive/3.10.tar.gz -o "iperf.tar.gz" | ||||
| tar xf iperf.tar.gz | ||||
| cd iperf* | ||||
| CC=/root/${CROSS}-cross/bin/${CROSS}-gcc ./configure --disable-shared --disable-profiling --build x86_64-pc-linux-gnu --host ${HOST} --with-openssl=no --enable-static-bin | ||||
| make | ||||
|  | ||||
| # verify no external shared library links | ||||
| libcheck src/iperf3 | ||||
| # copy iperf binary to mounted dir | ||||
| cp src/iperf3 /io/iperf3_$ARCH | ||||
							
								
								
									
										
											BIN
										
									
								
								bin/fio_aarch64
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/fio_aarch64
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/fio_arm
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/fio_arm
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/iperf3_aarch64
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/iperf3_aarch64
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/iperf3_arm
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/iperf3_arm
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user