Add benchmark results for multiple Nostr relay backends

Introduced comprehensive benchmarks for `next-orly-badger`, `next-orly-neo4j`, and `nostr-rs-relay` backends, covering peak throughput, burst patterns, mixed read/write, query, and concurrent query/store tests. Reports include detailed performance metrics (e.g., events/sec, latency, success rates) and are saved as text and AsciiDoc formats. Aggregate summary also generated for testing consistency across relay implementations.
This commit is contained in:
2025-12-04 05:43:20 +00:00
parent 290fcbf8f0
commit 8dbc19ee9e
13 changed files with 1800 additions and 95 deletions

View File

@@ -0,0 +1,9 @@
{
"permissions": {
"allow": [
"Bash(ls:*)"
],
"deny": [],
"ask": []
}
}

View File

@@ -13,21 +13,6 @@ services:
volumes:
- /dev/shm/benchmark/next-orly-badger:/data
# Next.orly.dev relay with DGraph
next-orly-dgraph:
volumes:
- /dev/shm/benchmark/next-orly-dgraph:/data
# DGraph Zero - cluster coordinator
dgraph-zero:
volumes:
- /dev/shm/benchmark/dgraph-zero:/data
# DGraph Alpha - data node
dgraph-alpha:
volumes:
- /dev/shm/benchmark/dgraph-alpha:/data
# Next.orly.dev relay with Neo4j
next-orly-neo4j:
volumes:

View File

@@ -26,78 +26,6 @@ services:
retries: 3
start_period: 40s
# Next.orly.dev relay with DGraph (this repository)
next-orly-dgraph:
build:
context: ../..
dockerfile: cmd/benchmark/Dockerfile.next-orly
container_name: benchmark-next-orly-dgraph
environment:
- ORLY_DATA_DIR=/data
- ORLY_LISTEN=0.0.0.0
- ORLY_PORT=8080
- ORLY_LOG_LEVEL=off
- ORLY_DB_TYPE=dgraph
- ORLY_DGRAPH_URL=dgraph-alpha:9080
volumes:
- ./data/next-orly-dgraph:/data
ports:
- "8007:8080"
networks:
- benchmark-net
depends_on:
dgraph-alpha:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
# DGraph Zero - cluster coordinator
dgraph-zero:
image: dgraph/dgraph:v23.1.0
container_name: benchmark-dgraph-zero
working_dir: /data/zero
ports:
- "5080:5080"
- "6080:6080"
volumes:
- ./data/dgraph-zero:/data
command: dgraph zero --my=dgraph-zero:5080
networks:
- benchmark-net
healthcheck:
test: ["CMD", "sh", "-c", "dgraph version || exit 1"]
interval: 5s
timeout: 3s
retries: 3
start_period: 5s
# DGraph Alpha - data node
dgraph-alpha:
image: dgraph/dgraph:v23.1.0
container_name: benchmark-dgraph-alpha
working_dir: /data/alpha
ports:
- "8088:8080"
- "9080:9080"
volumes:
- ./data/dgraph-alpha:/data
command: dgraph alpha --my=dgraph-alpha:7080 --zero=dgraph-zero:5080 --security whitelist=0.0.0.0/0
networks:
- benchmark-net
depends_on:
dgraph-zero:
condition: service_healthy
healthcheck:
test: ["CMD", "sh", "-c", "dgraph version || exit 1"]
interval: 5s
timeout: 3s
retries: 6
start_period: 10s
# Next.orly.dev relay with Neo4j (this repository)
next-orly-neo4j:
build:
@@ -300,8 +228,6 @@ services:
depends_on:
next-orly-badger:
condition: service_healthy
next-orly-dgraph:
condition: service_healthy
next-orly-neo4j:
condition: service_healthy
khatru-sqlite:
@@ -317,7 +243,7 @@ services:
rely-sqlite:
condition: service_healthy
environment:
- BENCHMARK_TARGETS=rely-sqlite:3334,next-orly-badger:8080,next-orly-dgraph:8080,next-orly-neo4j:8080,khatru-sqlite:3334,khatru-badger:3334,relayer-basic:7447,strfry:8080,nostr-rs-relay:8080
- BENCHMARK_TARGETS=rely-sqlite:3334,next-orly-badger:8080,next-orly-neo4j:8080,khatru-sqlite:3334,khatru-badger:3334,relayer-basic:7447,strfry:8080,nostr-rs-relay:8080
- BENCHMARK_EVENTS=50000
- BENCHMARK_WORKERS=24
- BENCHMARK_DURATION=60s

View File

@@ -0,0 +1,176 @@
================================================================
NOSTR RELAY BENCHMARK AGGREGATE REPORT
================================================================
Generated: 2025-12-03T22:47:18+00:00
Benchmark Configuration:
Events per test: 50000
Concurrent workers: 24
Test duration: 60s
Relays tested: 8
================================================================
SUMMARY BY RELAY
================================================================
Relay: rely-sqlite
----------------------------------------
Status: COMPLETED
Events/sec: 16694.18
Events/sec: 6270.43
Events/sec: 16694.18
Success Rate: 100.0%
Success Rate: 100.0%
Success Rate: 100.0%
Avg Latency: 1.339216ms
Bottom 10% Avg Latency: 779.552µs
Avg Latency: 1.281976ms
P95 Latency: 1.894111ms
P95 Latency: 2.087148ms
P95 Latency: 910.529µs
Relay: next-orly-badger
----------------------------------------
Status: COMPLETED
Events/sec: 17987.95
Events/sec: 6246.39
Events/sec: 17987.95
Success Rate: 100.0%
Success Rate: 100.0%
Success Rate: 100.0%
Avg Latency: 1.16914ms
Bottom 10% Avg Latency: 675.419µs
Avg Latency: 1.301155ms
P95 Latency: 1.605171ms
P95 Latency: 2.260728ms
P95 Latency: 911.513µs
Relay: next-orly-neo4j
----------------------------------------
Status: COMPLETED
Events/sec: 17437.04
Events/sec: 6060.82
Events/sec: 17437.04
Success Rate: 100.0%
Success Rate: 100.0%
Success Rate: 100.0%
Avg Latency: 1.250926ms
Bottom 10% Avg Latency: 735.971µs
Avg Latency: 1.493295ms
P95 Latency: 1.757814ms
P95 Latency: 2.404304ms
P95 Latency: 896.796µs
Relay: khatru-sqlite
----------------------------------------
Status: COMPLETED
Events/sec: 17531.15
Events/sec: 6335.87
Events/sec: 17531.15
Success Rate: 100.0%
Success Rate: 100.0%
Success Rate: 100.0%
Avg Latency: 1.233875ms
Bottom 10% Avg Latency: 707.713µs
Avg Latency: 1.239192ms
P95 Latency: 1.713051ms
P95 Latency: 1.880869ms
P95 Latency: 918.848µs
Relay: khatru-badger
----------------------------------------
Status: COMPLETED
Events/sec: 15958.89
Events/sec: 6352.78
Events/sec: 15958.89
Success Rate: 100.0%
Success Rate: 100.0%
Success Rate: 100.0%
Avg Latency: 1.414398ms
Bottom 10% Avg Latency: 791.675µs
Avg Latency: 1.183812ms
P95 Latency: 2.191322ms
P95 Latency: 1.80172ms
P95 Latency: 903.25µs
Relay: relayer-basic
----------------------------------------
Status: COMPLETED
Events/sec: 17757.23
Events/sec: 6227.33
Events/sec: 17757.23
Success Rate: 100.0%
Success Rate: 100.0%
Success Rate: 100.0%
Avg Latency: 1.193531ms
Bottom 10% Avg Latency: 679.232µs
Avg Latency: 1.304ms
P95 Latency: 1.679267ms
P95 Latency: 2.155365ms
P95 Latency: 930.632µs
Relay: strfry
----------------------------------------
Status: COMPLETED
Events/sec: 17794.50
Events/sec: 6252.01
Events/sec: 17794.50
Success Rate: 100.0%
Success Rate: 100.0%
Success Rate: 100.0%
Avg Latency: 1.192717ms
Bottom 10% Avg Latency: 676.594µs
Avg Latency: 1.270724ms
P95 Latency: 1.645564ms
P95 Latency: 2.251457ms
P95 Latency: 915.623µs
Relay: nostr-rs-relay
----------------------------------------
Status: COMPLETED
Events/sec: 17174.61
Events/sec: 6311.06
Events/sec: 17174.61
Success Rate: 100.0%
Success Rate: 100.0%
Success Rate: 100.0%
Avg Latency: 1.281647ms
Bottom 10% Avg Latency: 742.249µs
Avg Latency: 1.260479ms
P95 Latency: 1.836808ms
P95 Latency: 1.893887ms
P95 Latency: 922.647µs
================================================================
DETAILED RESULTS
================================================================
Individual relay reports are available in:
- /reports/run_20251203_222024/khatru-badger_results.txt
- /reports/run_20251203_222024/khatru-sqlite_results.txt
- /reports/run_20251203_222024/next-orly-badger_results.txt
- /reports/run_20251203_222024/next-orly-neo4j_results.txt
- /reports/run_20251203_222024/nostr-rs-relay_results.txt
- /reports/run_20251203_222024/relayer-basic_results.txt
- /reports/run_20251203_222024/rely-sqlite_results.txt
- /reports/run_20251203_222024/strfry_results.txt
================================================================
BENCHMARK COMPARISON TABLE
================================================================
Relay Status Peak Tput/s Avg Latency Success Rate
---- ------ ----------- ----------- ------------
rely-sqlite OK 16694.18 1.339216ms 100.0%
next-orly-badger OK 17987.95 1.16914ms 100.0%
next-orly-neo4j OK 17437.04 1.250926ms 100.0%
khatru-sqlite OK 17531.15 1.233875ms 100.0%
khatru-badger OK 15958.89 1.414398ms 100.0%
relayer-basic OK 17757.23 1.193531ms 100.0%
strfry OK 17794.50 1.192717ms 100.0%
nostr-rs-relay OK 17174.61 1.281647ms 100.0%
================================================================
End of Report
================================================================

