add all benchmarks, add perf scripts, remove debug logs#2757
Conversation
|
Footnotes
|
Ito Test Report ❌13 test cases ran. 1 failed, 5 additional findings, 7 passed. Across 13 test cases, 7 passed and 6 failed, indicating partial stability but significant reliability gaps centered on profiling argument handling and benchmark automation. The most important defects are a real CLI panic on malformed --prof input, four high-impact benchmark workflow issues (write-heavy workloads failing due to missing DB provisioning, fatal sysbench failures being masked, partial artifacts passing comparison, and unpinned external scripts causing drift), and a PR-introduced local_sysbench path-resolution bug from repo-root invocation, while core lifecycle checks like profiling output generation, interrupt cleanup/rerun behavior, parser-order contract enforcement, and artifact ignore behavior worked as expected. ❌ Failed (1)
🟠 Local sysbench root invocation path bug
Relevant code:
mkdir -p sbtest
cd sbtest
if [ ! -d "./sysbench-lua-scripts" ]; then
git clone https://github.com/dolthub/sysbench-lua-scripts.git
fi
cp ./sysbench-lua-scripts/*.lua ./
go build -o doltgres.exe ../../../cmd/doltgres/✅ Passed (7)ℹ️ Additional Findings (5)
|
Ito Test Report ❌
8 test cases ran. 1 failed, 7 passed. Across 8 executed tests, 7 passed and 1 failed: profiling-argument regressions, quick_sysbench workload execution with DNF signaling, and local_sysbench profiling plus unauthorized peer-access blocking all behaved as expected. ❌ Failed (1)
🟠 Duplicate benchmark sections overwrite silently
Relevant code:
"oltp_insert"
"oltp_read_write"
"oltp_update_index"
"oltp_update_non_index"
"oltp_update_non_index"
"oltp_write_only"
"types_delete_insert_postgres"
func SectionResults(fileData string) map[string]Section {
sections := make(map[string]Section)
if section.Time == -1 {
continue
}
sections[section.Test] = section
}✅ Passed (7)Commit: Tell us how we did: Give Ito Feedback |
Ito Test Report ✅
12 test cases ran. 1 additional finding, 11 passed. Overall, the unified run passed 11 of 12 test cases, confirming stable behavior for profiling flag handling, local sysbench execution (including --pprof CPU profile generation), back-to-back run isolation, workspace-scoped cleanup, and keeping sbtest artifacts out of git status. The key remaining issue is a medium-severity benchmark validation defect where prepare/run failures can be silently treated as consumable comparison input (e.g., downgraded to DNF/partial rows) instead of invalidating the run, due to non-fail-fast quick_sysbench flow and parser logic that skips unparsed-throughput sections. ✅ Passed (11)ℹ️ Additional Findings (1)
🟠 Prepare failures are silently accepted as valid benchmark input
Relevant code:
#!/bin/bash
#set -e
#set -o pipefail
sysbench \
+ --db-driver="pgsql" \
+ --pgsql-host="0.0.0.0" \
+ --pgsql-port="$PORT" \
+ --pgsql-user="postgres" \
+ --pgsql-password="password" \
+ --pgsql-db="postgres" \
+ "$SYSBENCH_TEST" prepare
kill -15 "$SERVER_PID"
if section.Time == -1 {
continue
}Commit: Tell us how we did: Give Ito Feedback |































This PR changes the
quick-sysbench.shconfig to using logging modeinfo.Debug logs can slow down benchmarks with all that additional IO, so they should be disabled while benchmarking.
The list of quick benchmarks has also been updated to include every read and write benchmark; it should take around 15 minutes to complete now.
Additionally, this PR adds some utility scripts to make it easier to profile and benchmark a single test.