Add misc scripts to repoitory
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
# pgbench benchmark quickstart
|
||||
|
||||
This workspace now includes repeatable benchmark harnesses:
|
||||
|
||||
- `pgbench_benchmark.ps1` (Windows PowerShell)
|
||||
- `pgbench_benchmark.sh` (Bash)
|
||||
- `pgbench_custom_workload.sql` (sample custom SQL transaction mix)
|
||||
- `pgbench_export_report.py` (exports TPS/latency chart report from `summary.csv`)
|
||||
|
||||
## 1) Prerequisites
|
||||
|
||||
- PostgreSQL client tools installed (`psql`, `pgbench`)
|
||||
- Network access to your PostgreSQL server
|
||||
- Credentials available via environment variables (`PGHOST`, `PGPORT`, `PGUSER`, `PGPASSWORD`)
|
||||
|
||||
## 2) Run the benchmark (Windows PowerShell)
|
||||
|
||||
From this folder:
|
||||
|
||||
```powershell
|
||||
$env:PGPASSWORD = "your_password"
|
||||
.\pgbench_benchmark.ps1 -PgHost localhost -PgPort 5432 -PgUser postgres
|
||||
```
|
||||
|
||||
You can override defaults:
|
||||
|
||||
```powershell
|
||||
$env:PGPASSWORD = "your_password"
|
||||
.\pgbench_benchmark.ps1 -BenchDb pgbench -Scale 100 -Duration 120 -Clients "1 8 16 32 64" -Jobs 8 -Reinit $true
|
||||
```
|
||||
|
||||
Run with custom SQL workload mode enabled:
|
||||
|
||||
```powershell
|
||||
$env:PGPASSWORD = "your_password"
|
||||
.\pgbench_benchmark.ps1 -RunCustom $true -CustomSqlFile .\pgbench_custom_workload.sql -CustomModeName app_like -CustomReadPct 85 -CustomHotPct 92 -CustomTxnSize 3 -CustomHotAccounts 12000
|
||||
```
|
||||
|
||||
## 3) Optional Bash usage (WSL/Git Bash)
|
||||
|
||||
```bash
|
||||
chmod +x pgbench_benchmark.sh
|
||||
PGHOST=localhost PGPORT=5432 PGUSER=postgres PGPASSWORD=your_password ./pgbench_benchmark.sh
|
||||
```
|
||||
|
||||
Run with custom SQL workload mode enabled:
|
||||
|
||||
```bash
|
||||
PGHOST=localhost PGPORT=5432 PGUSER=postgres PGPASSWORD=your_password RUN_CUSTOM=1 CUSTOM_SQL_FILE=./pgbench_custom_workload.sql CUSTOM_MODE_NAME=app_like CUSTOM_READ_PCT=85 CUSTOM_HOT_PCT=92 CUSTOM_TXN_SIZE=3 CUSTOM_HOT_ACCOUNTS=12000 ./pgbench_benchmark.sh
|
||||
```
|
||||
|
||||
## 4) Optional tuning inputs (Bash script)
|
||||
|
||||
```bash
|
||||
BENCH_DB=pgbench SCALE=100 DURATION=120 CLIENTS="1 8 16 32 64" JOBS=8 REINIT=1 ./pgbench_benchmark.sh
|
||||
```
|
||||
|
||||
Environment variables:
|
||||
|
||||
- `BENCH_DB`: database name for benchmark data (default: `pgbench`)
|
||||
- `SCALE`: data size scale factor (default: `50`)
|
||||
- `DURATION`: measured run time per test case in seconds (default: `60`)
|
||||
- `CLIENTS`: space-separated client counts (default: `"1 4 8 16 32"`)
|
||||
- `JOBS`: worker threads for pgbench (default: `4`)
|
||||
- `WARMUP_SECONDS`: unmeasured warm-up before each test (default: `15`)
|
||||
- `RUN_READ_ONLY`: set to `0` to skip `-S` read-only tests (default: `1`)
|
||||
- `REINIT`: set to `1` to reinitialize data each run (default: `0`)
|
||||
- `RUN_CUSTOM`: set to `1` to run custom SQL workload mode (default: `0`)
|
||||
- `CUSTOM_SQL_FILE`: path to custom SQL file for `pgbench -f` (default: `pgbench_custom_workload.sql`)
|
||||
- `CUSTOM_MODE_NAME`: mode label written to `summary.csv` for custom runs (default: `custom_sql`)
|
||||
- `CUSTOM_READ_PCT` / `-CustomReadPct`: read share percentage for custom mode; writes happen in `100-read_pct` (default: `80`)
|
||||
- `CUSTOM_HOT_PCT` / `-CustomHotPct`: chance to pick from hot account set in custom mode (default: `90`)
|
||||
- `CUSTOM_TXN_SIZE` / `-CustomTxnSize`: custom transaction size tier from `1` to `4` (default: `2`)
|
||||
- `CUSTOM_HOT_ACCOUNTS` / `-CustomHotAccounts`: number of hot accounts near start of keyspace (default: `10000`)
|
||||
|
||||
## 5) Output
|
||||
|
||||
Each run creates:
|
||||
|
||||
- `pgbench_results_YYYYMMDD_HHMMSS/summary.csv`
|
||||
- Per-test raw output files in the same results directory
|
||||
|
||||
Use `summary.csv` to compare TPS and latency across runs.
|
||||
|
||||
`summary.csv` now includes percentile latency columns:
|
||||
|
||||
- `p95_ms`
|
||||
- `p99_ms`
|
||||
|
||||
## 6) Export chart report from summary.csv
|
||||
|
||||
Generate an HTML report with TPS and latency charts:
|
||||
|
||||
```powershell
|
||||
python .\pgbench_export_report.py .\pgbench_results_YYYYMMDD_HHMMSS\summary.csv
|
||||
```
|
||||
|
||||
Optional output path:
|
||||
|
||||
```powershell
|
||||
python .\pgbench_export_report.py .\pgbench_results_YYYYMMDD_HHMMSS\summary.csv -o .\pgbench_results_YYYYMMDD_HHMMSS\my_report.html
|
||||
```
|
||||
Reference in New Issue
Block a user