View File

@@ -0,0 +1,201 @@
Starting Nostr Relay Benchmark (Badger Backend)
Data Directory: /tmp/benchmark_khatru-badger_8
Events: 50000, Workers: 24, Duration: 1m0s
1764801231368401 migrating to version 1... /build/pkg/database/migrations.go:68
1764801231368486 migrating to version 2... /build/pkg/database/migrations.go:75
1764801231368519 migrating to version 3... /build/pkg/database/migrations.go:82
1764801231368527 cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304
1764801231368536 cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349
1764801231368548 migrating to version 4... /build/pkg/database/migrations.go:89
1764801231368553 converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357
1764801231368563 found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446
1764801231368569 migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555
1764801231368582 migrating to version 5... /build/pkg/database/migrations.go:96
1764801231368586 re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562
1764801231368621 found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649
1764801231368649 no events need re-encoding /build/pkg/database/migrations.go:652
1764801231368698 migrating to version 6... /build/pkg/database/migrations.go:103
1764801231368705 converting events to compact serial-reference format... /build/pkg/database/migrations.go:706
1764801231368720 found 0 events to convert to compact format /build/pkg/database/migrations.go:846
1764801231368725 no events need conversion /build/pkg/database/migrations.go:849
╔════════════════════════════════════════════════════════╗
║ BADGER BACKEND BENCHMARK SUITE ║
╚════════════════════════════════════════════════════════╝
=== Starting Badger benchmark ===
RunPeakThroughputTest (Badger)..
=== Peak Throughput Test ===
2025/12/03 22:33:51 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so
Events saved: 50000/50000 (100.0%), errors: 0
Duration: 3.133049501s
Events/sec: 15958.89
Avg latency: 1.414398ms
P90 latency: 1.890809ms
P95 latency: 2.191322ms
P99 latency: 3.903963ms
Bottom 10% Avg latency: 791.675µs
Wiping database between tests...
RunBurstPatternTest (Badger)..
=== Burst Pattern Test ===
Burst completed: 5000 events in 324.488191ms
Burst completed: 5000 events in 290.052978ms
Burst completed: 5000 events in 282.1799ms
Burst completed: 5000 events in 293.897308ms
Burst completed: 5000 events in 291.897961ms
Burst completed: 5000 events in 289.485539ms
Burst completed: 5000 events in 274.266496ms
Burst completed: 5000 events in 267.924152ms
Burst completed: 5000 events in 270.096418ms
Burst completed: 5000 events in 279.041228ms
Burst test completed: 50000 events in 7.870569084s, errors: 0
Events/sec: 6352.78
Wiping database between tests...
RunMixedReadWriteTest (Badger)..
=== Mixed Read/Write Test ===
Generating 1000 unique synthetic events (minimum 300 bytes each)...
Generated 1000 events:
Average content size: 312 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database for read tests...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Mixed test completed: 25000 writes, 25000 reads in 24.293101466s
Combined ops/sec: 2058.20
Wiping database between tests...
RunQueryTest (Badger)..
=== Query Test ===
Generating 10000 unique synthetic events (minimum 300 bytes each)...
Generated 10000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 10000 events for query tests...
Query test completed: 414124 queries in 1m0.005028928s
Queries/sec: 6901.49
Avg query latency: 2.186993ms
P95 query latency: 8.150708ms
P99 query latency: 12.392244ms
Wiping database between tests...
RunConcurrentQueryStoreTest (Badger)..
=== Concurrent Query/Store Test ===
Generating 5000 unique synthetic events (minimum 300 bytes each)...
Generated 5000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 5000 events for concurrent query/store test...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Concurrent test completed: 315470 operations (265470 queries, 50000 writes) in 1m0.003725813s
Operations/sec: 5257.51
Avg latency: 1.463937ms
Avg query latency: 1.521887ms
Avg write latency: 1.156254ms
P95 latency: 3.595486ms
P99 latency: 9.347708ms
=== Badger benchmark completed ===
================================================================================
BENCHMARK REPORT
================================================================================
Test: Peak Throughput
Duration: 3.133049501s
Total Events: 50000
Events/sec: 15958.89
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 189 MB
Avg Latency: 1.414398ms
P90 Latency: 1.890809ms
P95 Latency: 2.191322ms
P99 Latency: 3.903963ms
Bottom 10% Avg Latency: 791.675µs
----------------------------------------
Test: Burst Pattern
Duration: 7.870569084s
Total Events: 50000
Events/sec: 6352.78
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 172 MB
Avg Latency: 1.183812ms
P90 Latency: 1.587121ms
P95 Latency: 1.80172ms
P99 Latency: 3.298169ms
Bottom 10% Avg Latency: 529.205µs
----------------------------------------
Test: Mixed Read/Write
Duration: 24.293101466s
Total Events: 50000
Events/sec: 2058.20
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 186 MB
Avg Latency: 384.638µs
P90 Latency: 808.86µs
P95 Latency: 903.25µs
P99 Latency: 1.120102ms
Bottom 10% Avg Latency: 1.02527ms
----------------------------------------
Test: Query Performance
Duration: 1m0.005028928s
Total Events: 414124
Events/sec: 6901.49
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 198 MB
Avg Latency: 2.186993ms
P90 Latency: 6.624883ms
P95 Latency: 8.150708ms
P99 Latency: 12.392244ms
Bottom 10% Avg Latency: 8.999206ms
----------------------------------------
Test: Concurrent Query/Store
Duration: 1m0.003725813s
Total Events: 315470
Events/sec: 5257.51
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 188 MB
Avg Latency: 1.463937ms
P90 Latency: 2.911413ms
P95 Latency: 3.595486ms
P99 Latency: 9.347708ms
Bottom 10% Avg Latency: 5.359325ms
----------------------------------------
Report saved to: /tmp/benchmark_khatru-badger_8/benchmark_report.txt
AsciiDoc report saved to: /tmp/benchmark_khatru-badger_8/benchmark_report.adoc
RELAY_NAME: khatru-badger
RELAY_URL: ws://khatru-badger:3334
TEST_TIMESTAMP: 2025-12-03T22:37:08+00:00
BENCHMARK_CONFIG:
Events: 50000
Workers: 24
Duration: 60s

