[scripts] Update Go build scriptlets, benchmarking, add support for profiling
This commit is contained in:
parent
eafe406c1e
commit
13b49136b4
1 changed files with 94 additions and 47 deletions
141
.x-run
141
.x-run
|
@ -29,19 +29,6 @@
|
||||||
exit -- 1
|
exit -- 1
|
||||||
!!
|
!!
|
||||||
|
|
||||||
<< go / build / server / debug / analyze
|
|
||||||
test "${#}" -eq 0
|
|
||||||
mkdir -p -- ./.outputs/binaries/debug
|
|
||||||
rm -f -- ./.outputs/binaries/debug/cdb-http-server
|
|
||||||
exec -- "${X_RUN[@]}" ':: go / tool' build \
|
|
||||||
-v \
|
|
||||||
-gcflags '-m' \
|
|
||||||
-o ./.outputs/binaries/debug/cdb-http-server \
|
|
||||||
-- ./sources/cmd/server.go \
|
|
||||||
#
|
|
||||||
exit -- 1
|
|
||||||
!!
|
|
||||||
|
|
||||||
<< go / build / server / release
|
<< go / build / server / release
|
||||||
test "${#}" -eq 0
|
test "${#}" -eq 0
|
||||||
mkdir -p -- ./.outputs/binaries/release
|
mkdir -p -- ./.outputs/binaries/release
|
||||||
|
@ -54,6 +41,20 @@
|
||||||
exit -- 1
|
exit -- 1
|
||||||
!!
|
!!
|
||||||
|
|
||||||
|
<< go / build / server / release / analyze
|
||||||
|
test "${#}" -eq 0
|
||||||
|
mkdir -p -- ./.outputs/binaries/debug
|
||||||
|
rm -f -- ./.outputs/binaries/debug/cdb-http-server
|
||||||
|
exec -- "${X_RUN[@]}" ':: go / tool' build \
|
||||||
|
-v \
|
||||||
|
-ldflags '-s' \
|
||||||
|
-gcflags '-m' \
|
||||||
|
-o ./.outputs/binaries/debug/cdb-http-server \
|
||||||
|
-- ./sources/cmd/server.go \
|
||||||
|
#
|
||||||
|
exit -- 1
|
||||||
|
!!
|
||||||
|
|
||||||
|
|
||||||
<< go / build / server / release / publish
|
<< go / build / server / release / publish
|
||||||
test "${#}" -eq 0
|
test "${#}" -eq 0
|
||||||
|
@ -159,8 +160,26 @@
|
||||||
|
|
||||||
<< go / dependencies / update
|
<< go / dependencies / update
|
||||||
test "${#}" -eq 0
|
test "${#}" -eq 0
|
||||||
exec -- "${X_RUN[@]}" ':: go / tool' get -v -d -- ./sources/...
|
_packages=(
|
||||||
exit -- 1
|
github.com/valyala/fasthttp
|
||||||
|
github.com/google/brotli/go/cbrotli
|
||||||
|
)
|
||||||
|
for _package in "${_packages[@]}" ; do
|
||||||
|
"${X_RUN[@]}" ':: go / tool' get -v -p 1 -d -- "${_package}"
|
||||||
|
done
|
||||||
|
exit -- 0
|
||||||
|
!!
|
||||||
|
|
||||||
|
<< go / dependencies / clean
|
||||||
|
test "${#}" -eq 0
|
||||||
|
if test -e ./.outputs/go ; then
|
||||||
|
exec -- rm -R -f -- \
|
||||||
|
./.outputs/go \
|
||||||
|
#
|
||||||
|
exit -- 1
|
||||||
|
else
|
||||||
|
exit -- 0
|
||||||
|
fi
|
||||||
!!
|
!!
|
||||||
|
|
||||||
|
|
||||||
|
@ -169,9 +188,25 @@
|
||||||
test "${#}" -ge 1
|
test "${#}" -ge 1
|
||||||
|
|
||||||
test -d ./.outputs
|
test -d ./.outputs
|
||||||
|
_sources="$( exec -- readlink -e -- ./sources )"
|
||||||
|
_vendor="$( exec -- readlink -e -- ./vendor )"
|
||||||
_outputs="$( exec -- readlink -e -- ./.outputs )"
|
_outputs="$( exec -- readlink -e -- ./.outputs )"
|
||||||
|
|
||||||
export -- GOPATH="${_outputs}/go"
|
export -- GOPATH="${_outputs}/go"
|
||||||
|
export -- GOBIN="${_outputs}/go/bin"
|
||||||
|
export -- GOTMPDIR="${_outputs}/go/tmp"
|
||||||
|
export -- GOCACHE="${_outputs}/go/cache"
|
||||||
|
|
||||||
|
for _folder in "${GOPATH}" "${GOBIN}" "${GOTMPDIR}" "${GOTMPDIR}" "${GOCACHE}" ; do
|
||||||
|
if test ! -e "${_folder}" ; then
|
||||||
|
mkdir -- "${_folder}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if test ! -e "${GOPATH}/src" ; then
|
||||||
|
ln -s -T -- "${_vendor}" "${GOPATH}/src"
|
||||||
|
fi
|
||||||
|
|
||||||
exec -- go "${@}"
|
exec -- go "${@}"
|
||||||
|
|
||||||
exit -- 1
|
exit -- 1
|
||||||
|
@ -430,6 +465,7 @@
|
||||||
ionice -c 2 -n 0 -- \
|
ionice -c 2 -n 0 -- \
|
||||||
chrt -r 10 \
|
chrt -r 10 \
|
||||||
softlimit -o 16384 \
|
softlimit -o 16384 \
|
||||||
|
sudo -u "${USER}" -n -E -P -- \
|
||||||
env -i \
|
env -i \
|
||||||
GOMAXPROCS=4 \
|
GOMAXPROCS=4 \
|
||||||
./.outputs/binaries/release/cdb-http-server \
|
./.outputs/binaries/release/cdb-http-server \
|
||||||
|
@ -441,7 +477,34 @@
|
||||||
exit -- 1
|
exit -- 1
|
||||||
!!
|
!!
|
||||||
|
|
||||||
<< benchmark / client / 2048
|
<< benchmark / server / profile / cpu
|
||||||
|
exec -- "${X_RUN[@]}" ':: benchmark / server' \
|
||||||
|
--profile-cpu ./.outputs/server-cpu.txt \
|
||||||
|
"${@}" \
|
||||||
|
#
|
||||||
|
exit -- 1
|
||||||
|
!!
|
||||||
|
|
||||||
|
<< benchmark / server / profile / mem
|
||||||
|
exec -- "${X_RUN[@]}" ':: benchmark / server' \
|
||||||
|
--profile-mem ./.outputs/server-mem.txt \
|
||||||
|
"${@}" \
|
||||||
|
#
|
||||||
|
exit -- 1
|
||||||
|
!!
|
||||||
|
|
||||||
|
<< benchmark / server / profile / cpu / analyze
|
||||||
|
exec -- go tool pprof "${@}" -- ./.outputs/server-cpu.txt
|
||||||
|
exit -- 1
|
||||||
|
!!
|
||||||
|
|
||||||
|
<< benchmark / server / profile / mem / analyze
|
||||||
|
exec -- go tool pprof "${@}" ./.outputs/server-mem.txt
|
||||||
|
exit -- 1
|
||||||
|
!!
|
||||||
|
|
||||||
|
|
||||||
|
<< benchmark / client
|
||||||
exec -- \
|
exec -- \
|
||||||
sudo -u root -n -E -P -- \
|
sudo -u root -n -E -P -- \
|
||||||
taskset -c 1,2,3 \
|
taskset -c 1,2,3 \
|
||||||
|
@ -449,58 +512,42 @@
|
||||||
ionice -c 2 -n 0 -- \
|
ionice -c 2 -n 0 -- \
|
||||||
chrt -r 10 \
|
chrt -r 10 \
|
||||||
softlimit -o 16384 \
|
softlimit -o 16384 \
|
||||||
|
sudo -u "${USER}" -n -E -P -- \
|
||||||
env -i \
|
env -i \
|
||||||
"$( type -P -- wrk )" \
|
"$( type -P -- wrk )" \
|
||||||
--threads 4 \
|
|
||||||
--connections 2048 \
|
|
||||||
--timeout 1s \
|
--timeout 1s \
|
||||||
--duration 6s \
|
--duration 6s \
|
||||||
--latency \
|
--latency \
|
||||||
"${@}" \
|
"${@}" \
|
||||||
-- http://127.9.185.194:8080/ \
|
-- http://127.9.185.194:8080/ \
|
||||||
#
|
#
|
||||||
|
exit -- 1
|
||||||
|
!!
|
||||||
|
|
||||||
|
<< benchmark / client / 2048
|
||||||
|
exec -- "${X_RUN[@]}" ':: benchmark / client' \
|
||||||
|
--threads 4 \
|
||||||
|
--connections 2048 \
|
||||||
|
"${@}" \
|
||||||
|
#
|
||||||
exit -- 1
|
exit -- 1
|
||||||
!!
|
!!
|
||||||
|
|
||||||
<< benchmark / client / 512
|
<< benchmark / client / 512
|
||||||
exec -- \
|
exec -- "${X_RUN[@]}" ':: benchmark / client' \
|
||||||
sudo -u root -n -E -P -- \
|
|
||||||
taskset -c 1,2,3 \
|
|
||||||
nice -n -19 -- \
|
|
||||||
ionice -c 2 -n 0 -- \
|
|
||||||
chrt -r 10 \
|
|
||||||
softlimit -o 16384 \
|
|
||||||
env -i \
|
|
||||||
"$( type -P -- wrk )" \
|
|
||||||
--threads 4 \
|
--threads 4 \
|
||||||
--connections 512 \
|
--connections 512 \
|
||||||
--timeout 1s \
|
|
||||||
--duration 6s \
|
|
||||||
--latency \
|
|
||||||
"${@}" \
|
"${@}" \
|
||||||
-- http://127.9.185.194:8080/ \
|
#
|
||||||
#
|
|
||||||
exit -- 1
|
exit -- 1
|
||||||
!!
|
!!
|
||||||
|
|
||||||
<< benchmark / client / 16
|
<< benchmark / client / 16
|
||||||
exec -- \
|
exec -- "${X_RUN[@]}" ':: benchmark / client' \
|
||||||
sudo -u root -n -E -P -- \
|
|
||||||
taskset -c 1,2,3 \
|
|
||||||
nice -n -19 -- \
|
|
||||||
ionice -c 2 -n 0 -- \
|
|
||||||
chrt -r 10 \
|
|
||||||
softlimit -o 16384 \
|
|
||||||
env -i \
|
|
||||||
"$( type -P -- wrk )" \
|
|
||||||
--threads 4 \
|
--threads 4 \
|
||||||
--connections 16 \
|
--connections 16 \
|
||||||
--timeout 1s \
|
|
||||||
--duration 6s \
|
|
||||||
--latency \
|
|
||||||
"${@}" \
|
"${@}" \
|
||||||
-- http://127.9.185.194:8080/ \
|
#
|
||||||
#
|
|
||||||
exit -- 1
|
exit -- 1
|
||||||
!!
|
!!
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue