123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #!/bin/bash
- set -e
- H2O_APP_PROFILE_PORT=54321
- H2O_APP_PROFILE_URL="http://127.0.0.1:$H2O_APP_PROFILE_PORT"
- SCRIPT_PATH=$(realpath "$0")
- H2O_APP_SRC_ROOT=$(dirname "$SCRIPT_PATH")
- H2O_APP_BUILD_DIR="${H2O_APP_SRC_ROOT}/build"
- if [[ -z "$DBHOST" ]]; then
- DBHOST=tfb-database
- fi
- if [[ -z "$H2O_APP_PREFIX" ]]; then
- H2O_APP_PREFIX=/opt/h2o_app
- fi
- if [[ -z "$H2O_PREFIX" ]]; then
- H2O_PREFIX=/usr
- fi
- if [[ -z "$MUSTACHE_C_PREFIX" ]]; then
- MUSTACHE_C_PREFIX=/opt/mustache-c
- fi
- if [[ "$BENCHMARK_ENV" = "Azure" ]]; then
- DB_CONN=5
- else
- DB_CONN=5
- fi
- build_h2o_app()
- {
- cmake -DCMAKE_INSTALL_PREFIX="$H2O_APP_PREFIX" -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_PREFIX_PATH="${H2O_PREFIX};${MUSTACHE_C_PREFIX}" \
- -DCMAKE_C_FLAGS="-march=native $1" -G Ninja "$H2O_APP_SRC_ROOT"
- cmake --build . --clean-first -j
- }
- run_curl()
- {
- for ((i = 0; i < 10; i++)); do
- curl "${H2O_APP_PROFILE_URL}/$1" > /dev/null 2>&1
- done
- }
- run_h2o_app()
- {
- LD_LIBRARY_PATH="${MUSTACHE_C_PREFIX}/lib:$LD_LIBRARY_PATH" \
- taskset -c "$1" "$2/h2o_app" -a20 -f "$3/template" -m "$DB_CONN" "$4" "$5" \
- -d "host=$DBHOST dbname=hello_world user=benchmarkdbuser sslmode=disable \
- password=benchmarkdbpass" &
- }
- generate_profile_data()
- {
- run_h2o_app 0 . "$H2O_APP_SRC_ROOT" "-p$H2O_APP_PROFILE_PORT" -t1
- local -r H2O_APP_PROFILE_PID=$!
- while ! curl "$H2O_APP_PROFILE_URL" > /dev/null 2>&1; do sleep 1; done
- run_curl json
- run_curl db
- run_curl queries?queries=20
- run_curl fortunes
- run_curl updates?queries=20
- run_curl plaintext
- run_curl cached-worlds?queries=20
- kill -s SIGTERM "$H2O_APP_PROFILE_PID"
- wait "$H2O_APP_PROFILE_PID"
- }
- install -d "$H2O_APP_BUILD_DIR"
- pushd "$H2O_APP_BUILD_DIR"
- build_h2o_app "-fprofile-generate"
- generate_profile_data
- rm -f CMakeCache.txt
- build_h2o_app "-fprofile-use"
- cmake --install .
- popd
- rm -rf "$H2O_APP_BUILD_DIR"
- echo "Running h2o_app in the $BENCHMARK_ENV environment."
- echo "Maximum database connections per thread: $DB_CONN"
- run_h2o_app 0 "${H2O_APP_PREFIX}/bin" "${H2O_APP_PREFIX}/share/h2o_app"
- wait
|