View File

@@ -0,0 +1,201 @@
Starting Nostr Relay Benchmark (Badger Backend)
Data Directory: /tmp/benchmark_khatru-sqlite_8
Events: 50000, Workers: 24, Duration: 1m0s
1764801029566947 migrating to version 1... /build/pkg/database/migrations.go:68
1764801029567062 migrating to version 2... /build/pkg/database/migrations.go:75
1764801029567087 migrating to version 3... /build/pkg/database/migrations.go:82
1764801029567092 cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304
1764801029567102 cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349
1764801029567115 migrating to version 4... /build/pkg/database/migrations.go:89
1764801029567122 converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357
1764801029567131 found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446
1764801029567137 migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555
1764801029567154 migrating to version 5... /build/pkg/database/migrations.go:96
1764801029567160 re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562
1764801029567169 found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649
1764801029567174 no events need re-encoding /build/pkg/database/migrations.go:652
1764801029567187 migrating to version 6... /build/pkg/database/migrations.go:103
1764801029567192 converting events to compact serial-reference format... /build/pkg/database/migrations.go:706
1764801029567211 found 0 events to convert to compact format /build/pkg/database/migrations.go:846
1764801029567217 no events need conversion /build/pkg/database/migrations.go:849
╔════════════════════════════════════════════════════════╗
║ BADGER BACKEND BENCHMARK SUITE ║
╚════════════════════════════════════════════════════════╝
=== Starting Badger benchmark ===
RunPeakThroughputTest (Badger)..
=== Peak Throughput Test ===
2025/12/03 22:30:29 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so
Events saved: 50000/50000 (100.0%), errors: 0
Duration: 2.852065909s
Events/sec: 17531.15
Avg latency: 1.233875ms
P90 latency: 1.547505ms
P95 latency: 1.713051ms
P99 latency: 3.452631ms
Bottom 10% Avg latency: 707.713µs
Wiping database between tests...
RunBurstPatternTest (Badger)..
=== Burst Pattern Test ===
Burst completed: 5000 events in 297.229736ms
Burst completed: 5000 events in 291.618719ms
Burst completed: 5000 events in 295.763107ms
Burst completed: 5000 events in 320.083794ms
Burst completed: 5000 events in 306.954958ms
Burst completed: 5000 events in 294.350551ms
Burst completed: 5000 events in 266.492151ms
Burst completed: 5000 events in 258.415169ms
Burst completed: 5000 events in 279.574451ms
Burst completed: 5000 events in 274.042853ms
Burst test completed: 50000 events in 7.891576755s, errors: 0
Events/sec: 6335.87
Wiping database between tests...
RunMixedReadWriteTest (Badger)..
=== Mixed Read/Write Test ===
Generating 1000 unique synthetic events (minimum 300 bytes each)...
Generated 1000 events:
Average content size: 312 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database for read tests...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Mixed test completed: 25000 writes, 25000 reads in 24.900476855s
Combined ops/sec: 2007.99
Wiping database between tests...
RunQueryTest (Badger)..
=== Query Test ===
Generating 10000 unique synthetic events (minimum 300 bytes each)...
Generated 10000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 10000 events for query tests...
Query test completed: 410621 queries in 1m0.004293618s
Queries/sec: 6843.19
Avg query latency: 2.208463ms
P95 query latency: 8.264ms
P99 query latency: 12.52398ms
Wiping database between tests...
RunConcurrentQueryStoreTest (Badger)..
=== Concurrent Query/Store Test ===
Generating 5000 unique synthetic events (minimum 300 bytes each)...
Generated 5000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 5000 events for concurrent query/store test...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Concurrent test completed: 308780 operations (258780 queries, 50000 writes) in 1m0.002949862s
Operations/sec: 5146.08
Avg latency: 1.517721ms
Avg query latency: 1.590458ms
Avg write latency: 1.141264ms
P95 latency: 3.798681ms
P99 latency: 9.90181ms
=== Badger benchmark completed ===
================================================================================
BENCHMARK REPORT
================================================================================
Test: Peak Throughput
Duration: 2.852065909s
Total Events: 50000
Events/sec: 17531.15
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 288 MB
Avg Latency: 1.233875ms
P90 Latency: 1.547505ms
P95 Latency: 1.713051ms
P99 Latency: 3.452631ms
Bottom 10% Avg Latency: 707.713µs
----------------------------------------
Test: Burst Pattern
Duration: 7.891576755s
Total Events: 50000
Events/sec: 6335.87
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 282 MB
Avg Latency: 1.239192ms
P90 Latency: 1.634621ms
P95 Latency: 1.880869ms
P99 Latency: 3.451389ms
Bottom 10% Avg Latency: 633.361µs
----------------------------------------
Test: Mixed Read/Write
Duration: 24.900476855s
Total Events: 50000
Events/sec: 2007.99
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 179 MB
Avg Latency: 632.275µs
P90 Latency: 820.942µs
P95 Latency: 918.848µs
P99 Latency: 1.159557ms
Bottom 10% Avg Latency: 3.463779ms
----------------------------------------
Test: Query Performance
Duration: 1m0.004293618s
Total Events: 410621
Events/sec: 6843.19
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 183 MB
Avg Latency: 2.208463ms
P90 Latency: 6.696276ms
P95 Latency: 8.264ms
P99 Latency: 12.52398ms
Bottom 10% Avg Latency: 9.093268ms
----------------------------------------
Test: Concurrent Query/Store
Duration: 1m0.002949862s
Total Events: 308780
Events/sec: 5146.08
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 137 MB
Avg Latency: 1.517721ms
P90 Latency: 3.086927ms
P95 Latency: 3.798681ms
P99 Latency: 9.90181ms
Bottom 10% Avg Latency: 5.471135ms
----------------------------------------
Report saved to: /tmp/benchmark_khatru-sqlite_8/benchmark_report.txt
AsciiDoc report saved to: /tmp/benchmark_khatru-sqlite_8/benchmark_report.adoc
RELAY_NAME: khatru-sqlite
RELAY_URL: ws://khatru-sqlite:3334
TEST_TIMESTAMP: 2025-12-03T22:33:46+00:00
BENCHMARK_CONFIG:
Events: 50000
Workers: 24
Duration: 60s

View File

