-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbenchmark.sh
44 lines (36 loc) · 1.43 KB
/
benchmark.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/bash
NGNIX_COMMAND=nginx
NGINX_CONFIG_1_CPU=$(realpath configs/nginx-1-cpu.conf)
NGINX_CONFIG_8_CPU=$(realpath configs/nginx-8-cpu.conf)
IO_URING_COMMAND=./build/io-uring-static-server
IO_URING_CONFIG_1_CPU=configs/io-uring-server-1-cpu.conf
IO_URING_CONFIG_8_CPU=configs/io-uring-server-8-cpu.conf
BENCHMARK_DIR=benchmarks
THREAD_COUNT=8
WRK_COMMAND=/opt/bin/wrk
URL=http://localhost:80/httptest/splash.css
mkdir -p $BENCHMARK_DIR > /dev/null
function benchmark() {
local COMMAND="$1"
local THREADS="$2"
local CONNECTIONS="$3"
local FILE_PATH="$BENCHMARK_DIR/$4"
sudo fuser -k 80/tcp > /dev/null
echo -e "test $COMMAND at $THREADS threads and $CONNECTIONS connections"
touch $FILE_PATH
$COMMAND & sleep 2 && $WRK_COMMAND -c$CONNECTIONS -t$THREADS -d10s $URL >> $FILE_PATH
sudo fuser -k 80/tcp > /dev/null
echo -e "\n" >> $FILE_PATH
}
function make_benchmark() {
local COMMAND="$1"
local FILE="$2"
CONNECTIONS=(100 1000 10000)
for CONNECTION in ${CONNECTIONS[*]}; do
benchmark "$COMMAND" $THREAD_COUNT $CONNECTION $FILE
done
}
make_benchmark "sudo $IO_URING_COMMAND $IO_URING_CONFIG_1_CPU" "io-uring-static-server-1-cpu.txt"
make_benchmark "sudo $IO_URING_COMMAND $IO_URING_CONFIG_8_CPU" "io-uring-static-server-8-cpu.txt"
make_benchmark "sudo $NGNIX_COMMAND -c $NGINX_CONFIG_1_CPU" "ngnix-1-cpu.txt"
make_benchmark "sudo $NGNIX_COMMAND -c $NGINX_CONFIG_8_CPU" "ngnix-8-cpu.txt"