ops: castopod/bonfire notes; amount-ladder bench

This commit is contained in:
Hernâni Marques 2026-07-10 11:33:09 +02:00
parent acff09d130
commit 84388ae6a9
No known key found for this signature in database
9 changed files with 749 additions and 3 deletions

View file

@ -0,0 +1,90 @@
# Amount-ladder payment benchmark
## Model
| Side | Machine | Role |
|------|---------|------|
| **Drive (external)** | Local machine (this tree) | `taler-wallet-cli`, orchestration, CSV/RESULTS |
| **SUT (internal)** | koopa containers | merchant / exchange / bank under load |
| **Measure (internal)** | `ssh hernani@koopa` | `loadavg`, `ps` in each container |
```
[ Local-machine wallet-cli ] --HTTPS--> taler.hacktivism.ch / exchange / bank
| ^
| ssh sample_load | pasta :9010/:9011/:9012
v |
[ hernani@koopa ] --podman exec--> process CPU/RSS snapshots
```
## Prerequisites
1. Stack healthy (`check_*-health.sh` all green; public `/config` + exchange `/keys` 200).
2. Local wallet CLI (default path in script, override `MONO=`).
3. Secrets in **`../koopa-admin-secrets/koopa/host-root/`**:
- `taler-bank/bank-admin-password.txt`
- `taler-bank/bank-bench-fat-password.txt` (created if missing)
- `taler-merchant/merchant-goa-demo-cp4zqk-password.txt`
4. SSH: `hernani@koopa` BatchMode, `podman` without su.
## Amount ladder (~20 payments: small / medium / large)
| Band | Amounts (GOA) |
|------|----------------|
| **small** | `0.000001` `0.00001` `0.0001` `0.001` `0.01` `0.05` `0.1` `0.5` |
| **medium** | `1` `2` `5` `10` `25` `50` `100` |
| **large** | `250` `500` `1000` `2500` `5000` |
Default list (20 steps):
```text
GOA:0.000001 GOA:0.00001 GOA:0.0001 GOA:0.001 GOA:0.01 GOA:0.05 GOA:0.1 GOA:0.5
GOA:1 GOA:2 GOA:5 GOA:10 GOA:25 GOA:50 GOA:100
GOA:250 GOA:500 GOA:1000 GOA:2500 GOA:5000
```
Σ ladder ≈ **GOA:9433** → default withdraw **GOA:50000**, admin credit **GOA:200000**.
Override: `AMOUNTS='GOA:1 GOA:10' ./run.sh`
## Pay-template URI (important)
Do **not** put a trailing slash after the template id (wallet then 404s).
```text
taler://pay-template/taler.hacktivism.ch/instances/goa-demo-cp4zqk/goa-free?amount=GOA:1
```
- Template `goa-free` is free-amount with fixed summary `"pay"` → pass **only** `amount=` (no `summary=` or merchant 409).
- HTTP GET probe:
`https://taler.hacktivism.ch/instances/goa-demo-cp4zqk/templates/goa-free` → 200.
## Run
```bash
cd koopa-admin-log/benchmarks/amount-ladder
./run.sh
# short:
AMOUNTS='GOA:0.05 GOA:1 GOA:10' WITHDRAW_AMT=GOA:100 ./run.sh
```
Outputs under `../../.tmp/amount-bench-<UTC>/`:
| File | Content |
|------|---------|
| `payments.csv` | per-amount timings + status |
| `RESULTS.md` | table summary |
| `koopa-load-*.out` | **inside** process samples |
| `run.log` | timeline |
## Columns (RESULTS)
- **handle**: wall time of `wallet handle-uri`
- **run-until-done**: wallet background after handle
- **total**: sum
- **loadavg**: koopa 1min load after payment
- **status**: `paid` / `error` / `insufficient` / …
## Related
- Partial earlier run (wrong URI): `2026/2026-07-09--amount-ladder-partial-results.md`
- Instance notes: `configs/taler-merchant/demo-instance-goa-demo-cp4zqk.md`