@@ -0,0 +1,201 @@
Starting Nostr Relay Benchmark (Badger Backend)
Data Directory: /tmp/benchmark_next-orly-badger_8
Events: 50000, Workers: 24, Duration: 1m0s
1764800626547123 migrating to version 1... /build/pkg/database/migrations.go:68
1764800626547201 migrating to version 2... /build/pkg/database/migrations.go:75
1764800626547221 migrating to version 3... /build/pkg/database/migrations.go:82
1764800626547228 cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304
1764800626547238 cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349
1764800626547252 migrating to version 4... /build/pkg/database/migrations.go:89
1764800626547257 converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357
1764800626547269 found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446
1764800626547275 migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555
1764800626547291 migrating to version 5... /build/pkg/database/migrations.go:96
1764800626547296 re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562
1764800626547303 found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649
1764800626547308 no events need re-encoding /build/pkg/database/migrations.go:652
1764800626547323 migrating to version 6... /build/pkg/database/migrations.go:103
1764800626547329 converting events to compact serial-reference format... /build/pkg/database/migrations.go:706
1764800626547351 found 0 events to convert to compact format /build/pkg/database/migrations.go:846
1764800626547357 no events need conversion /build/pkg/database/migrations.go:849
╔════════════════════════════════════════════════════════╗
║ BADGER BACKEND BENCHMARK SUITE ║
╚════════════════════════════════════════════════════════╝
=== Starting Badger benchmark ===
RunPeakThroughputTest (Badger)..
=== Peak Throughput Test ===
2025/12/03 22:23:46 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so
Events saved: 50000/50000 (100.0%), errors: 0
Duration: 2.779639238s
Events/sec: 17987.95
Avg latency: 1.16914ms
P90 latency: 1.459324ms
P95 latency: 1.605171ms
P99 latency: 3.239809ms
Bottom 10% Avg latency: 675.419µs
Wiping database between tests...
RunBurstPatternTest (Badger)..
=== Burst Pattern Test ===
Burst completed: 5000 events in 289.152592ms
Burst completed: 5000 events in 284.512743ms
Burst completed: 5000 events in 285.58317ms
Burst completed: 5000 events in 283.486103ms
Burst completed: 5000 events in 351.630471ms
Burst completed: 5000 events in 410.422971ms
Burst completed: 5000 events in 272.00462ms
Burst completed: 5000 events in 258.981762ms
Burst completed: 5000 events in 287.217917ms
Burst completed: 5000 events in 274.519636ms
Burst test completed: 50000 events in 8.004626821s, errors: 0
Events/sec: 6246.39
Wiping database between tests...
RunMixedReadWriteTest (Badger)..
=== Mixed Read/Write Test ===
Generating 1000 unique synthetic events (minimum 300 bytes each)...
Generated 1000 events:
Average content size: 312 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database for read tests...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Mixed test completed: 25000 writes, 25000 reads in 24.365264731s
Combined ops/sec: 2052.10
Wiping database between tests...
RunQueryTest (Badger)..
=== Query Test ===
Generating 10000 unique synthetic events (minimum 300 bytes each)...
Generated 10000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 10000 events for query tests...
Query test completed: 395932 queries in 1m0.004955045s
Queries/sec: 6598.32
Avg query latency: 2.330632ms
P95 query latency: 8.751923ms
P99 query latency: 13.223897ms
Wiping database between tests...
RunConcurrentQueryStoreTest (Badger)..
=== Concurrent Query/Store Test ===
Generating 5000 unique synthetic events (minimum 300 bytes each)...
Generated 5000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 5000 events for concurrent query/store test...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Concurrent test completed: 309032 operations (259032 queries, 50000 writes) in 1m0.003111764s
Operations/sec: 5150.27
Avg latency: 1.47962ms
Avg query latency: 1.571532ms
Avg write latency: 1.003456ms
P95 latency: 3.833182ms
P99 latency: 9.589651ms
=== Badger benchmark completed ===
================================================================================
BENCHMARK REPORT
================================================================================
Test: Peak Throughput
Duration: 2.779639238s
Total Events: 50000
Events/sec: 17987.95
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 217 MB
Avg Latency: 1.16914ms
P90 Latency: 1.459324ms
P95 Latency: 1.605171ms
P99 Latency: 3.239809ms
Bottom 10% Avg Latency: 675.419µs
----------------------------------------
Test: Burst Pattern
Duration: 8.004626821s
Total Events: 50000
Events/sec: 6246.39
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 335 MB
Avg Latency: 1.301155ms
P90 Latency: 1.847122ms
P95 Latency: 2.260728ms
P99 Latency: 3.744669ms
Bottom 10% Avg Latency: 634.48µs
----------------------------------------
Test: Mixed Read/Write
Duration: 24.365264731s
Total Events: 50000
Events/sec: 2052.10
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 167 MB
Avg Latency: 386.252µs
P90 Latency: 816.533µs
P95 Latency: 911.513µs
P99 Latency: 1.142853ms
Bottom 10% Avg Latency: 1.03593ms
----------------------------------------
Test: Query Performance
Duration: 1m0.004955045s
Total Events: 395932
Events/sec: 6598.32
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 202 MB
Avg Latency: 2.330632ms
P90 Latency: 7.016915ms
P95 Latency: 8.751923ms
P99 Latency: 13.223897ms
Bottom 10% Avg Latency: 9.659987ms
----------------------------------------
Test: Concurrent Query/Store
Duration: 1m0.003111764s
Total Events: 309032
Events/sec: 5150.27
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 170 MB
Avg Latency: 1.47962ms
P90 Latency: 3.082944ms
P95 Latency: 3.833182ms
P99 Latency: 9.589651ms
Bottom 10% Avg Latency: 5.322657ms
----------------------------------------
Report saved to: /tmp/benchmark_next-orly-badger_8/benchmark_report.txt
AsciiDoc report saved to: /tmp/benchmark_next-orly-badger_8/benchmark_report.adoc
RELAY_NAME: next-orly-badger
RELAY_URL: ws://next-orly-badger:8080
TEST_TIMESTAMP: 2025-12-03T22:27:02+00:00
BENCHMARK_CONFIG:
Events: 50000
Workers: 24
Duration: 60s

View File

