kawipiko/scripts/benchmark.z-run

428 lines
16 KiB
Text
Raw Normal View History

#!/dev/null
:: benchmark / server / http / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' http "${@}" --processes 1 --threads 1
:: benchmark / server / http / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' http "${@}" --processes 2 --threads 1
:: benchmark / server / http / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' http "${@}" --processes 1 --threads 2
:: benchmark / server / http / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' http "${@}" --processes 2 --threads 2
:: benchmark / server / https-fast / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' https-fast "${@}" --processes 1 --threads 1
:: benchmark / server / https-fast / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' https-fast "${@}" --processes 2 --threads 1
:: benchmark / server / https-fast / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' https-fast "${@}" --processes 1 --threads 2
:: benchmark / server / https-fast / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' https-fast "${@}" --processes 2 --threads 2
:: benchmark / server / https-go / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' https-go "${@}" --processes 1 --threads 1
:: benchmark / server / https-go / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' https-go "${@}" --processes 2 --threads 1
:: benchmark / server / https-go / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' https-go "${@}" --processes 1 --threads 2
:: benchmark / server / https-go / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' https-go "${@}" --processes 2 --threads 2
:: benchmark / server / http2-go / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' http2-go "${@}" --processes 1 --threads 1
:: benchmark / server / http2-go / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' http2-go "${@}" --processes 2 --threads 1
:: benchmark / server / http2-go / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' http2-go "${@}" --processes 1 --threads 2
:: benchmark / server / http2-go / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server / inmem' http2-go "${@}" --processes 2 --threads 2
:: benchmark / wrk / http / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 16384 --timeout 6s
:: benchmark / wrk / http / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 4096
:: benchmark / wrk / http / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 2048
:: benchmark / wrk / http / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 1024
:: benchmark / wrk / http / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 512
:: benchmark / wrk / http / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 256
:: benchmark / wrk / http / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 128
:: benchmark / wrk / http / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 64
:: benchmark / wrk / http / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 32
:: benchmark / wrk / http / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 16
:: benchmark / wrk / http / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 1 --connections 8
:: benchmark / wrk / http / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 1 --connections 4
:: benchmark / wrk / http / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 1 --connections 2
:: benchmark / wrk / http / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 1 --connections 1
:: benchmark / wrk / https / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 16384 --timeout 6s
:: benchmark / wrk / https / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 4096
:: benchmark / wrk / https / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 2048
:: benchmark / wrk / https / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 1024
:: benchmark / wrk / https / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 512
:: benchmark / wrk / https / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 256
:: benchmark / wrk / https / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 128
:: benchmark / wrk / https / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 64
:: benchmark / wrk / https / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 32
:: benchmark / wrk / https / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 16
:: benchmark / wrk / https / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 1 --connections 8
:: benchmark / wrk / https / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 1 --connections 4
:: benchmark / wrk / https / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 1 --connections 2
:: benchmark / wrk / https / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 1 --connections 1
:: benchmark / h2load / https / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 16384 --h1 --connection-inactivity-timeout 6s
:: benchmark / h2load / https / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 4096 --h1
:: benchmark / h2load / https / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 2048 --h1
:: benchmark / h2load / https / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 1024 --h1
:: benchmark / h2load / https / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 512 --h1
:: benchmark / h2load / https / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 256 --h1
:: benchmark / h2load / https / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 128 --h1
:: benchmark / h2load / https / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 64 --h1
:: benchmark / h2load / https / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 32 --h1
:: benchmark / h2load / https / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 16 --h1
:: benchmark / h2load / https / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 8 --h1
:: benchmark / h2load / https / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 4 --h1
:: benchmark / h2load / https / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 2 --h1
:: benchmark / h2load / https / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 1 --h1
:: benchmark / h2load / http2 / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 16384 --npn-list=h2 --connection-inactivity-timeout 6s
:: benchmark / h2load / http2 / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 4096 --npn-list=h2
:: benchmark / h2load / http2 / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 2048 --npn-list=h2
:: benchmark / h2load / http2 / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 1024 --npn-list=h2
:: benchmark / h2load / http2 / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 512 --npn-list=h2
:: benchmark / h2load / http2 / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 256 --npn-list=h2
:: benchmark / h2load / http2 / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 128 --npn-list=h2
:: benchmark / h2load / http2 / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 64 --npn-list=h2
:: benchmark / h2load / http2 / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 32 --npn-list=h2
:: benchmark / h2load / http2 / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 16 --npn-list=h2
:: benchmark / h2load / http2 / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 8 --npn-list=h2
:: benchmark / h2load / http2 / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 4 --npn-list=h2
:: benchmark / h2load / http2 / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 2 --npn-list=h2
:: benchmark / h2load / http2 / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 1 --npn-list=h2
--<< benchmark / server
"${ZRUN[@]}" ':: go / build / server / release / quick'
test "${#}" -ge 1
_mode="${1}"
shift -- 1
if test "${#}" -ge 1 ; then
if test "${1:0:1}" != '-' ; then
_archive="${1}"
shift -- 1
else
_archive=''
fi
else
_archive=''
fi
if test -z "${_archive}" ; then
_archive=./examples/hello-world.cdb
fi
_arguments=()
case "${_mode}" in
( http )
_arguments+=(
--bind 127.9.185.194:8080
)
;;
( https-fast )
_arguments+=(
--bind-tls 127.9.185.194:8443
--http2-disable
)
;;
( https-go )
_arguments+=(
--bind-tls-2 127.9.185.194:8443
--http2-disable
)
;;
( http2-go )
_arguments+=(
--bind-tls-2 127.9.185.194:8443
--http1-disable
)
;;
esac
exec -- \
sudo -u root -n -E -P -- \
taskset -c 0,1 \
nice -n -19 -- \
ionice -c 2 -n 0 -- \
chrt -r 10 \
prlimit -n262144 -- \
sudo -u "${USER}" -n -E -P -- \
env -i -- \
./.outputs/binaries/release/kawipiko-server \
"${_arguments[@]}" \
--archive "${_archive}" \
--security-headers-disable \
--timeout-disable \
"${@}" \
#
!!
<< benchmark / server / mmap
exec -- "${ZRUN[@]}" ':: benchmark / server' \
"${@}" \
--archive-mmap \
--archive-preload \
#
!!
<< benchmark / server / inmem
exec -- "${ZRUN[@]}" ':: benchmark / server' \
"${@}" \
--archive-inmem \
--index-all \
#
!!
<< benchmark / server / profile / cpu
exec -- "${ZRUN[@]}" ':: benchmark / server / mmap' \
"${@}" \
--profile-cpu ./.outputs/server-cpu.txt \
#
!!
<< benchmark / server / profile / mem
exec -- "${ZRUN[@]}" ':: benchmark / server / mmap' \
"${@}" \
--profile-mem ./.outputs/server-mem.txt \
#
!!
<< benchmark / server / profile / cpu / analyze
export -- PPROF_BINARY_PATH=./.outputs/binaries/release/kawipiko-server
exec -- go tool pprof "${@}" -- ./.outputs/server-cpu.txt
!!
<< benchmark / server / profile / cpu / analyze / web
export -- PPROF_BINARY_PATH=./.outputs/binaries/release/kawipiko-server
exec -- go tool pprof -http 127.108.221.132:8080 -no_browser -functions "${@}" -- ./.outputs/server-cpu.txt
!!
<< benchmark / server / profile / mem / analyze
export -- PPROF_BINARY_PATH=./.outputs/binaries/release/kawipiko-server
exec -- go tool pprof "${@}" -- ./.outputs/server-mem.txt
!!
<< benchmark / server / profile / mem / analyze / web
export -- PPROF_BINARY_PATH=./.outputs/binaries/release/kawipiko-server
exec -- go tool pprof "${@}" -http 127.108.221.132:8080 -no_browser -functions -- ./.outputs/server-mem.txt
!!
<< benchmark / server-dummy / http
test "${#}" -eq 0
"${ZRUN[@]}" ':: go / build / server-dummy / release / quick'
exec -- \
sudo -u root -n -E -P -- \
taskset -c 0,1 \
nice -n -19 -- \
ionice -c 2 -n 0 -- \
chrt -r 10 \
prlimit -n262144 -- \
sudo -u "${USER}" -n -E -P -- \
env -i -- \
./.outputs/binaries/release/kawipiko-server-dummy \
"${@}" \
"127.9.185.194:8080" \
#
!!
<< benchmark / wrk / http
exec -- "${ZRUN[@]}" ':: benchmark / wrk' http 127.9.185.194:8080 "${@}"
!!
<< benchmark / wrk / https
exec -- "${ZRUN[@]}" ':: benchmark / wrk' https 127.9.185.194:8443 "${@}"
!!
--<< benchmark / wrk
test "${#}" -ge 2
_url_base="${1}://${2}"
shift -- 2
if test "${#}" -ge 1 ; then
if test "${1:0:1}" != '-' ; then
_path="${1}"
_path="${_path#/}"
shift -- 1
else
_path=''
fi
else
_path=''
fi
exec -- \
sudo -u root -n -E -P -- \
taskset -c 2,3 \
nice -n -19 -- \
ionice -c 2 -n 0 -- \
chrt -r 10 \
prlimit -n262144 -- \
sudo -u "${USER}" -n -E -P -- \
"${ZRUN[@]}" ':: tools / wrk' \
"${@}" \
-- \
"${_url_base}/${_path}" \
#
!!
<< benchmark / wrk / with-paths / http
exec -- "${ZRUN[@]}" ':: benchmark / wrk / with-paths' http 127.9.185.194:8080 "${@}"
!!
<< benchmark / wrk / with-paths / https
exec -- "${ZRUN[@]}" ':: benchmark / wrk / with-paths' https 127.9.185.194:8443 "${@}"
!!
--<< benchmark / wrk / with-paths
test "${#}" -ge 2
_url_base="${1}://${2}"
shift -- 2
test "${#}" -ge 1
_paths="${1}"
shift -- 1
exec -- \
sudo -u root -n -E -P -- \
taskset -c 2,3 \
nice -n -19 -- \
ionice -c 2 -n 0 -- \
chrt -r 10 \
prlimit -n262144 -- \
sudo -u "${USER}" -n -E -P -- \
"${ZRUN[@]}" ':: tools / wrk' \
"${@}" \
--script ../kawipiko-examples/sources/wrk-paths-from-file.lua \
-- \
"${_url_base}" \
"${_paths}" \
#
!!
<< benchmark / h2load / http
exec -- "${ZRUN[@]}" ':: benchmark / h2load' http 127.9.185.194:8080 "${@}"
!!
<< benchmark / h2load / https
exec -- "${ZRUN[@]}" ':: benchmark / h2load' https 127.9.185.194:8443 "${@}"
!!
--<< benchmark / h2load
test "${#}" -ge 2
_url_base="${1}://${2}"
shift -- 2
if test "${#}" -ge 1 ; then
if test "${1:0:1}" != '-' ; then
_path="${1}"
_path="${_path#/}"
shift -- 1
else
_path=''
fi
else
_path=''
fi
exec -- \
sudo -u root -n -E -P -- \
taskset -c 2,3 \
nice -n -19 -- \
ionice -c 2 -n 0 -- \
chrt -r 10 \
prlimit -n262144 -- \
sudo -u "${USER}" -n -E -P -- \
"${ZRUN[@]}" ':: tools / h2load' \
"${@}" \
-- \
"${_url_base}/${_path}" \
#
!!
<< benchmark / nghttp / https
exec -- "${ZRUN[@]}" ':: benchmark / nghttp' https 127.9.185.194:8443 "${@}"
!!
--<< benchmark / nghttp
test "${#}" -ge 2
_url_base="${1}://${2}"
shift -- 2
if test "${#}" -ge 1 ; then
if test "${1:0:1}" != '-' ; then
_path="${1}"
_path="${_path#/}"
shift -- 1
else
_path=''
fi
else
_path=''
fi
exec -- \
"${ZRUN[@]}" ':: tools / nghttp' \
--null-out \
--stat \
"${@}" \
-- \
"${_url_base}/${_path}" \
#
!!
<< benchmark / curl / http
exec -- "${ZRUN[@]}" ':: benchmark / curl' http 127.9.185.194:8080 --http1.1 "${@}"
!!
<< benchmark / curl / https
exec -- "${ZRUN[@]}" ':: benchmark / curl' https 127.9.185.194:8443 --http1.1 "${@}"
!!
<< benchmark / curl / http2
exec -- "${ZRUN[@]}" ':: benchmark / curl' https 127.9.185.194:8443 --http2 "${@}"
!!
<< benchmark / curl
test "${#}" -ge 2
_url_base="${1}://${2}"
shift -- 2
if test "${#}" -ge 1 ; then
if test "${1:0:1}" != '-' ; then
_path="${1}"
_path="${_path#/}"
shift -- 1
else
_path=''
fi
else
_path=''
fi
exec -- \
"${ZRUN[@]}" ':: tools / curl' \
--compressed \
--output /dev/stdout \
--dump-header /dev/stdout \
"${@}" \
-- \
"${_url_base}/${_path}" \
#
!!