kawipiko/scripts/benchmark.z-run
2023-03-05 17:26:36 +02:00

762 lines
29 KiB
Plaintext

#!/dev/null
::// benchmark / ...
:: benchmark / server / http-fast / 1x1 :: exec -- "${ZRUN}" ':: benchmark / server' http-fast "${@}" --processes 1 --threads 1
:: benchmark / server / http-fast / 2x1 :: exec -- "${ZRUN}" ':: benchmark / server' http-fast "${@}" --processes 2 --threads 1
:: benchmark / server / http-fast / 1x2 :: exec -- "${ZRUN}" ':: benchmark / server' http-fast "${@}" --processes 1 --threads 2
:: benchmark / server / http-fast / 2x2 :: exec -- "${ZRUN}" ':: benchmark / server' http-fast "${@}" --processes 2 --threads 2
:: benchmark / server / http-go / 1x1 :: exec -- "${ZRUN}" ':: benchmark / server' http-go "${@}" --processes 1 --threads 1
:: benchmark / server / http-go / 2x1 :: exec -- "${ZRUN}" ':: benchmark / server' http-go "${@}" --processes 2 --threads 1
:: benchmark / server / http-go / 1x2 :: exec -- "${ZRUN}" ':: benchmark / server' http-go "${@}" --processes 1 --threads 2
:: benchmark / server / http-go / 2x2 :: exec -- "${ZRUN}" ':: benchmark / server' http-go "${@}" --processes 2 --threads 2
:: benchmark / server / https-fast / 1x1 :: exec -- "${ZRUN}" ':: benchmark / server' https-fast "${@}" --processes 1 --threads 1
:: benchmark / server / https-fast / 2x1 :: exec -- "${ZRUN}" ':: benchmark / server' https-fast "${@}" --processes 2 --threads 1
:: benchmark / server / https-fast / 1x2 :: exec -- "${ZRUN}" ':: benchmark / server' https-fast "${@}" --processes 1 --threads 2
:: benchmark / server / https-fast / 2x2 :: exec -- "${ZRUN}" ':: benchmark / server' https-fast "${@}" --processes 2 --threads 2
:: benchmark / server / https-go / 1x1 :: exec -- "${ZRUN}" ':: benchmark / server' https-go "${@}" --processes 1 --threads 1
:: benchmark / server / https-go / 2x1 :: exec -- "${ZRUN}" ':: benchmark / server' https-go "${@}" --processes 2 --threads 1
:: benchmark / server / https-go / 1x2 :: exec -- "${ZRUN}" ':: benchmark / server' https-go "${@}" --processes 1 --threads 2
:: benchmark / server / https-go / 2x2 :: exec -- "${ZRUN}" ':: benchmark / server' https-go "${@}" --processes 2 --threads 2
:: benchmark / server / http2-go / 1x1 :: exec -- "${ZRUN}" ':: benchmark / server' http2-go "${@}" --processes 1 --threads 1
:: benchmark / server / http2-go / 2x1 :: exec -- "${ZRUN}" ':: benchmark / server' http2-go "${@}" --processes 2 --threads 1
:: benchmark / server / http2-go / 1x2 :: exec -- "${ZRUN}" ':: benchmark / server' http2-go "${@}" --processes 1 --threads 2
:: benchmark / server / http2-go / 2x2 :: exec -- "${ZRUN}" ':: benchmark / server' http2-go "${@}" --processes 2 --threads 2
:: benchmark / server / https-split / 1x1 :: exec -- "${ZRUN}" ':: benchmark / server' https-split "${@}" --processes 1 --threads 1
:: benchmark / server / https-split / 2x1 :: exec -- "${ZRUN}" ':: benchmark / server' https-split "${@}" --processes 2 --threads 1
:: benchmark / server / https-split / 1x2 :: exec -- "${ZRUN}" ':: benchmark / server' https-split "${@}" --processes 1 --threads 2
:: benchmark / server / https-split / 2x2 :: exec -- "${ZRUN}" ':: benchmark / server' https-split "${@}" --processes 2 --threads 2
:: benchmark / server / http2-split / 1x1 :: exec -- "${ZRUN}" ':: benchmark / server' http2-split "${@}" --processes 1 --threads 1
:: benchmark / server / http2-split / 2x1 :: exec -- "${ZRUN}" ':: benchmark / server' http2-split "${@}" --processes 2 --threads 1
:: benchmark / server / http2-split / 1x2 :: exec -- "${ZRUN}" ':: benchmark / server' http2-split "${@}" --processes 1 --threads 2
:: benchmark / server / http2-split / 2x2 :: exec -- "${ZRUN}" ':: benchmark / server' http2-split "${@}" --processes 2 --threads 2
:: benchmark / server / http3-quic / 1x1 :: exec -- "${ZRUN}" ':: benchmark / server' http3-quic "${@}" --processes 1 --threads 1
:: benchmark / server / http3-quic / 1x2 :: exec -- "${ZRUN}" ':: benchmark / server' http3-quic "${@}" --processes 1 --threads 2
:: benchmark / server / http-all / 1x1 :: exec -- "${ZRUN}" ':: benchmark / server' http-all "${@}" --processes 1 --threads 1
:: benchmark / server / http-all / 1x2 :: exec -- "${ZRUN}" ':: benchmark / server' http-all "${@}" --processes 1 --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 / h1load / http / 16384 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 2 -c 16384 -w 6000
:: benchmark / h1load / http / 4096 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 2 -c 4096
:: benchmark / h1load / http / 2048 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 2 -c 2048
:: benchmark / h1load / http / 1024 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 2 -c 1024
:: benchmark / h1load / http / 512 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 2 -c 512
:: benchmark / h1load / http / 256 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 2 -c 256
:: benchmark / h1load / http / 128 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 2 -c 128
:: benchmark / h1load / http / 64 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 2 -c 64
:: benchmark / h1load / http / 32 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 2 -c 32
:: benchmark / h1load / http / 16 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 2 -c 16
:: benchmark / h1load / http / 8 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 1 -c 8
:: benchmark / h1load / http / 4 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 1 -c 4
:: benchmark / h1load / http / 2 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 1 -c 2
:: benchmark / h1load / http / 1 :: exec -- "${ZRUN}" ':: benchmark / h1load / http' "${@}" -t 1 -c 1
:: benchmark / h1load / https / 16384 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 2 -c 16384 -w 6000
:: benchmark / h1load / https / 4096 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 2 -c 4096
:: benchmark / h1load / https / 2048 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 2 -c 2048
:: benchmark / h1load / https / 1024 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 2 -c 1024
:: benchmark / h1load / https / 512 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 2 -c 512
:: benchmark / h1load / https / 256 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 2 -c 256
:: benchmark / h1load / https / 128 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 2 -c 128
:: benchmark / h1load / https / 64 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 2 -c 64
:: benchmark / h1load / https / 32 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 2 -c 32
:: benchmark / h1load / https / 16 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 2 -c 16
:: benchmark / h1load / https / 8 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 1 -c 8
:: benchmark / h1load / https / 4 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 1 -c 4
:: benchmark / h1load / https / 2 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 1 -c 2
:: benchmark / h1load / https / 1 :: exec -- "${ZRUN}" ':: benchmark / h1load / https' "${@}" -t 1 -c 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 / http2' "${@}" --threads 2 --clients 16384 --connection-inactivity-timeout 6s
:: benchmark / h2load / http2 / 4096 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 4096
:: benchmark / h2load / http2 / 2048 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 2048
:: benchmark / h2load / http2 / 1024 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 1024
:: benchmark / h2load / http2 / 512 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 512
:: benchmark / h2load / http2 / 256 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 256
:: benchmark / h2load / http2 / 128 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 128
:: benchmark / h2load / http2 / 64 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 64
:: benchmark / h2load / http2 / 32 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 32
:: benchmark / h2load / http2 / 16 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 16
:: benchmark / h2load / http2 / 8 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 1 --clients 8
:: benchmark / h2load / http2 / 4 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 1 --clients 4
:: benchmark / h2load / http2 / 2 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 1 --clients 2
:: benchmark / h2load / http2 / 1 :: exec -- "${ZRUN}" ':: benchmark / h2load / http2' "${@}" --threads 1 --clients 1
:: benchmark / h2load / http3 / 16384 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 16384 --connection-inactivity-timeout 6s
:: benchmark / h2load / http3 / 4096 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 4096
:: benchmark / h2load / http3 / 2048 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 2048
:: benchmark / h2load / http3 / 1024 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 1024
:: benchmark / h2load / http3 / 512 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 512
:: benchmark / h2load / http3 / 256 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 256
:: benchmark / h2load / http3 / 128 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 128
:: benchmark / h2load / http3 / 64 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 64
:: benchmark / h2load / http3 / 32 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 32
:: benchmark / h2load / http3 / 16 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 16
:: benchmark / h2load / http3 / 8 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 1 --clients 8
:: benchmark / h2load / http3 / 4 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 1 --clients 4
:: benchmark / h2load / http3 / 2 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 1 --clients 2
:: benchmark / h2load / http3 / 1 :: exec -- "${ZRUN}" ':: benchmark / h2load / http3' "${@}" --threads 1 --clients 1
:: benchmark / hey / http / 16384 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 16384 -t 6s
:: benchmark / hey / http / 4096 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 4096
:: benchmark / hey / http / 2048 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 2048
:: benchmark / hey / http / 1024 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 1024
:: benchmark / hey / http / 512 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 512
:: benchmark / hey / http / 256 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 256
:: benchmark / hey / http / 128 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 128
:: benchmark / hey / http / 64 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 64
:: benchmark / hey / http / 32 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 32
:: benchmark / hey / http / 16 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 16
:: benchmark / hey / http / 8 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 1 -c 8
:: benchmark / hey / http / 4 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 1 -c 4
:: benchmark / hey / http / 2 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 1 -c 2
:: benchmark / hey / http / 1 :: exec -- "${ZRUN}" ':: benchmark / hey / http' "${@}" -cpus 1 -c 1
--<< benchmark / server
"${ZRUN}" ':: go / build / kawipiko-server / release / native'
test "${#}" -ge 1
_mode="${1}"
shift -- 1
_archive=./examples/hello-world.cdb
_arguments=()
case "${_mode}" in
( http-all )
_arguments+=(
--bind 127.9.185.194:8080
--bind-2 127.9.185.194:8081
--bind-tls 127.9.185.194:8443
--bind-tls-2 127.9.185.194:8444
--bind-quic 127.9.185.194:8445
--http3-alt-svc 127.9.185.194:8445
)
;;
( http-fast )
_arguments+=(
--bind 127.9.185.194:8080
)
;;
( http-go )
_arguments+=(
--bind-2 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:8444
--http1-disable
)
;;
( https-split )
_arguments+=(
--bind-tls 127.9.185.194:8443
)
;;
( http2-split )
_arguments+=(
--bind-tls 127.9.185.194:8444
)
;;
( http3-quic )
_arguments+=(
--bind-quic 127.9.185.194:8445
--http3-alt-svc 127.9.185.194:8445
)
;;
( * )
printf -- '[ee] invalid mode `%s`; aborting!\n' "${_mode}" >&2
;;
esac
_arguments+=(
--archive-mmap
--archive-preload
--index-paths
--index-data-meta
# --index-data-content
--security-headers-disable
# --timeout-disable
)
exec -- \
"${ZRUN}" ':: benchmark / execute / server' \
noenvironment \
./.outputs/binaries/kawipiko-server--release--native \
--archive "${_archive}" \
"${_arguments[@]}" \
"${@}" \
#
!!
<< benchmark / server / profile / cpu
test "${#}" -ge 1
exec -- "${ZRUN}" ':: benchmark / server' \
"${@}" \
--profile-cpu ./.outputs/server-cpu.txt \
#
!!
<< benchmark / server / profile / mem
test "${#}" -ge 1
exec -- "${ZRUN}" ':: benchmark / server' \
"${@}" \
--profile-mem ./.outputs/server-mem.txt \
#
!!
<< benchmark / server / profile / cpu / analyze
export -- PPROF_BINARY_PATH=./.outputs/binaries/kawipiko-server--release--native
exec -- go tool pprof \
"${@}" \
-- ./.outputs/server-cpu.txt \
#
!!
<< benchmark / server / profile / cpu / analyze / web
export -- PPROF_BINARY_PATH=./.outputs/binaries/kawipiko-server--release--native
exec -- go tool pprof \
-http 127.108.221.132:8080 \
-no_browser \
-functions \
-nodefraction 0 \
"${@}" \
-- ./.outputs/server-cpu.txt \
#
!!
<< benchmark / server / profile / cpu / analyze / web-open
test "${#}" -eq 0
exec -- x-www 'guest:*' open http://127.108.221.132:8080/
!!
<< benchmark / server / profile / mem / analyze
export -- PPROF_BINARY_PATH=./.outputs/binaries/kawipiko-server--release--native
exec -- go tool pprof \
"${@}" \
-- ./.outputs/server-mem.txt \
#
!!
<< benchmark / server / profile / mem / analyze / web
export -- PPROF_BINARY_PATH=./.outputs/binaries/kawipiko-server--release--native
exec -- go tool pprof \
-http 127.226.119.8:8080 \
-no_browser \
-functions \
-nodefraction 0 \
"${@}" \
-- ./.outputs/server-mem.txt \
#
!!
<< benchmark / server / profile / mem / analyze / web-open
test "${#}" -eq 0
exec -- x-www 'guest:*' open http://127.226.119.8:8080/
!!
:: benchmark / nginx / 1x1 :: exec -- "${ZRUN}" ':: benchmark / nginx' 1 "${@}"
:: benchmark / nginx / 2x1 :: exec -- "${ZRUN}" ':: benchmark / nginx' 2 "${@}"
<< benchmark / nginx
test "${#}" -ge 1
_count="${1}"
shift -- 1
_archive=./examples/hello-world
sed \
-r \
-e 's#@\{nginx_root\}#'"${_archive}"'#g' \
-e 's#@\{nginx_bind_http\}#127.9.185.194:8080#g' \
-e 's#@\{nginx_bind_https\}#127.9.185.194:8443#g' \
-e 's#@\{nginx_bind_http2\}#127.9.185.194:8444#g' \
-e 's#@\{nginx_tls_public\}#./tls-public.pem#g' \
-e 's#@\{nginx_tls_private\}#./tls-private.pem#g' \
-e 's#@\{nginx_empty\}#/var/lib/empty#g' \
-e 's#@\{nginx_pid\}#/tmp/nginx.pid#g' \
< ./examples/nginx/nginx.conf \
>| ./examples/nginx/nginx.conf.tmp \
#
_arguments=(
-c ./examples/nginx/nginx.conf.tmp
-e /dev/stderr
-p .
)
exec -- \
"${ZRUN}" ':: benchmark / execute / multiple' "${_count}" \
"${ZRUN}" ':: benchmark / execute / server' \
noenvironment \
./.bin/nginx \
"${_arguments[@]}" \
"${@}" \
#
!!
:: benchmark / dummy / fasthttp / 1x1 :: exec -- "${ZRUN}" ':: benchmark / dummy / fasthttp' 1 1 "${@}"
:: benchmark / dummy / fasthttp / 1x2 :: exec -- "${ZRUN}" ':: benchmark / dummy / fasthttp' 1 2 "${@}"
:: benchmark / dummy / fasthttp / 2x1 :: exec -- "${ZRUN}" ':: benchmark / dummy / fasthttp' 2 1 "${@}"
:: benchmark / dummy / fasthttp / 2x2 :: exec -- "${ZRUN}" ':: benchmark / dummy / fasthttp' 2 2 "${@}"
--<< benchmark / dummy / fasthttp
"${ZRUN}" ':: go / build / kawipiko-server-dummy / release / native'
test "${#}" -ge 2
_count="${1}"
_threads="${2}"
shift -- 2
exec -- \
"${ZRUN}" ':: benchmark / execute / multiple' "${_count}" \
"${ZRUN}" ':: benchmark / execute / server' \
noenvironment \
./.outputs/binaries/kawipiko-server-dummy--release--native \
"127.9.185.194:8080" \
"${_threads}" \
"${@}" \
#
!!
<< benchmark / dummy / haproxy / 1x2
exec -- \
"${ZRUN}" ':: benchmark / execute / server' \
noenvironment \
./.bin/haproxy \
-db \
-f ./examples/dummy/haproxy-dummy.conf \
"${@}" \
#
!!
:: benchmark / dummy / nginx / 1x1 :: exec -- "${ZRUN}" ':: benchmark / dummy / nginx' 1 "${@}"
:: benchmark / dummy / nginx / 2x1 :: exec -- "${ZRUN}" ':: benchmark / dummy / nginx' 2 "${@}"
--<< benchmark / dummy / nginx
test "${#}" -ge 1
_count="${1}"
shift -- 1
exec -- \
"${ZRUN}" ':: benchmark / execute / multiple' "${_count}" \
"${ZRUN}" ':: benchmark / execute / server' \
noenvironment \
./.bin/nginx \
-c ./examples/dummy/nginx-dummy.conf \
-e /dev/stderr \
-p . \
"${@}" \
#
!!
:: benchmark / dummy / nodejs / 1x1 :: exec -- "${ZRUN}" ':: benchmark / dummy / nodejs' 1 "${@}"
--<< benchmark / dummy / nodejs
test "${#}" -ge 1
_count="${1}"
shift -- 1
exec -- \
"${ZRUN}" ':: benchmark / execute / multiple' "${_count}" \
"${ZRUN}" ':: benchmark / execute / server' \
noenvironment \
./.bin/node16 \
-- \
./examples/dummy/nodejs-dummy.js \
127.9.185.194 8080 \
"${@}" \
#
!!
:: benchmark / dummy / httpterm / 1x1 :: exec -- "${ZRUN}" ':: benchmark / dummy / httpterm' 1 "${@}"
:: benchmark / dummy / httpterm / 2x1 :: exec -- "${ZRUN}" ':: benchmark / dummy / httpterm' 2 "${@}"
--<< benchmark / dummy / httpterm
test "${#}" -ge 1
_count="${1}"
shift -- 1
exec -- \
"${ZRUN}" ':: benchmark / execute / multiple' "${_count}" \
"${ZRUN}" ':: benchmark / execute / server' \
noenvironment \
./.bin/httpterm \
-db \
-L 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 -- \
"${ZRUN}" ':: benchmark / execute / client' \
"${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 -- \
"${ZRUN}" ':: benchmark / execute / client' \
"${ZRUN}" ':: tools / wrk' \
"${@}" \
--script ../kawipiko-examples/sources/wrk-paths-from-file.lua \
-- \
"${_url_base}" \
"${_paths}" \
#
!!
<< benchmark / h1load / http
exec -- "${ZRUN}" ':: benchmark / h1load' http 127.9.185.194:8080 "${@}"
!!
<< benchmark / h1load / https
exec -- "${ZRUN}" ':: benchmark / h1load' https 127.9.185.194:8443 "${@}"
!!
--<< benchmark / h1load
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}" ':: benchmark / execute / client' \
"${ZRUN}" ':: tools / h1load' \
"${@}" \
"${_url_base}/${_path}" \
#
!!
<< benchmark / h2load / https
exec -- "${ZRUN}" ':: benchmark / h2load' https 127.9.185.194:8443 "${@}" --npn-list=http/1.1
!!
<< benchmark / h2load / http2
exec -- "${ZRUN}" ':: benchmark / h2load' https 127.9.185.194:8444 "${@}" --npn-list=h2
!!
<< benchmark / h2load / http3
exec -- "${ZRUN}" ':: benchmark / h2load' https 127.9.185.194:8445 "${@}" --npn-list=h3
!!
--<< 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 -- \
"${ZRUN}" ':: benchmark / execute / client' \
"${ZRUN}" ':: tools / h2load' \
"${@}" \
-- \
"${_url_base}/${_path}" \
#
!!
<< benchmark / hey / http
exec -- "${ZRUN}" ':: benchmark / hey' http 127.9.185.194:8080 "${@}"
!!
<< benchmark / hey / https
exec -- "${ZRUN}" ':: benchmark / hey' https 127.9.185.194:8443 "${@}"
!!
--<< benchmark / hey
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}" ':: benchmark / execute / client' \
"${ZRUN}" ':: tools / hey' \
"${@}" \
-- \
"${_url_base}/${_path}" \
#
!!
--<< benchmark / execute / server
test "${#}" -ge 1
_nodaemon="$( exec -- readlink -e -- "$( type -P -- nodaemon )" )"
if test ! "/proc/${PPID}/exe" -ef "${_nodaemon}" ; then
exec -- nodaemon "${ZRUN}" ':: benchmark / execute / server' "${@}"
fi
_wrapper=()
if test "${1}" == noenvironment ; then
_wrapper+=( env -i -- )
shift -- 1
test "${#}" -ge 1
fi
if test "${1}" == "${ZRUN_EXECUTABLE}" ; then
test "${#}" -ge 1
_command=( "${@:2}" )
else
_command=( "${@}" )
fi
printf -- '\n[xx] >> %s\n\n' "${_command[*]@Q}" >&2
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 -- \
"${_wrapper[@]}" \
"${@}" \
#
!!
--<< benchmark / execute / client
test "${#}" -ge 1
_nodaemon="$( exec -- readlink -e -- "$( type -P -- nodaemon )" )"
if test ! "/proc/${PPID}/exe" -ef "${_nodaemon}" ; then
exec -- nodaemon "${ZRUN}" ':: benchmark / execute / client' "${@}"
fi
_wrapper=()
if test "${1}" == noenvironment ; then
_wrapper+=( env -i -- )
shift -- 1
test "${#}" -ge 1
fi
if test "${1}" == "${ZRUN_EXECUTABLE}" ; then
test "${#}" -ge 1
_command=( "${@:2}" )
else
_command=( "${@}" )
fi
printf -- '\n[xx] >> %s\n\n' "${_command[*]@Q}" >&2
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 -- \
"${_wrapper[@]}" \
"${@}" \
#
!!
--<< benchmark / execute / multiple
test "${#}" -ge 2
_nodaemon="$( exec -- readlink -e -- "$( type -P -- nodaemon )" )"
if test ! "/proc/${PPID}/exe" -ef "${_nodaemon}" ; then
exec -- nodaemon "${ZRUN}" ':: benchmark / execute / multiple' "${@}"
fi
_count="$( printf -- '%d' "${1}" )"
shift -- 1
if test "${_count}" -le 1 ; then
exec -- "${@}"
fi
_pids=()
for (( _index = 1 ; _index <= _count ; _index += 1 )) ; do
( sleep -- "$(( _index - 1 ))s" || true ; exec -- "${@}" ) &
_pids+=( "${!}" )
done
(
trap 'kill -- "${_pids[@]}" 2> /dev/null || true' SIGINT SIGTERM SIGQUIT
if ! sleep -- "$(( _count ))s" ; then
kill -- "${_pids[@]}" 2> /dev/null || true
exit -- 0
fi
printf -- '\n[--]\n\n' >&2
while true ; do
if ! kill -s 0 -- "${_pids[@]}" 2> /dev/null ; then
break
fi
if ! sleep -- 6s ; then
break
fi
done
kill -- "${_pids[@]}" 2> /dev/null || true
) &
exit -- 0
!!