@@ -0,0 +1,201 @@
Starting Nostr Relay Benchmark (Badger Backend)
Data Directory: /tmp/benchmark_next-orly-neo4j_8
Events: 50000, Workers: 24, Duration: 1m0s
1764800827923617 migrating to version 1... /build/pkg/database/migrations.go:68
1764800827923722 migrating to version 2... /build/pkg/database/migrations.go:75
1764800827923845 migrating to version 3... /build/pkg/database/migrations.go:82
1764800827923903 cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304
1764800827923913 cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349
1764800827923932 migrating to version 4... /build/pkg/database/migrations.go:89
1764800827923938 converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357
1764800827923950 found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446
1764800827923957 migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555
1764800827923975 migrating to version 5... /build/pkg/database/migrations.go:96
1764800827923981 re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562
1764800827923992 found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649
1764800827923997 no events need re-encoding /build/pkg/database/migrations.go:652
1764800827924024 migrating to version 6... /build/pkg/database/migrations.go:103
1764800827924030 converting events to compact serial-reference format... /build/pkg/database/migrations.go:706
1764800827924051 found 0 events to convert to compact format /build/pkg/database/migrations.go:846
1764800827924056 no events need conversion /build/pkg/database/migrations.go:849
╔════════════════════════════════════════════════════════╗
║ BADGER BACKEND BENCHMARK SUITE ║
╚════════════════════════════════════════════════════════╝
=== Starting Badger benchmark ===
RunPeakThroughputTest (Badger)..
=== Peak Throughput Test ===
2025/12/03 22:27:07 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so
Events saved: 50000/50000 (100.0%), errors: 0
Duration: 2.867458976s
Events/sec: 17437.04
Avg latency: 1.250926ms
P90 latency: 1.579234ms
P95 latency: 1.757814ms
P99 latency: 3.529624ms
Bottom 10% Avg latency: 735.971µs
Wiping database between tests...
RunBurstPatternTest (Badger)..
=== Burst Pattern Test ===
Burst completed: 5000 events in 325.40241ms
Burst completed: 5000 events in 303.100725ms
Burst completed: 5000 events in 322.600483ms
Burst completed: 5000 events in 368.813118ms
Burst completed: 5000 events in 344.272535ms
Burst completed: 5000 events in 313.590737ms
Burst completed: 5000 events in 285.903125ms
Burst completed: 5000 events in 371.578395ms
Burst completed: 5000 events in 304.71264ms
Burst completed: 5000 events in 303.146753ms
Burst test completed: 50000 events in 8.249715579s, errors: 0
Events/sec: 6060.82
Wiping database between tests...
RunMixedReadWriteTest (Badger)..
=== Mixed Read/Write Test ===
Generating 1000 unique synthetic events (minimum 300 bytes each)...
Generated 1000 events:
Average content size: 312 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database for read tests...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Mixed test completed: 25000 writes, 25000 reads in 24.349183827s
Combined ops/sec: 2053.46
Wiping database between tests...
RunQueryTest (Badger)..
=== Query Test ===
Generating 10000 unique synthetic events (minimum 300 bytes each)...
Generated 10000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 10000 events for query tests...
Query test completed: 401050 queries in 1m0.005784437s
Queries/sec: 6683.52
Avg query latency: 2.274359ms
P95 query latency: 8.507568ms
P99 query latency: 12.862634ms
Wiping database between tests...
RunConcurrentQueryStoreTest (Badger)..
=== Concurrent Query/Store Test ===
Generating 5000 unique synthetic events (minimum 300 bytes each)...
Generated 5000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 5000 events for concurrent query/store test...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Concurrent test completed: 306446 operations (256446 queries, 50000 writes) in 1m0.003089159s
Operations/sec: 5107.17
Avg latency: 1.529829ms
Avg query latency: 1.613393ms
Avg write latency: 1.101234ms
P95 latency: 3.928746ms
P99 latency: 10.421101ms
=== Badger benchmark completed ===
================================================================================
BENCHMARK REPORT
================================================================================
Test: Peak Throughput
Duration: 2.867458976s
Total Events: 50000
Events/sec: 17437.04
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 210 MB
Avg Latency: 1.250926ms
P90 Latency: 1.579234ms
P95 Latency: 1.757814ms
P99 Latency: 3.529624ms
Bottom 10% Avg Latency: 735.971µs
----------------------------------------
Test: Burst Pattern
Duration: 8.249715579s
Total Events: 50000
Events/sec: 6060.82
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 207 MB
Avg Latency: 1.493295ms
P90 Latency: 2.04999ms
P95 Latency: 2.404304ms
P99 Latency: 4.303908ms
Bottom 10% Avg Latency: 768.239µs
----------------------------------------
Test: Mixed Read/Write
Duration: 24.349183827s
Total Events: 50000
Events/sec: 2053.46
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 176 MB
Avg Latency: 379.443µs
P90 Latency: 799.27µs
P95 Latency: 896.796µs
P99 Latency: 1.119981ms
Bottom 10% Avg Latency: 1.022564ms
----------------------------------------
Test: Query Performance
Duration: 1m0.005784437s
Total Events: 401050
Events/sec: 6683.52
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 176 MB
Avg Latency: 2.274359ms
P90 Latency: 6.877657ms
P95 Latency: 8.507568ms
P99 Latency: 12.862634ms
Bottom 10% Avg Latency: 9.365763ms
----------------------------------------
Test: Concurrent Query/Store
Duration: 1m0.003089159s
Total Events: 306446
Events/sec: 5107.17
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 218 MB
Avg Latency: 1.529829ms
P90 Latency: 3.147159ms
P95 Latency: 3.928746ms
P99 Latency: 10.421101ms
Bottom 10% Avg Latency: 5.559413ms
----------------------------------------
Report saved to: /tmp/benchmark_next-orly-neo4j_8/benchmark_report.txt
AsciiDoc report saved to: /tmp/benchmark_next-orly-neo4j_8/benchmark_report.adoc
RELAY_NAME: next-orly-neo4j
RELAY_URL: ws://next-orly-neo4j:8080
TEST_TIMESTAMP: 2025-12-03T22:30:24+00:00
BENCHMARK_CONFIG:
Events: 50000
Workers: 24
Duration: 60s

View File

@@ -0,0 +1,201 @@
Starting Nostr Relay Benchmark (Badger Backend)
Data Directory: /tmp/benchmark_nostr-rs-relay_8
Events: 50000, Workers: 24, Duration: 1m0s
1764801836806913 migrating to version 1... /build/pkg/database/migrations.go:68
1764801836806998 migrating to version 2... /build/pkg/database/migrations.go:75
1764801836807017 migrating to version 3... /build/pkg/database/migrations.go:82
1764801836807022 cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304
1764801836807029 cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349
1764801836807042 migrating to version 4... /build/pkg/database/migrations.go:89
1764801836807046 converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357
1764801836807056 found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446
1764801836807061 migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555
1764801836807076 migrating to version 5... /build/pkg/database/migrations.go:96
1764801836807081 re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562
1764801836807094 found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649
1764801836807124 no events need re-encoding /build/pkg/database/migrations.go:652
1764801836807178 migrating to version 6... /build/pkg/database/migrations.go:103
1764801836807185 converting events to compact serial-reference format... /build/pkg/database/migrations.go:706
1764801836807242 found 0 events to convert to compact format /build/pkg/database/migrations.go:846
1764801836807283 no events need conversion /build/pkg/database/migrations.go:849
╔════════════════════════════════════════════════════════╗
║ BADGER BACKEND BENCHMARK SUITE ║
╚════════════════════════════════════════════════════════╝
=== Starting Badger benchmark ===
RunPeakThroughputTest (Badger)..
=== Peak Throughput Test ===
2025/12/03 22:43:56 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so
Events saved: 50000/50000 (100.0%), errors: 0
Duration: 2.911273959s
Events/sec: 17174.61
Avg latency: 1.281647ms
P90 latency: 1.626819ms
P95 latency: 1.836808ms
P99 latency: 3.758588ms
Bottom 10% Avg latency: 742.249µs
Wiping database between tests...
RunBurstPatternTest (Badger)..
=== Burst Pattern Test ===
Burst completed: 5000 events in 292.272251ms
Burst completed: 5000 events in 287.701125ms
Burst completed: 5000 events in 286.616429ms
Burst completed: 5000 events in 293.830439ms
Burst completed: 5000 events in 301.388252ms
Burst completed: 5000 events in 287.188158ms
Burst completed: 5000 events in 263.711266ms
Burst completed: 5000 events in 318.616274ms
Burst completed: 5000 events in 310.007309ms
Burst completed: 5000 events in 273.375973ms
Burst test completed: 50000 events in 7.922605603s, errors: 0
Events/sec: 6311.06
Wiping database between tests...
RunMixedReadWriteTest (Badger)..
=== Mixed Read/Write Test ===
Generating 1000 unique synthetic events (minimum 300 bytes each)...
Generated 1000 events:
Average content size: 312 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database for read tests...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Mixed test completed: 25000 writes, 25000 reads in 24.449120282s
Combined ops/sec: 2045.06
Wiping database between tests...
RunQueryTest (Badger)..
=== Query Test ===
Generating 10000 unique synthetic events (minimum 300 bytes each)...
Generated 10000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 10000 events for query tests...
Query test completed: 417600 queries in 1m0.004478253s
Queries/sec: 6959.48
Avg query latency: 2.151151ms
P95 query latency: 8.027278ms
P99 query latency: 12.154981ms
Wiping database between tests...
RunConcurrentQueryStoreTest (Badger)..
=== Concurrent Query/Store Test ===
Generating 5000 unique synthetic events (minimum 300 bytes each)...
Generated 5000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 5000 events for concurrent query/store test...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Concurrent test completed: 317282 operations (267282 queries, 50000 writes) in 1m0.002851777s
Operations/sec: 5287.78
Avg latency: 1.438019ms
Avg query latency: 1.509815ms
Avg write latency: 1.054223ms
P95 latency: 3.604275ms
P99 latency: 8.983541ms
=== Badger benchmark completed ===
================================================================================
BENCHMARK REPORT
================================================================================
Test: Peak Throughput
Duration: 2.911273959s
Total Events: 50000
Events/sec: 17174.61
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 127 MB
Avg Latency: 1.281647ms
P90 Latency: 1.626819ms
P95 Latency: 1.836808ms
P99 Latency: 3.758588ms
Bottom 10% Avg Latency: 742.249µs
----------------------------------------
Test: Burst Pattern
Duration: 7.922605603s
Total Events: 50000
Events/sec: 6311.06
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 207 MB
Avg Latency: 1.260479ms
P90 Latency: 1.672696ms
P95 Latency: 1.893887ms
P99 Latency: 3.384445ms
Bottom 10% Avg Latency: 627.786µs
----------------------------------------
Test: Mixed Read/Write
Duration: 24.449120282s
Total Events: 50000
Events/sec: 2045.06
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 160 MB
Avg Latency: 393.867µs
P90 Latency: 827.906µs
P95 Latency: 922.647µs
P99 Latency: 1.157515ms
Bottom 10% Avg Latency: 1.038892ms
----------------------------------------
Test: Query Performance
Duration: 1m0.004478253s
Total Events: 417600
Events/sec: 6959.48
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 205 MB
Avg Latency: 2.151151ms
P90 Latency: 6.525088ms
P95 Latency: 8.027278ms
P99 Latency: 12.154981ms
Bottom 10% Avg Latency: 8.836851ms
----------------------------------------
Test: Concurrent Query/Store
Duration: 1m0.002851777s
Total Events: 317282
Events/sec: 5287.78
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 168 MB
Avg Latency: 1.438019ms
P90 Latency: 2.919631ms
P95 Latency: 3.604275ms
P99 Latency: 8.983541ms
Bottom 10% Avg Latency: 5.142371ms
----------------------------------------
Report saved to: /tmp/benchmark_nostr-rs-relay_8/benchmark_report.txt
AsciiDoc report saved to: /tmp/benchmark_nostr-rs-relay_8/benchmark_report.adoc
RELAY_NAME: nostr-rs-relay
RELAY_URL: ws://nostr-rs-relay:8080
TEST_TIMESTAMP: 2025-12-03T22:47:13+00:00
BENCHMARK_CONFIG:
Events: 50000
Workers: 24
Duration: 60s

