mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
Enable mini-benchmark to run with perf
The mini-benchmark.sh script failed to run in the latest Fedora distributions in GitLab CI. Executing the benchmark inside a Docker container had failed because the check for `perf` was done in a way that caused the benchmark to exit because of the `set -e` option. Test and skip `perf` to allowing the remaining benchmark activities to proceed. This check was added inacb6684
but inadvertantly reverted in42a1f94
. Logic was corrected to only run perf when the flag is enabled, and to prevent perf stat and perf record from being simultaneously enabled. Set -ex is also added to enable easier identification of mini-benchmark issues in the future. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc.
This commit is contained in:
parent
0c6cac0a6f
commit
6efa75a8cb
2 changed files with 17 additions and 13 deletions
|
@ -510,9 +510,9 @@ mini-benchmark:
|
|||
- |
|
||||
mariadb --skip-column-names -e "SELECT @@version, @@version_comment" | tee /tmp/version
|
||||
grep $MARIADB_MAJOR_VERSION /tmp/version || echo "MariaDB didn't install properly"
|
||||
- yum install -y sysbench procps-ng perf util-linux || yum install -y https://kojipkgs.fedoraproject.org//packages/luajit/2.0.4/3.el7/x86_64/luajit-2.0.4-3.el7.x86_64.rpm https://kojipkgs.fedoraproject.org//packages/sysbench/1.0.17/2.el7/x86_64/sysbench-1.0.17-2.el7.x86_64.rpm https://kojipkgs.fedoraproject.org//packages/ck/0.5.2/2.el7/x86_64/ck-0.5.2-2.el7.x86_64.rpm
|
||||
- yum install -y sysbench procps-ng perf flamegraph flamegraph-stackcollapse-perf util-linux dnf-utils
|
||||
- /usr/share/mysql/mini-benchmark
|
||||
- cp -av */sysbench-run-*.log */metrics.txt .. # Move files one level down so they can be saved as artifacts
|
||||
- cp -av */sysbench-run-*.log */metrics.txt . # Move files one level down so they can be saved as artifacts
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
# Abort on errors
|
||||
set -e
|
||||
set -ex
|
||||
|
||||
display_help() {
|
||||
echo "Usage: $(basename "$0") [-h] [--perf] [--perf-flamegraph]"
|
||||
|
@ -121,6 +121,12 @@ then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$PERF" == true ] && [ "$PERF_RECORD" == true ]
|
||||
then
|
||||
echo "ERROR: Cannot select both --perf and --perf-flamegraph options simultaneously. Please choose one or the other."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$PERF" == true ] || [ "$PERF_RECORD" == true ]
|
||||
then
|
||||
if [ ! -e /usr/bin/perf ]
|
||||
|
@ -158,28 +164,26 @@ then
|
|||
# shellcheck disable=SC2046
|
||||
debuginfo-install -y mariadb-server $(cat mariadbd-dependencies.txt)
|
||||
|
||||
perf record echo "testing perf" > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
if ! (perf record echo "testing perf") > /dev/null 2>&1
|
||||
then
|
||||
echo "perf does not have permission to run on this system. Skipping."
|
||||
PERF=""
|
||||
PERF_COMMAND=""
|
||||
else
|
||||
echo "Using 'perf' to record performance counters in perf.data files"
|
||||
PERF="perf record -g --freq=99 --output=perf.data --timestamp-filename --pid=$MARIADB_SERVER_PID --"
|
||||
PERF_COMMAND="perf record -g --freq=99 --output=perf.data --timestamp-filename --pid=$MARIADB_SERVER_PID --"
|
||||
fi
|
||||
|
||||
elif [ -e /usr/bin/perf ]
|
||||
elif [ "$PERF" == true ]
|
||||
then
|
||||
# If flamegraphs were not requested, log normal perf counters if possible
|
||||
|
||||
perf stat echo "testing perf" > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
if ! (perf stat echo "testing perf") > /dev/null 2>&1
|
||||
then
|
||||
echo "perf does not have permission to run on this system. Skipping."
|
||||
PERF=""
|
||||
PERF_COMMAND=""
|
||||
else
|
||||
echo "Using 'perf' to log basic performance counters for benchmark"
|
||||
PERF="perf stat -p $MARIADB_SERVER_PID --"
|
||||
PERF_COMMAND="perf stat -p $MARIADB_SERVER_PID --"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -222,7 +226,7 @@ do
|
|||
# Prepend command with perf if defined
|
||||
# Output stderr to stdout as perf outputs everything in stderr
|
||||
# shellcheck disable=SC2086
|
||||
$PERF $TASKSET_SYSBENCH sysbench "$WORKLOAD" run --threads=$t --time=$DURATION --report-interval=10 2>&1 | tee sysbench-run-$t.log
|
||||
$PERF_COMMAND $TASKSET_SYSBENCH sysbench "$WORKLOAD" run --threads=$t --time=$DURATION --report-interval=10 2>&1 | tee sysbench-run-$t.log
|
||||
done
|
||||
|
||||
sysbench "$WORKLOAD" cleanup --tables=20 | tee sysbench-cleanup.log
|
||||
|
|
Loading…
Reference in a new issue