-
Notifications
You must be signed in to change notification settings - Fork 149
Expand file tree
/
Copy pathrun_clickbench_rss.sh
More file actions
executable file
·57 lines (45 loc) · 1.83 KB
/
run_clickbench_rss.sh
File metadata and controls
executable file
·57 lines (45 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT_DIR"
if ! command -v gtime >/dev/null 2>&1; then
echo "error: gtime not found in PATH" >&2
exit 1
fi
BINARY="${BINARY:-$ROOT_DIR/target/release/datafusion-bench}"
FORMAT="${FORMAT:-vortex}"
START_QUERY="${START_QUERY:-0}"
END_QUERY="${END_QUERY:-42}"
OUTPUT_DIR="${OUTPUT_DIR:-$ROOT_DIR/data/clickbench-rss}"
mkdir -p "$OUTPUT_DIR"
echo "building release benchmark binary..."
cargo build -p datafusion-bench --release
timestamp="$(date +%Y%m%d-%H%M%S)"
csv_path="$OUTPUT_DIR/clickbench-rss-$timestamp.csv"
cat >"$csv_path" <<'EOF'
query,max_rss_kb,elapsed,user_seconds,system_seconds,cpu_percent,exit_status
EOF
for ((q = START_QUERY; q <= END_QUERY; q++)); do
log_path="$OUTPUT_DIR/q${q}.gtime.$timestamp.log"
echo "running clickbench query $q ..."
gtime --verbose \
"$BINARY" clickbench --formats "$FORMAT" --queries "$q" \
>"$OUTPUT_DIR/q${q}.stdout.$timestamp.log" \
2>"$log_path"
max_rss_kb="$(awk -F': ' '/Maximum resident set size/ {print $2}' "$log_path" | tr -d '[:space:]')"
elapsed="$(awk -F': ' '/Elapsed \(wall clock\) time/ {print $2}' "$log_path" | sed 's/^ *//')"
user_seconds="$(awk -F': ' '/User time \(seconds\)/ {print $2}' "$log_path" | tr -d '[:space:]')"
system_seconds="$(awk -F': ' '/System time \(seconds\)/ {print $2}' "$log_path" | tr -d '[:space:]')"
cpu_percent="$(awk -F': ' '/Percent of CPU this job got/ {print $2}' "$log_path" | tr -d '[:space:]')"
exit_status="$(awk -F': ' '/Exit status/ {print $2}' "$log_path" | tr -d '[:space:]')"
printf '%s,%s,%s,%s,%s,%s,%s\n' \
"$q" \
"${max_rss_kb:-}" \
"${elapsed:-}" \
"${user_seconds:-}" \
"${system_seconds:-}" \
"${cpu_percent:-}" \
"${exit_status:-}" \
>>"$csv_path"
done
echo "wrote summary to $csv_path"