View File

@@ -0,0 +1,201 @@
Starting Nostr Relay Benchmark (Badger Backend)
Data Directory: /tmp/benchmark_relayer-basic_8
Events: 50000, Workers: 24, Duration: 1m0s
1764801433220018 migrating to version 1... /build/pkg/database/migrations.go:68
1764801433220118 migrating to version 2... /build/pkg/database/migrations.go:75
1764801433220142 migrating to version 3... /build/pkg/database/migrations.go:82
1764801433220148 cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304
1764801433220157 cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349
1764801433220179 migrating to version 4... /build/pkg/database/migrations.go:89
1764801433220185 converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357
1764801433220202 found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446
1764801433220208 migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555
1764801433220225 migrating to version 5... /build/pkg/database/migrations.go:96
1764801433220231 re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562
1764801433220263 found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649
1764801433220299 no events need re-encoding /build/pkg/database/migrations.go:652
1764801433220355 migrating to version 6... /build/pkg/database/migrations.go:103
1764801433220361 converting events to compact serial-reference format... /build/pkg/database/migrations.go:706
1764801433220380 found 0 events to convert to compact format /build/pkg/database/migrations.go:846
1764801433220384 no events need conversion /build/pkg/database/migrations.go:849
╔════════════════════════════════════════════════════════╗
║ BADGER BACKEND BENCHMARK SUITE ║
╚════════════════════════════════════════════════════════╝
=== Starting Badger benchmark ===
RunPeakThroughputTest (Badger)..
=== Peak Throughput Test ===
2025/12/03 22:37:13 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so
Events saved: 50000/50000 (100.0%), errors: 0
Duration: 2.81575396s
Events/sec: 17757.23
Avg latency: 1.193531ms
P90 latency: 1.503923ms
P95 latency: 1.679267ms
P99 latency: 3.258063ms
Bottom 10% Avg latency: 679.232µs
Wiping database between tests...
RunBurstPatternTest (Badger)..
=== Burst Pattern Test ===
Burst completed: 5000 events in 282.513648ms
Burst completed: 5000 events in 298.930177ms
Burst completed: 5000 events in 368.119471ms
Burst completed: 5000 events in 344.305787ms
Burst completed: 5000 events in 299.829461ms
Burst completed: 5000 events in 328.253293ms
Burst completed: 5000 events in 268.415756ms
Burst completed: 5000 events in 258.778746ms
Burst completed: 5000 events in 281.496082ms
Burst completed: 5000 events in 291.526061ms
Burst test completed: 50000 events in 8.029129461s, errors: 0
Events/sec: 6227.33
Wiping database between tests...
RunMixedReadWriteTest (Badger)..
=== Mixed Read/Write Test ===
Generating 1000 unique synthetic events (minimum 300 bytes each)...
Generated 1000 events:
Average content size: 312 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database for read tests...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Mixed test completed: 25000 writes, 25000 reads in 24.368434728s
Combined ops/sec: 2051.83
Wiping database between tests...
RunQueryTest (Badger)..
=== Query Test ===
Generating 10000 unique synthetic events (minimum 300 bytes each)...
Generated 10000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 10000 events for query tests...
Query test completed: 399766 queries in 1m0.004004537s
Queries/sec: 6662.32
Avg query latency: 2.299802ms
P95 query latency: 8.583876ms
P99 query latency: 12.879727ms
Wiping database between tests...
RunConcurrentQueryStoreTest (Badger)..
=== Concurrent Query/Store Test ===
Generating 5000 unique synthetic events (minimum 300 bytes each)...
Generated 5000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 5000 events for concurrent query/store test...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Concurrent test completed: 319713 operations (269713 queries, 50000 writes) in 1m0.004382807s
Operations/sec: 5328.16
Avg latency: 1.408648ms
Avg query latency: 1.486258ms
Avg write latency: 990µs
P95 latency: 3.553437ms
P99 latency: 8.491811ms
=== Badger benchmark completed ===
================================================================================
BENCHMARK REPORT
================================================================================
Test: Peak Throughput
Duration: 2.81575396s
Total Events: 50000
Events/sec: 17757.23
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 279 MB
Avg Latency: 1.193531ms
P90 Latency: 1.503923ms
P95 Latency: 1.679267ms
P99 Latency: 3.258063ms
Bottom 10% Avg Latency: 679.232µs
----------------------------------------
Test: Burst Pattern
Duration: 8.029129461s
Total Events: 50000
Events/sec: 6227.33
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 314 MB
Avg Latency: 1.304ms
P90 Latency: 1.833241ms
P95 Latency: 2.155365ms
P99 Latency: 3.621225ms
Bottom 10% Avg Latency: 577.319µs
----------------------------------------
Test: Mixed Read/Write
Duration: 24.368434728s
Total Events: 50000
Events/sec: 2051.83
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 302 MB
Avg Latency: 393.704µs
P90 Latency: 831.964µs
P95 Latency: 930.632µs
P99 Latency: 1.162684ms
Bottom 10% Avg Latency: 1.038382ms
----------------------------------------
Test: Query Performance
Duration: 1m0.004004537s
Total Events: 399766
Events/sec: 6662.32
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 154 MB
Avg Latency: 2.299802ms
P90 Latency: 6.959824ms
P95 Latency: 8.583876ms
P99 Latency: 12.879727ms
Bottom 10% Avg Latency: 9.428864ms
----------------------------------------
Test: Concurrent Query/Store
Duration: 1m0.004382807s
Total Events: 319713
Events/sec: 5328.16
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 181 MB
Avg Latency: 1.408648ms
P90 Latency: 2.876838ms
P95 Latency: 3.553437ms
P99 Latency: 8.491811ms
Bottom 10% Avg Latency: 4.993856ms
----------------------------------------
Report saved to: /tmp/benchmark_relayer-basic_8/benchmark_report.txt
AsciiDoc report saved to: /tmp/benchmark_relayer-basic_8/benchmark_report.adoc
RELAY_NAME: relayer-basic
RELAY_URL: ws://relayer-basic:7447
TEST_TIMESTAMP: 2025-12-03T22:40:30+00:00
BENCHMARK_CONFIG:
Events: 50000
Workers: 24
Duration: 60s

View File

@@ -0,0 +1,202 @@
Starting Nostr Relay Benchmark (Badger Backend)
Data Directory: /tmp/benchmark_rely-sqlite_8
Events: 50000, Workers: 24, Duration: 1m0s
1764800424570824 migrating to version 1... /build/pkg/database/migrations.go:68
1764800424571528 migrating to version 2... /build/pkg/database/migrations.go:75
1764800424571758 migrating to version 3... /build/pkg/database/migrations.go:82
1764800424571773 cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304
1764800424571799 cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349
1764800424571834 migrating to version 4... /build/pkg/database/migrations.go:89
1764800424571844 converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357
1764800424571863 found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446
1764800424571878 migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555
1764800424571916 migrating to version 5... /build/pkg/database/migrations.go:96
1764800424571927 re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562
1764800424571949 found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649
1764800424571958 no events need re-encoding /build/pkg/database/migrations.go:652
1764800424571993 migrating to version 6... /build/pkg/database/migrations.go:103
1764800424572004 converting events to compact serial-reference format... /build/pkg/database/migrations.go:706
1764800424572070 found 0 events to convert to compact format /build/pkg/database/migrations.go:846
1764800424572082 no events need conversion /build/pkg/database/migrations.go:849
╔════════════════════════════════════════════════════════╗
║ BADGER BACKEND BENCHMARK SUITE ║
╚════════════════════════════════════════════════════════╝
=== Starting Badger benchmark ===
RunPeakThroughputTest (Badger)..
=== Peak Throughput Test ===
2025/12/03 22:20:24 INFO: Extracted embedded libsecp256k1 to /tmp/orly-libsecp256k1/libsecp256k1.so
2025/12/03 22:20:24 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so
Events saved: 50000/50000 (100.0%), errors: 0
Duration: 2.995055353s
Events/sec: 16694.18
Avg latency: 1.339216ms
P90 latency: 1.68929ms
P95 latency: 1.894111ms
P99 latency: 3.956722ms
Bottom 10% Avg latency: 779.552µs
Wiping database between tests...
RunBurstPatternTest (Badger)..
=== Burst Pattern Test ===
Burst completed: 5000 events in 287.657346ms
Burst completed: 5000 events in 297.188663ms
Burst completed: 5000 events in 367.265309ms
Burst completed: 5000 events in 331.9274ms
Burst completed: 5000 events in 304.066462ms
Burst completed: 5000 events in 310.832609ms
Burst completed: 5000 events in 268.076751ms
Burst completed: 5000 events in 264.808751ms
Burst completed: 5000 events in 267.153131ms
Burst completed: 5000 events in 269.523097ms
Burst test completed: 50000 events in 7.973932498s, errors: 0
Events/sec: 6270.43
Wiping database between tests...
RunMixedReadWriteTest (Badger)..
=== Mixed Read/Write Test ===
Generating 1000 unique synthetic events (minimum 300 bytes each)...
Generated 1000 events:
Average content size: 312 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database for read tests...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Mixed test completed: 25000 writes, 25000 reads in 24.337287687s
Combined ops/sec: 2054.46
Wiping database between tests...
RunQueryTest (Badger)..
=== Query Test ===
Generating 10000 unique synthetic events (minimum 300 bytes each)...
Generated 10000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 10000 events for query tests...
Query test completed: 406493 queries in 1m0.003860956s
Queries/sec: 6774.45
Avg query latency: 2.248129ms
P95 query latency: 8.401333ms
P99 query latency: 12.724368ms
Wiping database between tests...
RunConcurrentQueryStoreTest (Badger)..
=== Concurrent Query/Store Test ===
Generating 5000 unique synthetic events (minimum 300 bytes each)...
Generated 5000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 5000 events for concurrent query/store test...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Concurrent test completed: 318750 operations (268750 queries, 50000 writes) in 1m0.003885697s
Operations/sec: 5312.16
Avg latency: 1.416974ms
Avg query latency: 1.494262ms
Avg write latency: 1.001551ms
P95 latency: 3.592498ms
P99 latency: 8.935176ms
=== Badger benchmark completed ===
================================================================================
BENCHMARK REPORT
================================================================================
Test: Peak Throughput
Duration: 2.995055353s
Total Events: 50000
Events/sec: 16694.18
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 168 MB
Avg Latency: 1.339216ms
P90 Latency: 1.68929ms
P95 Latency: 1.894111ms
P99 Latency: 3.956722ms
Bottom 10% Avg Latency: 779.552µs
----------------------------------------
Test: Burst Pattern
Duration: 7.973932498s
Total Events: 50000
Events/sec: 6270.43
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 200 MB
Avg Latency: 1.281976ms
P90 Latency: 1.779141ms
P95 Latency: 2.087148ms
P99 Latency: 3.70878ms
Bottom 10% Avg Latency: 616.517µs
----------------------------------------
Test: Mixed Read/Write
Duration: 24.337287687s
Total Events: 50000
Events/sec: 2054.46
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 167 MB
Avg Latency: 393.526µs
P90 Latency: 818.886µs
P95 Latency: 910.529µs
P99 Latency: 1.137331ms
Bottom 10% Avg Latency: 1.057702ms
----------------------------------------
Test: Query Performance
Duration: 1m0.003860956s
Total Events: 406493
Events/sec: 6774.45
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 218 MB
Avg Latency: 2.248129ms
P90 Latency: 6.801515ms
P95 Latency: 8.401333ms
P99 Latency: 12.724368ms
Bottom 10% Avg Latency: 9.254973ms
----------------------------------------
Test: Concurrent Query/Store
Duration: 1m0.003885697s
Total Events: 318750
Events/sec: 5312.16
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 145 MB
Avg Latency: 1.416974ms
P90 Latency: 2.911313ms
P95 Latency: 3.592498ms
P99 Latency: 8.935176ms
Bottom 10% Avg Latency: 5.052685ms
----------------------------------------
Report saved to: /tmp/benchmark_rely-sqlite_8/benchmark_report.txt
AsciiDoc report saved to: /tmp/benchmark_rely-sqlite_8/benchmark_report.adoc
RELAY_NAME: rely-sqlite
RELAY_URL: ws://rely-sqlite:3334
TEST_TIMESTAMP: 2025-12-03T22:23:41+00:00
BENCHMARK_CONFIG:
Events: 50000
Workers: 24
Duration: 60s

View File

@@ -0,0 +1,201 @@
Starting Nostr Relay Benchmark (Badger Backend)
Data Directory: /tmp/benchmark_strfry_8
Events: 50000, Workers: 24, Duration: 1m0s
1764801635484762 migrating to version 1... /build/pkg/database/migrations.go:68
1764801635484837 migrating to version 2... /build/pkg/database/migrations.go:75
1764801635484863 migrating to version 3... /build/pkg/database/migrations.go:82
1764801635484869 cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304
1764801635484879 cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349
1764801635484894 migrating to version 4... /build/pkg/database/migrations.go:89
1764801635484899 converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357
1764801635484909 found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446
1764801635484915 migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555
1764801635484931 migrating to version 5... /build/pkg/database/migrations.go:96
1764801635484936 re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562
1764801635484945 found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649
1764801635484951 no events need re-encoding /build/pkg/database/migrations.go:652
1764801635484969 migrating to version 6... /build/pkg/database/migrations.go:103
1764801635484974 converting events to compact serial-reference format... /build/pkg/database/migrations.go:706
1764801635484993 found 0 events to convert to compact format /build/pkg/database/migrations.go:846
1764801635485001 no events need conversion /build/pkg/database/migrations.go:849
╔════════════════════════════════════════════════════════╗
║ BADGER BACKEND BENCHMARK SUITE ║
╚════════════════════════════════════════════════════════╝
=== Starting Badger benchmark ===
RunPeakThroughputTest (Badger)..
=== Peak Throughput Test ===
2025/12/03 22:40:35 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so
Events saved: 50000/50000 (100.0%), errors: 0
Duration: 2.809857459s
Events/sec: 17794.50
Avg latency: 1.192717ms
P90 latency: 1.483896ms
P95 latency: 1.645564ms
P99 latency: 3.557014ms
Bottom 10% Avg latency: 676.594µs
Wiping database between tests...
RunBurstPatternTest (Badger)..
=== Burst Pattern Test ===
Burst completed: 5000 events in 277.530017ms
Burst completed: 5000 events in 298.041629ms
Burst completed: 5000 events in 282.179602ms
Burst completed: 5000 events in 291.10499ms
Burst completed: 5000 events in 337.732105ms
Burst completed: 5000 events in 419.28426ms
Burst completed: 5000 events in 273.162241ms
Burst completed: 5000 events in 266.443777ms
Burst completed: 5000 events in 276.847799ms
Burst completed: 5000 events in 268.986549ms
Burst test completed: 50000 events in 7.997424399s, errors: 0
Events/sec: 6252.01
Wiping database between tests...
RunMixedReadWriteTest (Badger)..
=== Mixed Read/Write Test ===
Generating 1000 unique synthetic events (minimum 300 bytes each)...
Generated 1000 events:
Average content size: 312 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database for read tests...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Mixed test completed: 25000 writes, 25000 reads in 24.336991819s
Combined ops/sec: 2054.49
Wiping database between tests...
RunQueryTest (Badger)..
=== Query Test ===
Generating 10000 unique synthetic events (minimum 300 bytes each)...
Generated 10000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 10000 events for query tests...
Query test completed: 405590 queries in 1m0.005592222s
Queries/sec: 6759.20
Avg query latency: 2.253836ms
P95 query latency: 8.385881ms
P99 query latency: 12.734892ms
Wiping database between tests...
RunConcurrentQueryStoreTest (Badger)..
=== Concurrent Query/Store Test ===
Generating 5000 unique synthetic events (minimum 300 bytes each)...
Generated 5000 events:
Average content size: 313 bytes
All events are unique (incremental timestamps)
All events are properly signed
Pre-populating database with 5000 events for concurrent query/store test...
Generating 50000 unique synthetic events (minimum 300 bytes each)...
Generated 50000 events:
Average content size: 314 bytes
All events are unique (incremental timestamps)
All events are properly signed
Concurrent test completed: 318685 operations (268685 queries, 50000 writes) in 1m0.004113189s
Operations/sec: 5311.05
Avg latency: 1.408868ms
Avg query latency: 1.488688ms
Avg write latency: 979.939µs
P95 latency: 3.553949ms
P99 latency: 8.372585ms
=== Badger benchmark completed ===
================================================================================
BENCHMARK REPORT
================================================================================
Test: Peak Throughput
Duration: 2.809857459s
Total Events: 50000
Events/sec: 17794.50
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 153 MB
Avg Latency: 1.192717ms
P90 Latency: 1.483896ms
P95 Latency: 1.645564ms
P99 Latency: 3.557014ms
Bottom 10% Avg Latency: 676.594µs
----------------------------------------
Test: Burst Pattern
Duration: 7.997424399s
Total Events: 50000
Events/sec: 6252.01
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 285 MB
Avg Latency: 1.270724ms
P90 Latency: 1.812071ms
P95 Latency: 2.251457ms
P99 Latency: 3.733049ms
Bottom 10% Avg Latency: 565.205µs
----------------------------------------
Test: Mixed Read/Write
Duration: 24.336991819s
Total Events: 50000
Events/sec: 2054.49
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 166 MB
Avg Latency: 389.259µs
P90 Latency: 819.049µs
P95 Latency: 915.623µs
P99 Latency: 1.128529ms
Bottom 10% Avg Latency: 1.043578ms
----------------------------------------
Test: Query Performance
Duration: 1m0.005592222s
Total Events: 405590
Events/sec: 6759.20
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 211 MB
Avg Latency: 2.253836ms
P90 Latency: 6.794068ms
P95 Latency: 8.385881ms
P99 Latency: 12.734892ms
Bottom 10% Avg Latency: 9.272721ms
----------------------------------------
Test: Concurrent Query/Store
Duration: 1m0.004113189s
Total Events: 318685
Events/sec: 5311.05
Success Rate: 100.0%
Concurrent Workers: 24
Memory Used: 234 MB
Avg Latency: 1.408868ms
P90 Latency: 2.883582ms
P95 Latency: 3.553949ms
P99 Latency: 8.372585ms
Bottom 10% Avg Latency: 4.976512ms
----------------------------------------
Report saved to: /tmp/benchmark_strfry_8/benchmark_report.txt
AsciiDoc report saved to: /tmp/benchmark_strfry_8/benchmark_report.adoc
RELAY_NAME: strfry
RELAY_URL: ws://strfry:8080
TEST_TIMESTAMP: 2025-12-03T22:43:51+00:00
BENCHMARK_CONFIG:
Events: 50000
Workers: 24
Duration: 60s

View File

@@ -136,17 +136,17 @@ echo "Preparing data directories at ${DATA_BASE}..."
if [ "$USE_RAMDISK" = true ]; then
# Create ramdisk directories
mkdir -p "${DATA_BASE}"/{next-orly-badger,next-orly-dgraph,next-orly-neo4j,dgraph-zero,dgraph-alpha,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,rely-sqlite,postgres}
chmod 777 "${DATA_BASE}"/{next-orly-badger,next-orly-dgraph,next-orly-neo4j,dgraph-zero,dgraph-alpha,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,rely-sqlite,postgres}
mkdir -p "${DATA_BASE}"/{next-orly-badger,next-orly-neo4j,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,rely-sqlite,postgres}
chmod 777 "${DATA_BASE}"/{next-orly-badger,next-orly-neo4j,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,rely-sqlite,postgres}
else
# Create disk directories (relative path)
mkdir -p data/{next-orly-badger,next-orly-dgraph,next-orly-neo4j,dgraph-zero,dgraph-alpha,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,rely-sqlite,postgres}
chmod 777 data/{next-orly-badger,next-orly-dgraph,next-orly-neo4j,dgraph-zero,dgraph-alpha,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,rely-sqlite,postgres}
mkdir -p data/{next-orly-badger,next-orly-neo4j,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,rely-sqlite,postgres}
chmod 777 data/{next-orly-badger,next-orly-neo4j,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,rely-sqlite,postgres}
fi
echo "Building fresh Docker images..."
# Force rebuild to pick up latest code changes
$DOCKER_COMPOSE $COMPOSE_FILES build --no-cache benchmark-runner next-orly-badger next-orly-dgraph next-orly-neo4j rely-sqlite
$DOCKER_COMPOSE $COMPOSE_FILES build --no-cache benchmark-runner next-orly-badger next-orly-neo4j rely-sqlite
echo ""
echo "Starting benchmark suite..."