Browse Source
Removed old benchmark reports and detailed logs from the repository to clean up unnecessary files. These reports appear to be auto-generated and no longer relevant for ongoing development.main
43 changed files with 1025 additions and 3270 deletions
@ -0,0 +1,18 @@ |
|||||||
|
# Exclude heavy or host-specific data from Docker build context |
||||||
|
# Fixes: failed to solve: error from sender: open cmd/benchmark/data/postgres: permission denied |
||||||
|
|
||||||
|
# Benchmark data and reports (mounted at runtime via volumes) |
||||||
|
cmd/benchmark/data/ |
||||||
|
cmd/benchmark/reports/ |
||||||
|
|
||||||
|
# VCS and OS cruft |
||||||
|
.git |
||||||
|
.gitignore |
||||||
|
**/.DS_Store |
||||||
|
**/Thumbs.db |
||||||
|
|
||||||
|
# Go build cache and binaries |
||||||
|
**/bin/ |
||||||
|
**/dist/ |
||||||
|
**/build/ |
||||||
|
**/*.out |
||||||
@ -1,140 +0,0 @@ |
|||||||
================================================================ |
|
||||||
NOSTR RELAY BENCHMARK AGGREGATE REPORT |
|
||||||
================================================================ |
|
||||||
Generated: 2025-09-12T20:02:26+00:00 |
|
||||||
Benchmark Configuration: |
|
||||||
Events per test: 10000 |
|
||||||
Concurrent workers: 8 |
|
||||||
Test duration: 60s |
|
||||||
|
|
||||||
Relays tested: 6 |
|
||||||
|
|
||||||
================================================================ |
|
||||||
SUMMARY BY RELAY |
|
||||||
================================================================ |
|
||||||
|
|
||||||
Relay: next-orly |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 17901.30 |
|
||||||
Events/sec: 1504.52 |
|
||||||
Events/sec: 17901.30 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 433.058µs |
|
||||||
Avg Latency: 182.813µs |
|
||||||
Avg Latency: 9.086952ms |
|
||||||
P95 Latency: 456.738µs |
|
||||||
P95 Latency: 152.86µs |
|
||||||
P95 Latency: 18.156339ms |
|
||||||
|
|
||||||
Relay: khatru-sqlite |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 14291.70 |
|
||||||
Events/sec: 1530.29 |
|
||||||
Events/sec: 14291.70 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 545.724µs |
|
||||||
Avg Latency: 205.962µs |
|
||||||
Avg Latency: 9.092604ms |
|
||||||
P95 Latency: 473.43µs |
|
||||||
P95 Latency: 165.525µs |
|
||||||
P95 Latency: 19.302571ms |
|
||||||
|
|
||||||
Relay: khatru-badger |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 16351.11 |
|
||||||
Events/sec: 1539.25 |
|
||||||
Events/sec: 16351.11 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 474.016µs |
|
||||||
Avg Latency: 226.602µs |
|
||||||
Avg Latency: 9.930935ms |
|
||||||
P95 Latency: 479.03µs |
|
||||||
P95 Latency: 239.525µs |
|
||||||
P95 Latency: 17.75358ms |
|
||||||
|
|
||||||
Relay: relayer-basic |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 16522.60 |
|
||||||
Events/sec: 1537.71 |
|
||||||
Events/sec: 16522.60 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 466.066µs |
|
||||||
Avg Latency: 215.609µs |
|
||||||
Avg Latency: 9.851217ms |
|
||||||
P95 Latency: 514.849µs |
|
||||||
P95 Latency: 141.91µs |
|
||||||
P95 Latency: 23.101412ms |
|
||||||
|
|
||||||
Relay: strfry |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 15346.12 |
|
||||||
Events/sec: 1534.88 |
|
||||||
Events/sec: 15346.12 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 506.51µs |
|
||||||
Avg Latency: 216.564µs |
|
||||||
Avg Latency: 9.938991ms |
|
||||||
P95 Latency: 590.442µs |
|
||||||
P95 Latency: 267.91µs |
|
||||||
P95 Latency: 19.784708ms |
|
||||||
|
|
||||||
Relay: nostr-rs-relay |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 15199.95 |
|
||||||
Events/sec: 1533.87 |
|
||||||
Events/sec: 15199.95 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 508.699µs |
|
||||||
Avg Latency: 217.187µs |
|
||||||
Avg Latency: 9.38757ms |
|
||||||
P95 Latency: 1.011413ms |
|
||||||
P95 Latency: 130.018µs |
|
||||||
P95 Latency: 19.250416ms |
|
||||||
|
|
||||||
|
|
||||||
================================================================ |
|
||||||
DETAILED RESULTS |
|
||||||
================================================================ |
|
||||||
|
|
||||||
Individual relay reports are available in: |
|
||||||
- /reports/run_20250912_195729/khatru-badger_results.txt |
|
||||||
- /reports/run_20250912_195729/khatru-sqlite_results.txt |
|
||||||
- /reports/run_20250912_195729/next-orly_results.txt |
|
||||||
- /reports/run_20250912_195729/nostr-rs-relay_results.txt |
|
||||||
- /reports/run_20250912_195729/relayer-basic_results.txt |
|
||||||
- /reports/run_20250912_195729/strfry_results.txt |
|
||||||
|
|
||||||
================================================================ |
|
||||||
BENCHMARK COMPARISON TABLE |
|
||||||
================================================================ |
|
||||||
|
|
||||||
Relay Status Peak Tput/s Avg Latency Success Rate |
|
||||||
---- ------ ----------- ----------- ------------ |
|
||||||
next-orly OK 17901.30 433.058µs 100.0% |
|
||||||
khatru-sqlite OK 14291.70 545.724µs 100.0% |
|
||||||
khatru-badger OK 16351.11 474.016µs 100.0% |
|
||||||
relayer-basic OK 16522.60 466.066µs 100.0% |
|
||||||
strfry OK 15346.12 506.51µs 100.0% |
|
||||||
nostr-rs-relay OK 15199.95 508.699µs 100.0% |
|
||||||
|
|
||||||
================================================================ |
|
||||||
End of Report |
|
||||||
================================================================ |
|
||||||
@ -1,104 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_khatru-badger_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912195906053114 INF /tmp/benchmark_khatru-badger_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912195906053741 INF /tmp/benchmark_khatru-badger_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912195906053768 INF /tmp/benchmark_khatru-badger_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912195906054020 INF (*types.Uint32)(0xc00570406c)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912195906054071 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 611.579176ms |
|
||||||
Events/sec: 16351.11 |
|
||||||
Avg latency: 474.016µs |
|
||||||
P95 latency: 479.03µs |
|
||||||
P99 latency: 594.73µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 160.976517ms |
|
||||||
Burst completed: 1000 events in 153.010415ms |
|
||||||
Burst completed: 1000 events in 146.10015ms |
|
||||||
Burst completed: 1000 events in 148.403729ms |
|
||||||
Burst completed: 1000 events in 141.681801ms |
|
||||||
Burst completed: 1000 events in 154.663067ms |
|
||||||
Burst completed: 1000 events in 135.960988ms |
|
||||||
Burst completed: 1000 events in 136.240589ms |
|
||||||
Burst completed: 1000 events in 141.75454ms |
|
||||||
Burst completed: 1000 events in 152.485379ms |
|
||||||
Burst test completed: 10000 events in 6.496690038s |
|
||||||
Events/sec: 1539.25 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 37.695370694s |
|
||||||
Combined ops/sec: 265.28 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 611.579176ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 16351.11 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 154 MB |
|
||||||
Avg Latency: 474.016µs |
|
||||||
P95 Latency: 479.03µs |
|
||||||
P99 Latency: 594.73µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.496690038s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1539.25 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 207 MB |
|
||||||
Avg Latency: 226.602µs |
|
||||||
P95 Latency: 239.525µs |
|
||||||
P99 Latency: 168.561µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 37.695370694s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 265.28 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 132 MB |
|
||||||
Avg Latency: 9.930935ms |
|
||||||
P95 Latency: 17.75358ms |
|
||||||
P99 Latency: 24.256293ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_khatru-badger_8/benchmark_report.txt |
|
||||||
20250912195950858706 INF /tmp/benchmark_khatru-badger_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912195951643646 INF /tmp/benchmark_khatru-badger_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 01. Size: 21 MiB of 21 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912195951645255 INF /tmp/benchmark_khatru-badger_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: khatru-badger |
|
||||||
RELAY_URL: ws://khatru-badger:3334 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T19:59:51+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -1,104 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_khatru-sqlite_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912195817361580 INF /tmp/benchmark_khatru-sqlite_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912195817362030 INF /tmp/benchmark_khatru-sqlite_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912195817362064 INF /tmp/benchmark_khatru-sqlite_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912195817362711 INF (*types.Uint32)(0xc00000005c)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912195817362777 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 699.706889ms |
|
||||||
Events/sec: 14291.70 |
|
||||||
Avg latency: 545.724µs |
|
||||||
P95 latency: 473.43µs |
|
||||||
P99 latency: 478.349µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 138.253122ms |
|
||||||
Burst completed: 1000 events in 153.709429ms |
|
||||||
Burst completed: 1000 events in 158.711026ms |
|
||||||
Burst completed: 1000 events in 152.54677ms |
|
||||||
Burst completed: 1000 events in 144.735244ms |
|
||||||
Burst completed: 1000 events in 153.236893ms |
|
||||||
Burst completed: 1000 events in 150.180515ms |
|
||||||
Burst completed: 1000 events in 154.733588ms |
|
||||||
Burst completed: 1000 events in 151.252182ms |
|
||||||
Burst completed: 1000 events in 150.610613ms |
|
||||||
Burst test completed: 10000 events in 6.534724469s |
|
||||||
Events/sec: 1530.29 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 35.563312501s |
|
||||||
Combined ops/sec: 281.19 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 699.706889ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 14291.70 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 154 MB |
|
||||||
Avg Latency: 545.724µs |
|
||||||
P95 Latency: 473.43µs |
|
||||||
P99 Latency: 478.349µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.534724469s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1530.29 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 208 MB |
|
||||||
Avg Latency: 205.962µs |
|
||||||
P95 Latency: 165.525µs |
|
||||||
P99 Latency: 253.411µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 35.563312501s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 281.19 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 146 MB |
|
||||||
Avg Latency: 9.092604ms |
|
||||||
P95 Latency: 19.302571ms |
|
||||||
P99 Latency: 16.944829ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_khatru-sqlite_8/benchmark_report.txt |
|
||||||
20250912195900161526 INF /tmp/benchmark_khatru-sqlite_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912195900909573 INF /tmp/benchmark_khatru-sqlite_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 01. Size: 21 MiB of 21 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912195900911092 INF /tmp/benchmark_khatru-sqlite_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: khatru-sqlite |
|
||||||
RELAY_URL: ws://khatru-sqlite:3334 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T19:59:01+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -1,104 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_next-orly_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912195729240522 INF /tmp/benchmark_next-orly_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912195729241087 INF /tmp/benchmark_next-orly_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912195729241168 INF /tmp/benchmark_next-orly_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912195729241759 INF (*types.Uint32)(0xc0001de49c)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912195729241847 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 558.618706ms |
|
||||||
Events/sec: 17901.30 |
|
||||||
Avg latency: 433.058µs |
|
||||||
P95 latency: 456.738µs |
|
||||||
P99 latency: 337.231µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 172.949275ms |
|
||||||
Burst completed: 1000 events in 175.209401ms |
|
||||||
Burst completed: 1000 events in 156.532197ms |
|
||||||
Burst completed: 1000 events in 157.913421ms |
|
||||||
Burst completed: 1000 events in 151.37659ms |
|
||||||
Burst completed: 1000 events in 161.938783ms |
|
||||||
Burst completed: 1000 events in 168.47761ms |
|
||||||
Burst completed: 1000 events in 159.951768ms |
|
||||||
Burst completed: 1000 events in 170.308111ms |
|
||||||
Burst completed: 1000 events in 146.767432ms |
|
||||||
Burst test completed: 10000 events in 6.646634323s |
|
||||||
Events/sec: 1504.52 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 35.548232107s |
|
||||||
Combined ops/sec: 281.31 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 558.618706ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 17901.30 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 154 MB |
|
||||||
Avg Latency: 433.058µs |
|
||||||
P95 Latency: 456.738µs |
|
||||||
P99 Latency: 337.231µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.646634323s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1504.52 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 207 MB |
|
||||||
Avg Latency: 182.813µs |
|
||||||
P95 Latency: 152.86µs |
|
||||||
P99 Latency: 204.198µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 35.548232107s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 281.31 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 215 MB |
|
||||||
Avg Latency: 9.086952ms |
|
||||||
P95 Latency: 18.156339ms |
|
||||||
P99 Latency: 24.346573ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_next-orly_8/benchmark_report.txt |
|
||||||
20250912195811996353 INF /tmp/benchmark_next-orly_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912195812308400 INF /tmp/benchmark_next-orly_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 01. Size: 21 MiB of 21 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912195812310341 INF /tmp/benchmark_next-orly_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: next-orly |
|
||||||
RELAY_URL: ws://next-orly:8080 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T19:58:12+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -1,104 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_nostr-rs-relay_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912200137539643 INF /tmp/benchmark_nostr-rs-relay_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912200137540391 INF /tmp/benchmark_nostr-rs-relay_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912200137540449 INF /tmp/benchmark_nostr-rs-relay_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912200137540903 INF (*types.Uint32)(0xc0001c24cc)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912200137540961 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 657.896815ms |
|
||||||
Events/sec: 15199.95 |
|
||||||
Avg latency: 508.699µs |
|
||||||
P95 latency: 1.011413ms |
|
||||||
P99 latency: 710.782µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 149.389787ms |
|
||||||
Burst completed: 1000 events in 138.154354ms |
|
||||||
Burst completed: 1000 events in 139.952633ms |
|
||||||
Burst completed: 1000 events in 148.684306ms |
|
||||||
Burst completed: 1000 events in 154.779586ms |
|
||||||
Burst completed: 1000 events in 163.72717ms |
|
||||||
Burst completed: 1000 events in 142.665132ms |
|
||||||
Burst completed: 1000 events in 151.637082ms |
|
||||||
Burst completed: 1000 events in 143.018896ms |
|
||||||
Burst completed: 1000 events in 157.963802ms |
|
||||||
Burst test completed: 10000 events in 6.519459944s |
|
||||||
Events/sec: 1533.87 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 36.26569002s |
|
||||||
Combined ops/sec: 275.74 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 657.896815ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 15199.95 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 153 MB |
|
||||||
Avg Latency: 508.699µs |
|
||||||
P95 Latency: 1.011413ms |
|
||||||
P99 Latency: 710.782µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.519459944s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1533.87 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 206 MB |
|
||||||
Avg Latency: 217.187µs |
|
||||||
P95 Latency: 130.018µs |
|
||||||
P99 Latency: 261.728µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 36.26569002s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 275.74 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 225 MB |
|
||||||
Avg Latency: 9.38757ms |
|
||||||
P95 Latency: 19.250416ms |
|
||||||
P99 Latency: 20.049957ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_nostr-rs-relay_8/benchmark_report.txt |
|
||||||
20250912200220985006 INF /tmp/benchmark_nostr-rs-relay_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912200221295381 INF /tmp/benchmark_nostr-rs-relay_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 01. Size: 21 MiB of 21 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912200221297677 INF /tmp/benchmark_nostr-rs-relay_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: nostr-rs-relay |
|
||||||
RELAY_URL: ws://nostr-rs-relay:8080 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T20:02:21+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -1,104 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_relayer-basic_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912195956808180 INF /tmp/benchmark_relayer-basic_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912195956808720 INF /tmp/benchmark_relayer-basic_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912195956808755 INF /tmp/benchmark_relayer-basic_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912195956809102 INF (*types.Uint32)(0xc0001bc04c)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912195956809190 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 605.231707ms |
|
||||||
Events/sec: 16522.60 |
|
||||||
Avg latency: 466.066µs |
|
||||||
P95 latency: 514.849µs |
|
||||||
P99 latency: 451.358µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 149.715312ms |
|
||||||
Burst completed: 1000 events in 146.385191ms |
|
||||||
Burst completed: 1000 events in 147.010481ms |
|
||||||
Burst completed: 1000 events in 151.671062ms |
|
||||||
Burst completed: 1000 events in 143.215087ms |
|
||||||
Burst completed: 1000 events in 137.331431ms |
|
||||||
Burst completed: 1000 events in 155.735079ms |
|
||||||
Burst completed: 1000 events in 161.246126ms |
|
||||||
Burst completed: 1000 events in 140.174417ms |
|
||||||
Burst completed: 1000 events in 144.819799ms |
|
||||||
Burst test completed: 10000 events in 6.503155987s |
|
||||||
Events/sec: 1537.71 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 37.45410417s |
|
||||||
Combined ops/sec: 266.99 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 605.231707ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 16522.60 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 152 MB |
|
||||||
Avg Latency: 466.066µs |
|
||||||
P95 Latency: 514.849µs |
|
||||||
P99 Latency: 451.358µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.503155987s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1537.71 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 203 MB |
|
||||||
Avg Latency: 215.609µs |
|
||||||
P95 Latency: 141.91µs |
|
||||||
P99 Latency: 204.819µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 37.45410417s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 266.99 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 148 MB |
|
||||||
Avg Latency: 9.851217ms |
|
||||||
P95 Latency: 23.101412ms |
|
||||||
P99 Latency: 17.889412ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_relayer-basic_8/benchmark_report.txt |
|
||||||
20250912200041372670 INF /tmp/benchmark_relayer-basic_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912200041686782 INF /tmp/benchmark_relayer-basic_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 01. Size: 21 MiB of 21 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912200041689009 INF /tmp/benchmark_relayer-basic_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: relayer-basic |
|
||||||
RELAY_URL: ws://relayer-basic:7447 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T20:00:41+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -1,35 +0,0 @@ |
|||||||
= NOSTR Relay Benchmark Results |
|
||||||
|
|
||||||
Generated from: aggregate_report.txt |
|
||||||
|
|
||||||
[cols="1,^1,^1,^1,^1,^1,^1",options="header"] |
|
||||||
|=== |
|
||||||
| Metric | next-orly | khatru-sqlite | khatru-badger | relayer-basic | strfry | nostr-rs-relay |
|
||||||
|
|
||||||
| Store Events/sec |
|
||||||
| 17901.30 | 14291.70 | 16351.11 | 16522.60 | 15346.12 | 15199.95 |
|
||||||
|
|
||||||
| Store Avg Latency #1 |
|
||||||
| 433.058µs | 545.724µs | 474.016µs | 466.066µs | 506.51µs | 508.699µs |
|
||||||
|
|
||||||
| Store P95 Latency #1 |
|
||||||
| 456.738µs | 473.43µs | 479.03µs | 514.849µs | 590.442µs | 1.011413ms |
|
||||||
|
|
||||||
| Query Events/sec #2 |
|
||||||
| 1504.52 | 1530.29 | 1539.25 | 1537.71 | 1534.88 | 1533.87 |
|
||||||
|
|
||||||
| Query Avg Latency #2 |
|
||||||
| 182.813µs | 205.962µs | 226.602µs | 215.609µs | 216.564µs | 217.187µs |
|
||||||
|
|
||||||
| Query P95 Latency #2 |
|
||||||
| 152.86µs | 165.525µs | 239.525µs | 141.91µs | 267.91µs | 130.018µs |
|
||||||
|
|
||||||
| Concurrent Store/Query Events/sec #3 |
|
||||||
| 17901.30 | 14291.70 | 16351.11 | 16522.60 | 15346.12 | 15199.95 |
|
||||||
|
|
||||||
| Concurrent Store/Query Avg Latency #3 |
|
||||||
| 9.086952ms | 9.092604ms | 9.930935ms | 9.851217ms | 9.938991ms | 9.38757ms |
|
||||||
|
|
||||||
| Concurrent Store/Query P95 Latency #3 |
|
||||||
| 18.156339ms | 19.302571ms | 17.75358ms | 23.101412ms | 19.784708ms | 19.250416ms |
|
||||||
|=== |
|
||||||
@ -1,104 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_strfry_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912200046745432 INF /tmp/benchmark_strfry_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912200046746116 INF /tmp/benchmark_strfry_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912200046746193 INF /tmp/benchmark_strfry_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912200046746576 INF (*types.Uint32)(0xc0002a9c4c)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912200046746636 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 651.630667ms |
|
||||||
Events/sec: 15346.12 |
|
||||||
Avg latency: 506.51µs |
|
||||||
P95 latency: 590.442µs |
|
||||||
P99 latency: 278.399µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 148.701372ms |
|
||||||
Burst completed: 1000 events in 161.333951ms |
|
||||||
Burst completed: 1000 events in 146.993646ms |
|
||||||
Burst completed: 1000 events in 155.768019ms |
|
||||||
Burst completed: 1000 events in 143.83944ms |
|
||||||
Burst completed: 1000 events in 156.208347ms |
|
||||||
Burst completed: 1000 events in 150.769887ms |
|
||||||
Burst completed: 1000 events in 140.217044ms |
|
||||||
Burst completed: 1000 events in 150.831164ms |
|
||||||
Burst completed: 1000 events in 135.759058ms |
|
||||||
Burst test completed: 10000 events in 6.515183689s |
|
||||||
Events/sec: 1534.88 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 37.667054484s |
|
||||||
Combined ops/sec: 265.48 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 651.630667ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 15346.12 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 152 MB |
|
||||||
Avg Latency: 506.51µs |
|
||||||
P95 Latency: 590.442µs |
|
||||||
P99 Latency: 278.399µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.515183689s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1534.88 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 203 MB |
|
||||||
Avg Latency: 216.564µs |
|
||||||
P95 Latency: 267.91µs |
|
||||||
P99 Latency: 310.46µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 37.667054484s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 265.48 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 136 MB |
|
||||||
Avg Latency: 9.938991ms |
|
||||||
P95 Latency: 19.784708ms |
|
||||||
P99 Latency: 18.788985ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_strfry_8/benchmark_report.txt |
|
||||||
20250912200131581470 INF /tmp/benchmark_strfry_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912200132372653 INF /tmp/benchmark_strfry_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 01. Size: 21 MiB of 21 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912200132384548 INF /tmp/benchmark_strfry_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: strfry |
|
||||||
RELAY_URL: ws://strfry:8080 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T20:01:32+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -1,140 +0,0 @@ |
|||||||
================================================================ |
|
||||||
NOSTR RELAY BENCHMARK AGGREGATE REPORT |
|
||||||
================================================================ |
|
||||||
Generated: 2025-09-12T22:43:29+00:00 |
|
||||||
Benchmark Configuration: |
|
||||||
Events per test: 10000 |
|
||||||
Concurrent workers: 8 |
|
||||||
Test duration: 60s |
|
||||||
|
|
||||||
Relays tested: 6 |
|
||||||
|
|
||||||
================================================================ |
|
||||||
SUMMARY BY RELAY |
|
||||||
================================================================ |
|
||||||
|
|
||||||
Relay: next-orly |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 18056.94 |
|
||||||
Events/sec: 1492.32 |
|
||||||
Events/sec: 16750.82 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 428.869µs |
|
||||||
Bottom 10% Avg Latency: 643.51µs |
|
||||||
Avg Latency: 178.04µs |
|
||||||
P95 Latency: 607.997µs |
|
||||||
P95 Latency: 243.954µs |
|
||||||
P95 Latency: 21.665387ms |
|
||||||
|
|
||||||
Relay: khatru-sqlite |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 17635.76 |
|
||||||
Events/sec: 1510.39 |
|
||||||
Events/sec: 16509.10 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 437.941µs |
|
||||||
Bottom 10% Avg Latency: 659.71µs |
|
||||||
Avg Latency: 203.563µs |
|
||||||
P95 Latency: 621.964µs |
|
||||||
P95 Latency: 330.729µs |
|
||||||
P95 Latency: 21.838576ms |
|
||||||
|
|
||||||
Relay: khatru-badger |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 17312.60 |
|
||||||
Events/sec: 1508.54 |
|
||||||
Events/sec: 15933.99 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 448.778µs |
|
||||||
Bottom 10% Avg Latency: 664.268µs |
|
||||||
Avg Latency: 196.38µs |
|
||||||
P95 Latency: 633.085µs |
|
||||||
P95 Latency: 293.579µs |
|
||||||
P95 Latency: 22.727378ms |
|
||||||
|
|
||||||
Relay: relayer-basic |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 15155.00 |
|
||||||
Events/sec: 1545.44 |
|
||||||
Events/sec: 14255.58 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 513.243µs |
|
||||||
Bottom 10% Avg Latency: 864.746µs |
|
||||||
Avg Latency: 273.645µs |
|
||||||
P95 Latency: 792.685µs |
|
||||||
P95 Latency: 498.989µs |
|
||||||
P95 Latency: 22.924497ms |
|
||||||
|
|
||||||
Relay: strfry |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 15245.05 |
|
||||||
Events/sec: 1533.59 |
|
||||||
Events/sec: 15507.07 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 510.383µs |
|
||||||
Bottom 10% Avg Latency: 831.211µs |
|
||||||
Avg Latency: 223.359µs |
|
||||||
P95 Latency: 769.085µs |
|
||||||
P95 Latency: 378.145µs |
|
||||||
P95 Latency: 22.152884ms |
|
||||||
|
|
||||||
Relay: nostr-rs-relay |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 16312.24 |
|
||||||
Events/sec: 1502.05 |
|
||||||
Events/sec: 14131.23 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 476.418µs |
|
||||||
Bottom 10% Avg Latency: 722.179µs |
|
||||||
Avg Latency: 182.765µs |
|
||||||
P95 Latency: 686.836µs |
|
||||||
P95 Latency: 257.082µs |
|
||||||
P95 Latency: 20.680962ms |
|
||||||
|
|
||||||
|
|
||||||
================================================================ |
|
||||||
DETAILED RESULTS |
|
||||||
================================================================ |
|
||||||
|
|
||||||
Individual relay reports are available in: |
|
||||||
- /reports/run_20250912_222649/khatru-badger_results.txt |
|
||||||
- /reports/run_20250912_222649/khatru-sqlite_results.txt |
|
||||||
- /reports/run_20250912_222649/next-orly_results.txt |
|
||||||
- /reports/run_20250912_222649/nostr-rs-relay_results.txt |
|
||||||
- /reports/run_20250912_222649/relayer-basic_results.txt |
|
||||||
- /reports/run_20250912_222649/strfry_results.txt |
|
||||||
|
|
||||||
================================================================ |
|
||||||
BENCHMARK COMPARISON TABLE |
|
||||||
================================================================ |
|
||||||
|
|
||||||
Relay Status Peak Tput/s Avg Latency Success Rate |
|
||||||
---- ------ ----------- ----------- ------------ |
|
||||||
next-orly OK 18056.94 428.869µs 100.0% |
|
||||||
khatru-sqlite OK 17635.76 437.941µs 100.0% |
|
||||||
khatru-badger OK 17312.60 448.778µs 100.0% |
|
||||||
relayer-basic OK 15155.00 513.243µs 100.0% |
|
||||||
strfry OK 15245.05 510.383µs 100.0% |
|
||||||
nostr-rs-relay OK 16312.24 476.418µs 100.0% |
|
||||||
|
|
||||||
================================================================ |
|
||||||
End of Report |
|
||||||
================================================================ |
|
||||||
@ -1,190 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_khatru-badger_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912223222496620 INF /tmp/benchmark_khatru-badger_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912223222497154 INF /tmp/benchmark_khatru-badger_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912223222497184 INF /tmp/benchmark_khatru-badger_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912223222497402 INF (*types.Uint32)(0xc0000100fc)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912223222497454 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Starting test round 1/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 577.614152ms |
|
||||||
Events/sec: 17312.60 |
|
||||||
Avg latency: 448.778µs |
|
||||||
P90 latency: 584.783µs |
|
||||||
P95 latency: 633.085µs |
|
||||||
P99 latency: 749.537µs |
|
||||||
Bottom 10% Avg latency: 664.268µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 161.62554ms |
|
||||||
Burst completed: 1000 events in 154.666063ms |
|
||||||
Burst completed: 1000 events in 149.999903ms |
|
||||||
Burst completed: 1000 events in 169.141205ms |
|
||||||
Burst completed: 1000 events in 153.987041ms |
|
||||||
Burst completed: 1000 events in 141.227756ms |
|
||||||
Burst completed: 1000 events in 168.989116ms |
|
||||||
Burst completed: 1000 events in 161.032171ms |
|
||||||
Burst completed: 1000 events in 182.128996ms |
|
||||||
Burst completed: 1000 events in 161.86147ms |
|
||||||
Burst test completed: 10000 events in 6.628942674s |
|
||||||
Events/sec: 1508.54 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 36.466065909s |
|
||||||
Combined ops/sec: 274.23 |
|
||||||
|
|
||||||
Pausing 10s before next round... |
|
||||||
|
|
||||||
=== Starting test round 2/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 627.589155ms |
|
||||||
Events/sec: 15933.99 |
|
||||||
Avg latency: 489.881µs |
|
||||||
P90 latency: 628.857µs |
|
||||||
P95 latency: 679.363µs |
|
||||||
P99 latency: 828.307µs |
|
||||||
Bottom 10% Avg latency: 716.862µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 150.262543ms |
|
||||||
Burst completed: 1000 events in 148.027109ms |
|
||||||
Burst completed: 1000 events in 139.184066ms |
|
||||||
Burst completed: 1000 events in 147.196277ms |
|
||||||
Burst completed: 1000 events in 141.143557ms |
|
||||||
Burst completed: 1000 events in 138.727197ms |
|
||||||
Burst completed: 1000 events in 143.014207ms |
|
||||||
Burst completed: 1000 events in 143.355055ms |
|
||||||
Burst completed: 1000 events in 162.573956ms |
|
||||||
Burst completed: 1000 events in 142.875393ms |
|
||||||
Burst test completed: 10000 events in 6.475822519s |
|
||||||
Events/sec: 1544.21 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 4742 reads in 1m0.036644794s |
|
||||||
Combined ops/sec: 162.27 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 577.614152ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 17312.60 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 152 MB |
|
||||||
Avg Latency: 448.778µs |
|
||||||
P90 Latency: 584.783µs |
|
||||||
P95 Latency: 633.085µs |
|
||||||
P99 Latency: 749.537µs |
|
||||||
Bottom 10% Avg Latency: 664.268µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.628942674s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1508.54 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 204 MB |
|
||||||
Avg Latency: 196.38µs |
|
||||||
P90 Latency: 260.706µs |
|
||||||
P95 Latency: 293.579µs |
|
||||||
P99 Latency: 385.694µs |
|
||||||
Bottom 10% Avg Latency: 317.532µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 36.466065909s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 274.23 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 128 MB |
|
||||||
Avg Latency: 9.448363ms |
|
||||||
P90 Latency: 20.988228ms |
|
||||||
P95 Latency: 22.727378ms |
|
||||||
P99 Latency: 25.094784ms |
|
||||||
Bottom 10% Avg Latency: 23.01277ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 627.589155ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 15933.99 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 124 MB |
|
||||||
Avg Latency: 489.881µs |
|
||||||
P90 Latency: 628.857µs |
|
||||||
P95 Latency: 679.363µs |
|
||||||
P99 Latency: 828.307µs |
|
||||||
Bottom 10% Avg Latency: 716.862µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.475822519s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1544.21 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 170 MB |
|
||||||
Avg Latency: 215.418µs |
|
||||||
P90 Latency: 287.237µs |
|
||||||
P95 Latency: 339.025µs |
|
||||||
P99 Latency: 510.682µs |
|
||||||
Bottom 10% Avg Latency: 378.172µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 1m0.036644794s |
|
||||||
Total Events: 9742 |
|
||||||
Events/sec: 162.27 |
|
||||||
Success Rate: 97.4% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 181 MB |
|
||||||
Avg Latency: 19.714686ms |
|
||||||
P90 Latency: 44.573506ms |
|
||||||
P95 Latency: 46.895555ms |
|
||||||
P99 Latency: 50.425027ms |
|
||||||
Bottom 10% Avg Latency: 47.384489ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_khatru-badger_8/benchmark_report.txt |
|
||||||
AsciiDoc report saved to: /tmp/benchmark_khatru-badger_8/benchmark_report.adoc |
|
||||||
20250912223503335481 INF /tmp/benchmark_khatru-badger_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912223504473151 INF /tmp/benchmark_khatru-badger_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 02. Size: 41 MiB of 41 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912223504475627 INF /tmp/benchmark_khatru-badger_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: khatru-badger |
|
||||||
RELAY_URL: ws://khatru-badger:3334 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T22:35:04+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -1,190 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_khatru-sqlite_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912222936300616 INF /tmp/benchmark_khatru-sqlite_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912222936301606 INF /tmp/benchmark_khatru-sqlite_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912222936301647 INF /tmp/benchmark_khatru-sqlite_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912222936301987 INF (*types.Uint32)(0xc0001c23f0)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912222936302060 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Starting test round 1/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 567.02963ms |
|
||||||
Events/sec: 17635.76 |
|
||||||
Avg latency: 437.941µs |
|
||||||
P90 latency: 574.133µs |
|
||||||
P95 latency: 621.964µs |
|
||||||
P99 latency: 768.473µs |
|
||||||
Bottom 10% Avg latency: 659.71µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 172.012448ms |
|
||||||
Burst completed: 1000 events in 145.502701ms |
|
||||||
Burst completed: 1000 events in 153.928098ms |
|
||||||
Burst completed: 1000 events in 169.995269ms |
|
||||||
Burst completed: 1000 events in 147.617375ms |
|
||||||
Burst completed: 1000 events in 157.211387ms |
|
||||||
Burst completed: 1000 events in 153.332744ms |
|
||||||
Burst completed: 1000 events in 172.374938ms |
|
||||||
Burst completed: 1000 events in 167.518935ms |
|
||||||
Burst completed: 1000 events in 155.211871ms |
|
||||||
Burst test completed: 10000 events in 6.620785215s |
|
||||||
Events/sec: 1510.39 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 35.700582016s |
|
||||||
Combined ops/sec: 280.11 |
|
||||||
|
|
||||||
Pausing 10s before next round... |
|
||||||
|
|
||||||
=== Starting test round 2/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 605.726547ms |
|
||||||
Events/sec: 16509.10 |
|
||||||
Avg latency: 470.577µs |
|
||||||
P90 latency: 609.791µs |
|
||||||
P95 latency: 660.256µs |
|
||||||
P99 latency: 788.641µs |
|
||||||
Bottom 10% Avg latency: 687.847µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 135.310723ms |
|
||||||
Burst completed: 1000 events in 166.604305ms |
|
||||||
Burst completed: 1000 events in 141.453184ms |
|
||||||
Burst completed: 1000 events in 146.579351ms |
|
||||||
Burst completed: 1000 events in 154.453638ms |
|
||||||
Burst completed: 1000 events in 156.212516ms |
|
||||||
Burst completed: 1000 events in 142.309354ms |
|
||||||
Burst completed: 1000 events in 152.268188ms |
|
||||||
Burst completed: 1000 events in 144.187829ms |
|
||||||
Burst completed: 1000 events in 147.609002ms |
|
||||||
Burst test completed: 10000 events in 6.508461808s |
|
||||||
Events/sec: 1536.46 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 4662 reads in 1m0.040595326s |
|
||||||
Combined ops/sec: 160.92 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 567.02963ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 17635.76 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 154 MB |
|
||||||
Avg Latency: 437.941µs |
|
||||||
P90 Latency: 574.133µs |
|
||||||
P95 Latency: 621.964µs |
|
||||||
P99 Latency: 768.473µs |
|
||||||
Bottom 10% Avg Latency: 659.71µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.620785215s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1510.39 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 208 MB |
|
||||||
Avg Latency: 203.563µs |
|
||||||
P90 Latency: 274.152µs |
|
||||||
P95 Latency: 330.729µs |
|
||||||
P99 Latency: 521.483µs |
|
||||||
Bottom 10% Avg Latency: 378.237µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 35.700582016s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 280.11 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 232 MB |
|
||||||
Avg Latency: 9.150925ms |
|
||||||
P90 Latency: 20.1434ms |
|
||||||
P95 Latency: 21.838576ms |
|
||||||
P99 Latency: 24.0106ms |
|
||||||
Bottom 10% Avg Latency: 22.04901ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 605.726547ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 16509.10 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 139 MB |
|
||||||
Avg Latency: 470.577µs |
|
||||||
P90 Latency: 609.791µs |
|
||||||
P95 Latency: 660.256µs |
|
||||||
P99 Latency: 788.641µs |
|
||||||
Bottom 10% Avg Latency: 687.847µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.508461808s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1536.46 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 182 MB |
|
||||||
Avg Latency: 199.49µs |
|
||||||
P90 Latency: 261.427µs |
|
||||||
P95 Latency: 294.771µs |
|
||||||
P99 Latency: 406.814µs |
|
||||||
Bottom 10% Avg Latency: 332.083µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 1m0.040595326s |
|
||||||
Total Events: 9662 |
|
||||||
Events/sec: 160.92 |
|
||||||
Success Rate: 96.6% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 204 MB |
|
||||||
Avg Latency: 19.935937ms |
|
||||||
P90 Latency: 44.802034ms |
|
||||||
P95 Latency: 48.282589ms |
|
||||||
P99 Latency: 52.169026ms |
|
||||||
Bottom 10% Avg Latency: 48.641697ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_khatru-sqlite_8/benchmark_report.txt |
|
||||||
AsciiDoc report saved to: /tmp/benchmark_khatru-sqlite_8/benchmark_report.adoc |
|
||||||
20250912223216370778 INF /tmp/benchmark_khatru-sqlite_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912223217349356 INF /tmp/benchmark_khatru-sqlite_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 02. Size: 41 MiB of 41 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912223217352393 INF /tmp/benchmark_khatru-sqlite_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: khatru-sqlite |
|
||||||
RELAY_URL: ws://khatru-sqlite:3334 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T22:32:17+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -1,190 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_next-orly_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912222650025765 INF /tmp/benchmark_next-orly_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912222650026455 INF /tmp/benchmark_next-orly_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912222650026497 INF /tmp/benchmark_next-orly_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912222650026747 INF (*types.Uint32)(0xc0001f63cc)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912222650026778 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Starting test round 1/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 553.803776ms |
|
||||||
Events/sec: 18056.94 |
|
||||||
Avg latency: 428.869µs |
|
||||||
P90 latency: 558.663µs |
|
||||||
P95 latency: 607.997µs |
|
||||||
P99 latency: 749.787µs |
|
||||||
Bottom 10% Avg latency: 643.51µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 190.801687ms |
|
||||||
Burst completed: 1000 events in 168.170564ms |
|
||||||
Burst completed: 1000 events in 161.16591ms |
|
||||||
Burst completed: 1000 events in 161.43364ms |
|
||||||
Burst completed: 1000 events in 148.293941ms |
|
||||||
Burst completed: 1000 events in 172.875177ms |
|
||||||
Burst completed: 1000 events in 178.930553ms |
|
||||||
Burst completed: 1000 events in 161.052715ms |
|
||||||
Burst completed: 1000 events in 162.071335ms |
|
||||||
Burst completed: 1000 events in 171.849756ms |
|
||||||
Burst test completed: 10000 events in 6.70096222s |
|
||||||
Events/sec: 1492.32 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 35.645619485s |
|
||||||
Combined ops/sec: 280.54 |
|
||||||
|
|
||||||
Pausing 10s before next round... |
|
||||||
|
|
||||||
=== Starting test round 2/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 596.985601ms |
|
||||||
Events/sec: 16750.82 |
|
||||||
Avg latency: 465.438µs |
|
||||||
P90 latency: 594.151µs |
|
||||||
P95 latency: 636.592µs |
|
||||||
P99 latency: 757.953µs |
|
||||||
Bottom 10% Avg latency: 672.673µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 152.121077ms |
|
||||||
Burst completed: 1000 events in 160.774367ms |
|
||||||
Burst completed: 1000 events in 137.913676ms |
|
||||||
Burst completed: 1000 events in 142.916647ms |
|
||||||
Burst completed: 1000 events in 166.771131ms |
|
||||||
Burst completed: 1000 events in 160.016244ms |
|
||||||
Burst completed: 1000 events in 156.369302ms |
|
||||||
Burst completed: 1000 events in 158.850666ms |
|
||||||
Burst completed: 1000 events in 154.842287ms |
|
||||||
Burst completed: 1000 events in 146.828122ms |
|
||||||
Burst test completed: 10000 events in 6.557799732s |
|
||||||
Events/sec: 1524.90 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 4782 reads in 1m0.043775785s |
|
||||||
Combined ops/sec: 162.91 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 553.803776ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 18056.94 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 153 MB |
|
||||||
Avg Latency: 428.869µs |
|
||||||
P90 Latency: 558.663µs |
|
||||||
P95 Latency: 607.997µs |
|
||||||
P99 Latency: 749.787µs |
|
||||||
Bottom 10% Avg Latency: 643.51µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.70096222s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1492.32 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 204 MB |
|
||||||
Avg Latency: 178.04µs |
|
||||||
P90 Latency: 224.367µs |
|
||||||
P95 Latency: 243.954µs |
|
||||||
P99 Latency: 318.225µs |
|
||||||
Bottom 10% Avg Latency: 264.418µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 35.645619485s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 280.54 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 120 MB |
|
||||||
Avg Latency: 9.118653ms |
|
||||||
P90 Latency: 19.852346ms |
|
||||||
P95 Latency: 21.665387ms |
|
||||||
P99 Latency: 23.946919ms |
|
||||||
Bottom 10% Avg Latency: 21.867062ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 596.985601ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 16750.82 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 121 MB |
|
||||||
Avg Latency: 465.438µs |
|
||||||
P90 Latency: 594.151µs |
|
||||||
P95 Latency: 636.592µs |
|
||||||
P99 Latency: 757.953µs |
|
||||||
Bottom 10% Avg Latency: 672.673µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.557799732s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1524.90 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 167 MB |
|
||||||
Avg Latency: 189.538µs |
|
||||||
P90 Latency: 247.511µs |
|
||||||
P95 Latency: 274.011µs |
|
||||||
P99 Latency: 360.977µs |
|
||||||
Bottom 10% Avg Latency: 296.967µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 1m0.043775785s |
|
||||||
Total Events: 9782 |
|
||||||
Events/sec: 162.91 |
|
||||||
Success Rate: 97.8% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 193 MB |
|
||||||
Avg Latency: 19.562536ms |
|
||||||
P90 Latency: 43.431835ms |
|
||||||
P95 Latency: 46.326204ms |
|
||||||
P99 Latency: 50.533302ms |
|
||||||
Bottom 10% Avg Latency: 46.979603ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_next-orly_8/benchmark_report.txt |
|
||||||
AsciiDoc report saved to: /tmp/benchmark_next-orly_8/benchmark_report.adoc |
|
||||||
20250912222930150767 INF /tmp/benchmark_next-orly_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912222931147258 INF /tmp/benchmark_next-orly_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 02. Size: 41 MiB of 41 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912222931149928 INF /tmp/benchmark_next-orly_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: next-orly |
|
||||||
RELAY_URL: ws://next-orly:8080 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T22:29:31+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -1,190 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_nostr-rs-relay_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912224044213613 INF /tmp/benchmark_nostr-rs-relay_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912224044214094 INF /tmp/benchmark_nostr-rs-relay_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912224044214130 INF /tmp/benchmark_nostr-rs-relay_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912224044214381 INF (*types.Uint32)(0xc000233c3c)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912224044214413 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Starting test round 1/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 613.036589ms |
|
||||||
Events/sec: 16312.24 |
|
||||||
Avg latency: 476.418µs |
|
||||||
P90 latency: 627.852µs |
|
||||||
P95 latency: 686.836µs |
|
||||||
P99 latency: 841.471µs |
|
||||||
Bottom 10% Avg latency: 722.179µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 156.218882ms |
|
||||||
Burst completed: 1000 events in 170.25756ms |
|
||||||
Burst completed: 1000 events in 164.944293ms |
|
||||||
Burst completed: 1000 events in 162.767866ms |
|
||||||
Burst completed: 1000 events in 148.744622ms |
|
||||||
Burst completed: 1000 events in 163.556351ms |
|
||||||
Burst completed: 1000 events in 172.007512ms |
|
||||||
Burst completed: 1000 events in 159.806858ms |
|
||||||
Burst completed: 1000 events in 168.086258ms |
|
||||||
Burst completed: 1000 events in 164.931889ms |
|
||||||
Burst test completed: 10000 events in 6.657581804s |
|
||||||
Events/sec: 1502.05 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 34.850355805s |
|
||||||
Combined ops/sec: 286.94 |
|
||||||
|
|
||||||
Pausing 10s before next round... |
|
||||||
|
|
||||||
=== Starting test round 2/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 707.652249ms |
|
||||||
Events/sec: 14131.23 |
|
||||||
Avg latency: 551.706µs |
|
||||||
P90 latency: 724.937µs |
|
||||||
P95 latency: 790.563µs |
|
||||||
P99 latency: 980.677µs |
|
||||||
Bottom 10% Avg latency: 836.659µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 164.62419ms |
|
||||||
Burst completed: 1000 events in 155.938167ms |
|
||||||
Burst completed: 1000 events in 132.903056ms |
|
||||||
Burst completed: 1000 events in 142.377596ms |
|
||||||
Burst completed: 1000 events in 155.024184ms |
|
||||||
Burst completed: 1000 events in 147.095521ms |
|
||||||
Burst completed: 1000 events in 150.027389ms |
|
||||||
Burst completed: 1000 events in 152.873043ms |
|
||||||
Burst completed: 1000 events in 150.635479ms |
|
||||||
Burst completed: 1000 events in 146.45553ms |
|
||||||
Burst test completed: 10000 events in 6.519122877s |
|
||||||
Events/sec: 1533.95 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 4806 reads in 1m0.03930731s |
|
||||||
Combined ops/sec: 163.33 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 613.036589ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 16312.24 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 154 MB |
|
||||||
Avg Latency: 476.418µs |
|
||||||
P90 Latency: 627.852µs |
|
||||||
P95 Latency: 686.836µs |
|
||||||
P99 Latency: 841.471µs |
|
||||||
Bottom 10% Avg Latency: 722.179µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.657581804s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1502.05 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 209 MB |
|
||||||
Avg Latency: 182.765µs |
|
||||||
P90 Latency: 234.409µs |
|
||||||
P95 Latency: 257.082µs |
|
||||||
P99 Latency: 330.764µs |
|
||||||
Bottom 10% Avg Latency: 277.843µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 34.850355805s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 286.94 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 221 MB |
|
||||||
Avg Latency: 8.802188ms |
|
||||||
P90 Latency: 19.075904ms |
|
||||||
P95 Latency: 20.680962ms |
|
||||||
P99 Latency: 22.78326ms |
|
||||||
Bottom 10% Avg Latency: 20.897398ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 707.652249ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 14131.23 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 120 MB |
|
||||||
Avg Latency: 551.706µs |
|
||||||
P90 Latency: 724.937µs |
|
||||||
P95 Latency: 790.563µs |
|
||||||
P99 Latency: 980.677µs |
|
||||||
Bottom 10% Avg Latency: 836.659µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.519122877s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1533.95 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 168 MB |
|
||||||
Avg Latency: 204.873µs |
|
||||||
P90 Latency: 271.569µs |
|
||||||
P95 Latency: 329.28µs |
|
||||||
P99 Latency: 558.829µs |
|
||||||
Bottom 10% Avg Latency: 380.136µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 1m0.03930731s |
|
||||||
Total Events: 9806 |
|
||||||
Events/sec: 163.33 |
|
||||||
Success Rate: 98.1% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 164 MB |
|
||||||
Avg Latency: 19.506135ms |
|
||||||
P90 Latency: 43.206775ms |
|
||||||
P95 Latency: 45.944446ms |
|
||||||
P99 Latency: 49.910436ms |
|
||||||
Bottom 10% Avg Latency: 46.417943ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
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 |
|
||||||
20250912224323628137 INF /tmp/benchmark_nostr-rs-relay_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912224324180883 INF /tmp/benchmark_nostr-rs-relay_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 02. Size: 41 MiB of 41 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912224324184069 INF /tmp/benchmark_nostr-rs-relay_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: nostr-rs-relay |
|
||||||
RELAY_URL: ws://nostr-rs-relay:8080 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T22:43:24+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -1,190 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_relayer-basic_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912223509638362 INF /tmp/benchmark_relayer-basic_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912223509638864 INF /tmp/benchmark_relayer-basic_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912223509638903 INF /tmp/benchmark_relayer-basic_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912223509639558 INF (*types.Uint32)(0xc00570005c)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912223509639620 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Starting test round 1/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 659.848301ms |
|
||||||
Events/sec: 15155.00 |
|
||||||
Avg latency: 513.243µs |
|
||||||
P90 latency: 706.89µs |
|
||||||
P95 latency: 792.685µs |
|
||||||
P99 latency: 1.089215ms |
|
||||||
Bottom 10% Avg latency: 864.746µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 142.551144ms |
|
||||||
Burst completed: 1000 events in 137.426595ms |
|
||||||
Burst completed: 1000 events in 139.51501ms |
|
||||||
Burst completed: 1000 events in 143.683041ms |
|
||||||
Burst completed: 1000 events in 136.500167ms |
|
||||||
Burst completed: 1000 events in 139.573844ms |
|
||||||
Burst completed: 1000 events in 145.873173ms |
|
||||||
Burst completed: 1000 events in 144.256594ms |
|
||||||
Burst completed: 1000 events in 157.89329ms |
|
||||||
Burst completed: 1000 events in 153.882313ms |
|
||||||
Burst test completed: 10000 events in 6.47066659s |
|
||||||
Events/sec: 1545.44 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 37.483034098s |
|
||||||
Combined ops/sec: 266.79 |
|
||||||
|
|
||||||
Pausing 10s before next round... |
|
||||||
|
|
||||||
=== Starting test round 2/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 701.479526ms |
|
||||||
Events/sec: 14255.58 |
|
||||||
Avg latency: 544.692µs |
|
||||||
P90 latency: 742.997µs |
|
||||||
P95 latency: 845.975µs |
|
||||||
P99 latency: 1.147624ms |
|
||||||
Bottom 10% Avg latency: 913.45µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 143.063212ms |
|
||||||
Burst completed: 1000 events in 139.422008ms |
|
||||||
Burst completed: 1000 events in 138.184516ms |
|
||||||
Burst completed: 1000 events in 148.207616ms |
|
||||||
Burst completed: 1000 events in 137.663883ms |
|
||||||
Burst completed: 1000 events in 141.607643ms |
|
||||||
Burst completed: 1000 events in 143.668551ms |
|
||||||
Burst completed: 1000 events in 140.467359ms |
|
||||||
Burst completed: 1000 events in 139.860509ms |
|
||||||
Burst completed: 1000 events in 138.328306ms |
|
||||||
Burst test completed: 10000 events in 6.43971118s |
|
||||||
Events/sec: 1552.86 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 4870 reads in 1m0.034216467s |
|
||||||
Combined ops/sec: 164.41 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 659.848301ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 15155.00 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 153 MB |
|
||||||
Avg Latency: 513.243µs |
|
||||||
P90 Latency: 706.89µs |
|
||||||
P95 Latency: 792.685µs |
|
||||||
P99 Latency: 1.089215ms |
|
||||||
Bottom 10% Avg Latency: 864.746µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.47066659s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1545.44 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 206 MB |
|
||||||
Avg Latency: 273.645µs |
|
||||||
P90 Latency: 407.483µs |
|
||||||
P95 Latency: 498.989µs |
|
||||||
P99 Latency: 772.406µs |
|
||||||
Bottom 10% Avg Latency: 574.801µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 37.483034098s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 266.79 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 163 MB |
|
||||||
Avg Latency: 9.873363ms |
|
||||||
P90 Latency: 21.643466ms |
|
||||||
P95 Latency: 22.924497ms |
|
||||||
P99 Latency: 24.961324ms |
|
||||||
Bottom 10% Avg Latency: 23.201171ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 701.479526ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 14255.58 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 153 MB |
|
||||||
Avg Latency: 544.692µs |
|
||||||
P90 Latency: 742.997µs |
|
||||||
P95 Latency: 845.975µs |
|
||||||
P99 Latency: 1.147624ms |
|
||||||
Bottom 10% Avg Latency: 913.45µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.43971118s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1552.86 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 204 MB |
|
||||||
Avg Latency: 266.006µs |
|
||||||
P90 Latency: 402.683µs |
|
||||||
P95 Latency: 491.253µs |
|
||||||
P99 Latency: 715.735µs |
|
||||||
Bottom 10% Avg Latency: 553.762µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 1m0.034216467s |
|
||||||
Total Events: 9870 |
|
||||||
Events/sec: 164.41 |
|
||||||
Success Rate: 98.7% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 184 MB |
|
||||||
Avg Latency: 19.308183ms |
|
||||||
P90 Latency: 42.766459ms |
|
||||||
P95 Latency: 45.372157ms |
|
||||||
P99 Latency: 49.993951ms |
|
||||||
Bottom 10% Avg Latency: 46.189525ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_relayer-basic_8/benchmark_report.txt |
|
||||||
AsciiDoc report saved to: /tmp/benchmark_relayer-basic_8/benchmark_report.adoc |
|
||||||
20250912223751453794 INF /tmp/benchmark_relayer-basic_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912223752488197 INF /tmp/benchmark_relayer-basic_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 02. Size: 41 MiB of 41 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912223752491495 INF /tmp/benchmark_relayer-basic_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: relayer-basic |
|
||||||
RELAY_URL: ws://relayer-basic:7447 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T22:37:52+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -1,190 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_strfry_8 |
|
||||||
Events: 10000, Workers: 8, Duration: 1m0s |
|
||||||
20250912223757656112 INF /tmp/benchmark_strfry_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250912223757657685 INF /tmp/benchmark_strfry_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250912223757657767 INF /tmp/benchmark_strfry_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250912223757658314 INF (*types.Uint32)(0xc0055c63ac)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250912223757658385 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Starting test round 1/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 655.950723ms |
|
||||||
Events/sec: 15245.05 |
|
||||||
Avg latency: 510.383µs |
|
||||||
P90 latency: 690.815µs |
|
||||||
P95 latency: 769.085µs |
|
||||||
P99 latency: 1.000349ms |
|
||||||
Bottom 10% Avg latency: 831.211µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 168.844089ms |
|
||||||
Burst completed: 1000 events in 138.644286ms |
|
||||||
Burst completed: 1000 events in 167.717113ms |
|
||||||
Burst completed: 1000 events in 141.566337ms |
|
||||||
Burst completed: 1000 events in 141.186447ms |
|
||||||
Burst completed: 1000 events in 145.845582ms |
|
||||||
Burst completed: 1000 events in 142.834263ms |
|
||||||
Burst completed: 1000 events in 144.707595ms |
|
||||||
Burst completed: 1000 events in 144.096361ms |
|
||||||
Burst completed: 1000 events in 158.524931ms |
|
||||||
Burst test completed: 10000 events in 6.520630606s |
|
||||||
Events/sec: 1533.59 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 5000 reads in 36.04854491s |
|
||||||
Combined ops/sec: 277.40 |
|
||||||
|
|
||||||
Pausing 10s before next round... |
|
||||||
|
|
||||||
=== Starting test round 2/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 10000/10000 (100.0%) |
|
||||||
Duration: 644.867085ms |
|
||||||
Events/sec: 15507.07 |
|
||||||
Avg latency: 501.972µs |
|
||||||
P90 latency: 650.197µs |
|
||||||
P95 latency: 709.37µs |
|
||||||
P99 latency: 914.673µs |
|
||||||
Bottom 10% Avg latency: 754.969µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 1000 events in 133.763626ms |
|
||||||
Burst completed: 1000 events in 135.289448ms |
|
||||||
Burst completed: 1000 events in 136.874215ms |
|
||||||
Burst completed: 1000 events in 135.118277ms |
|
||||||
Burst completed: 1000 events in 139.247778ms |
|
||||||
Burst completed: 1000 events in 142.262475ms |
|
||||||
Burst completed: 1000 events in 141.21783ms |
|
||||||
Burst completed: 1000 events in 143.089554ms |
|
||||||
Burst completed: 1000 events in 148.027057ms |
|
||||||
Burst completed: 1000 events in 150.006497ms |
|
||||||
Burst test completed: 10000 events in 6.429121967s |
|
||||||
Events/sec: 1555.42 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 5000 writes, 4857 reads in 1m0.047885362s |
|
||||||
Combined ops/sec: 164.15 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 655.950723ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 15245.05 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 154 MB |
|
||||||
Avg Latency: 510.383µs |
|
||||||
P90 Latency: 690.815µs |
|
||||||
P95 Latency: 769.085µs |
|
||||||
P99 Latency: 1.000349ms |
|
||||||
Bottom 10% Avg Latency: 831.211µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.520630606s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1533.59 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 208 MB |
|
||||||
Avg Latency: 223.359µs |
|
||||||
P90 Latency: 321.256µs |
|
||||||
P95 Latency: 378.145µs |
|
||||||
P99 Latency: 530.597µs |
|
||||||
Bottom 10% Avg Latency: 412.953µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 36.04854491s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 277.40 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 222 MB |
|
||||||
Avg Latency: 9.309397ms |
|
||||||
P90 Latency: 20.403594ms |
|
||||||
P95 Latency: 22.152884ms |
|
||||||
P99 Latency: 24.513304ms |
|
||||||
Bottom 10% Avg Latency: 22.447709ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 644.867085ms |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 15507.07 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 125 MB |
|
||||||
Avg Latency: 501.972µs |
|
||||||
P90 Latency: 650.197µs |
|
||||||
P95 Latency: 709.37µs |
|
||||||
P99 Latency: 914.673µs |
|
||||||
Bottom 10% Avg Latency: 754.969µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 6.429121967s |
|
||||||
Total Events: 10000 |
|
||||||
Events/sec: 1555.42 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 170 MB |
|
||||||
Avg Latency: 239.454µs |
|
||||||
P90 Latency: 335.133µs |
|
||||||
P95 Latency: 408.012µs |
|
||||||
P99 Latency: 593.458µs |
|
||||||
Bottom 10% Avg Latency: 446.804µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 1m0.047885362s |
|
||||||
Total Events: 9857 |
|
||||||
Events/sec: 164.15 |
|
||||||
Success Rate: 98.6% |
|
||||||
Concurrent Workers: 8 |
|
||||||
Memory Used: 189 MB |
|
||||||
Avg Latency: 19.373297ms |
|
||||||
P90 Latency: 42.953055ms |
|
||||||
P95 Latency: 45.636867ms |
|
||||||
P99 Latency: 49.71977ms |
|
||||||
Bottom 10% Avg Latency: 46.144029ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_strfry_8/benchmark_report.txt |
|
||||||
AsciiDoc report saved to: /tmp/benchmark_strfry_8/benchmark_report.adoc |
|
||||||
20250912224038033173 INF /tmp/benchmark_strfry_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250912224039055498 INF /tmp/benchmark_strfry_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 02. Size: 41 MiB of 41 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250912224039058214 INF /tmp/benchmark_strfry_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: strfry |
|
||||||
RELAY_URL: ws://strfry:8080 |
|
||||||
TEST_TIMESTAMP: 2025-09-12T22:40:39+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 10000 |
|
||||||
Workers: 8 |
|
||||||
Duration: 60s |
|
||||||
@ -0,0 +1,87 @@ |
|||||||
|
package database |
||||||
|
|
||||||
|
import ( |
||||||
|
"bytes" |
||||||
|
"sort" |
||||||
|
"strconv" |
||||||
|
|
||||||
|
"github.com/dgraph-io/badger/v4" |
||||||
|
"lol.mleku.dev/chk" |
||||||
|
"lol.mleku.dev/log" |
||||||
|
"next.orly.dev/pkg/database/indexes" |
||||||
|
"next.orly.dev/pkg/database/indexes/types" |
||||||
|
"next.orly.dev/pkg/encoders/event" |
||||||
|
) |
||||||
|
|
||||||
|
// FetchEventsBySerials processes multiple serials in ascending order and retrieves
|
||||||
|
// the corresponding events from the database. It optimizes database access by
|
||||||
|
// sorting the serials and seeking to each one sequentially.
|
||||||
|
func (d *D) FetchEventsBySerials(serials []*types.Uint40) (evMap map[string]*event.E, err error) { |
||||||
|
log.T.F("FetchEventsBySerials: processing %d serials", len(serials)) |
||||||
|
|
||||||
|
// Initialize the result map
|
||||||
|
evMap = make(map[string]*event.E) |
||||||
|
|
||||||
|
// Return early if no serials are provided
|
||||||
|
if len(serials) == 0 { |
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
|
// Sort serials in ascending order for more efficient database access
|
||||||
|
sortedSerials := make([]*types.Uint40, len(serials)) |
||||||
|
copy(sortedSerials, serials) |
||||||
|
sort.Slice(sortedSerials, func(i, j int) bool { |
||||||
|
return sortedSerials[i].Get() < sortedSerials[j].Get() |
||||||
|
}) |
||||||
|
|
||||||
|
// Process all serials in a single transaction
|
||||||
|
if err = d.View( |
||||||
|
func(txn *badger.Txn) (err error) { |
||||||
|
// Create an iterator with default options
|
||||||
|
it := txn.NewIterator(badger.DefaultIteratorOptions) |
||||||
|
defer it.Close() |
||||||
|
|
||||||
|
// Process each serial sequentially
|
||||||
|
for _, ser := range sortedSerials { |
||||||
|
// Create the key for this serial
|
||||||
|
buf := new(bytes.Buffer) |
||||||
|
if err = indexes.EventEnc(ser).MarshalWrite(buf); chk.E(err) { |
||||||
|
continue |
||||||
|
} |
||||||
|
key := buf.Bytes() |
||||||
|
|
||||||
|
// Seek to this key in the database
|
||||||
|
it.Seek(key) |
||||||
|
if it.Valid() { |
||||||
|
item := it.Item() |
||||||
|
|
||||||
|
// Verify the key matches exactly (should always be true after a Seek)
|
||||||
|
if !bytes.Equal(item.Key(), key) { |
||||||
|
continue |
||||||
|
} |
||||||
|
|
||||||
|
// Get the item value
|
||||||
|
var v []byte |
||||||
|
if v, err = item.ValueCopy(nil); chk.E(err) { |
||||||
|
continue |
||||||
|
} |
||||||
|
|
||||||
|
// Unmarshal the event
|
||||||
|
ev := new(event.E) |
||||||
|
if err = ev.UnmarshalBinary(bytes.NewBuffer(v)); chk.E(err) { |
||||||
|
continue |
||||||
|
} |
||||||
|
|
||||||
|
// Store the event in the result map using the serial value as string key
|
||||||
|
evMap[strconv.FormatUint(ser.Get(), 10)] = ev |
||||||
|
} |
||||||
|
} |
||||||
|
return |
||||||
|
}, |
||||||
|
); chk.E(err) { |
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
|
log.T.F("FetchEventsBySerials: found %d events out of %d requested serials", len(evMap), len(serials)) |
||||||
|
return |
||||||
|
} |
||||||
@ -1,82 +0,0 @@ |
|||||||
#!/usr/bin/env bash |
|
||||||
set -euo pipefail |
|
||||||
|
|
||||||
OUT_DIR="/work/reports" |
|
||||||
BIN="/build/relay" |
|
||||||
CPU_DIR="/profiles/cpu" |
|
||||||
MEM_DIR="/profiles/mem" |
|
||||||
ALLOC_DIR="/profiles/alloc" |
|
||||||
REPORT="$OUT_DIR/profile-analysis.txt" |
|
||||||
|
|
||||||
mkdir -p "$OUT_DIR" |
|
||||||
|
|
||||||
# Helper: wait for any file matching a glob in a directory to exist and be non-empty |
|
||||||
wait_for_glob() { |
|
||||||
local dir="$1"; local pattern="$2"; local timeout=${3:-180}; local waited=0 |
|
||||||
echo "[analyze] Waiting for profiles in ${dir}/${pattern} (timeout ${timeout}s)..." >&2 |
|
||||||
while [[ $waited -lt $timeout ]]; do |
|
||||||
# shellcheck disable=SC2086 |
|
||||||
local f |
|
||||||
f=$(ls -1 ${dir}/${pattern} 2>/dev/null | head -n1 || true) |
|
||||||
if [[ -n "${f}" && -s "${f}" ]]; then |
|
||||||
echo "[analyze] Found: ${f}" >&2 |
|
||||||
echo -n "${f}" |
|
||||||
return 0 |
|
||||||
fi |
|
||||||
sleep 3; waited=$((waited+3)) |
|
||||||
done |
|
||||||
echo "" # return empty string |
|
||||||
return 1 |
|
||||||
} |
|
||||||
|
|
||||||
CPU_FILE=$(wait_for_glob "$CPU_DIR" "cpu*.pprof" 180 || true) |
|
||||||
MEM_FILE=$(wait_for_glob "$MEM_DIR" "*.pprof" 180 || true) |
|
||||||
ALLOC_FILE=$(wait_for_glob "$ALLOC_DIR" "*.pprof" 180 || true) |
|
||||||
|
|
||||||
if [[ -z "$CPU_FILE" ]]; then echo "[analyze] WARNING: CPU profile not found at $CPU_DIR" >&2; fi |
|
||||||
if [[ -z "$MEM_FILE" ]]; then echo "[analyze] WARNING: Mem profile not found at $MEM_DIR" >&2; fi |
|
||||||
if [[ -z "$ALLOC_FILE" ]]; then echo "[analyze] WARNING: Alloc profile not found at $ALLOC_DIR" >&2; fi |
|
||||||
|
|
||||||
{ |
|
||||||
echo "==== next.orly.dev Profiling Analysis ====" |
|
||||||
date |
|
||||||
echo |
|
||||||
|
|
||||||
if [[ -n "$CPU_FILE" && -s "$CPU_FILE" ]]; then |
|
||||||
echo "-- CPU Functions (full list by flat CPU) --" |
|
||||||
go tool pprof -top -nodecount=0 "$BIN" "$CPU_FILE" 2>/dev/null | sed '1,2d' |
|
||||||
echo |
|
||||||
else |
|
||||||
echo "CPU profile: not available" |
|
||||||
echo |
|
||||||
fi |
|
||||||
|
|
||||||
if [[ -n "$MEM_FILE" && -s "$MEM_FILE" ]]; then |
|
||||||
echo "-- Memory (In-Use Space) Functions (full list) --" |
|
||||||
go tool pprof -top -sample_index=inuse_space -nodecount=0 "$BIN" "$MEM_FILE" 2>/dev/null | sed '1,2d' |
|
||||||
echo |
|
||||||
else |
|
||||||
echo "Memory (in-use) profile: not available" |
|
||||||
echo |
|
||||||
fi |
|
||||||
|
|
||||||
if [[ -n "$ALLOC_FILE" && -s "$ALLOC_FILE" ]]; then |
|
||||||
echo "-- Allocations (Total Alloc Space) Functions (full list) --" |
|
||||||
go tool pprof -top -sample_index=alloc_space -nodecount=0 "$BIN" "$ALLOC_FILE" 2>/dev/null | sed '1,2d' |
|
||||||
echo |
|
||||||
echo "-- Allocation Frequency (Alloc Objects) Functions (full list) --" |
|
||||||
go tool pprof -top -sample_index=alloc_objects -nodecount=0 "$BIN" "$ALLOC_FILE" 2>/dev/null | sed '1,2d' |
|
||||||
echo |
|
||||||
else |
|
||||||
echo "Allocation profile: not available" |
|
||||||
echo |
|
||||||
fi |
|
||||||
|
|
||||||
echo "Notes:" |
|
||||||
echo "- CPU section identifies functions using the most CPU time." |
|
||||||
echo "- Memory section identifies which functions retain the most memory (in-use)." |
|
||||||
echo "- Allocations sections identify functions responsible for the most allocation volume and count, which correlates with GC pressure." |
|
||||||
echo "- Profiles are created by github.com/pkg/profile and may only be flushed when the relay process receives a shutdown; CPU profile often requires process exit." |
|
||||||
} > "$REPORT" |
|
||||||
|
|
||||||
echo "[analyze] Wrote report to $REPORT" >&2 |
|
||||||
@ -1,158 +0,0 @@ |
|||||||
services: |
|
||||||
# Build image for next.orly.dev relay (same as benchmark build) |
|
||||||
next-orly-image: |
|
||||||
build: |
|
||||||
context: .. |
|
||||||
dockerfile: cmd/benchmark/Dockerfile.next-orly |
|
||||||
image: next-orly:profiler |
|
||||||
|
|
||||||
# Run relay with CPU profiling |
|
||||||
next-orly-cpu: |
|
||||||
image: next-orly:profiler |
|
||||||
build: |
|
||||||
context: .. |
|
||||||
dockerfile: cmd/benchmark/Dockerfile.next-orly |
|
||||||
container_name: profiler-next-orly-cpu |
|
||||||
environment: |
|
||||||
- ORLY_DATA_DIR=/data |
|
||||||
- ORLY_LISTEN=0.0.0.0 |
|
||||||
- ORLY_PORT=8080 |
|
||||||
- ORLY_LOG_LEVEL=info |
|
||||||
- ORLY_PPROF=cpu |
|
||||||
- ORLY_PPROF_PATH=/profiles |
|
||||||
- ORLY_HEALTH_PORT=18080 |
|
||||||
- ORLY_ENABLE_SHUTDOWN=true |
|
||||||
volumes: |
|
||||||
- ./data/cpu:/data |
|
||||||
- ./profiles/cpu:/profiles |
|
||||||
ports: |
|
||||||
- "8101:8080" |
|
||||||
- "18081:18080" |
|
||||||
networks: |
|
||||||
- profiler-net |
|
||||||
healthcheck: |
|
||||||
test: ["CMD-SHELL", "code=$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8080 || echo 000); echo $$code | grep -E '^(101|200|400|404|426)$' >/dev/null"] |
|
||||||
interval: 15s |
|
||||||
timeout: 10s |
|
||||||
retries: 5 |
|
||||||
start_period: 20s |
|
||||||
|
|
||||||
# Run relay with in-use memory profiling |
|
||||||
next-orly-mem: |
|
||||||
image: next-orly:profiler |
|
||||||
build: |
|
||||||
context: .. |
|
||||||
dockerfile: cmd/benchmark/Dockerfile.next-orly |
|
||||||
container_name: profiler-next-orly-mem |
|
||||||
environment: |
|
||||||
- ORLY_DATA_DIR=/data |
|
||||||
- ORLY_LISTEN=0.0.0.0 |
|
||||||
- ORLY_PORT=8080 |
|
||||||
- ORLY_LOG_LEVEL=info |
|
||||||
- ORLY_PPROF=memory |
|
||||||
- ORLY_PPROF_PATH=/profiles |
|
||||||
- ORLY_HEALTH_PORT=18080 |
|
||||||
- ORLY_ENABLE_SHUTDOWN=true |
|
||||||
volumes: |
|
||||||
- ./data/mem:/data |
|
||||||
- ./profiles/mem:/profiles |
|
||||||
ports: |
|
||||||
- "8102:8080" |
|
||||||
- "18082:18080" |
|
||||||
networks: |
|
||||||
- profiler-net |
|
||||||
healthcheck: |
|
||||||
test: ["CMD-SHELL", "code=$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8080 || echo 000); echo $$code | grep -E '^(101|200|400|404|426)$' >/dev/null"] |
|
||||||
interval: 15s |
|
||||||
timeout: 10s |
|
||||||
retries: 5 |
|
||||||
start_period: 20s |
|
||||||
|
|
||||||
# Run relay with allocation profiling (alloc_space/alloc_objects) |
|
||||||
next-orly-alloc: |
|
||||||
image: next-orly:profiler |
|
||||||
build: |
|
||||||
context: .. |
|
||||||
dockerfile: cmd/benchmark/Dockerfile.next-orly |
|
||||||
container_name: profiler-next-orly-alloc |
|
||||||
environment: |
|
||||||
- ORLY_DATA_DIR=/data |
|
||||||
- ORLY_LISTEN=0.0.0.0 |
|
||||||
- ORLY_PORT=8080 |
|
||||||
- ORLY_LOG_LEVEL=info |
|
||||||
- ORLY_PPROF=allocation |
|
||||||
- ORLY_PPROF_PATH=/profiles |
|
||||||
- ORLY_HEALTH_PORT=18080 |
|
||||||
- ORLY_ENABLE_SHUTDOWN=true |
|
||||||
volumes: |
|
||||||
- ./data/alloc:/data |
|
||||||
- ./profiles/alloc:/profiles |
|
||||||
ports: |
|
||||||
- "8103:8080" |
|
||||||
- "18083:18080" |
|
||||||
networks: |
|
||||||
- profiler-net |
|
||||||
healthcheck: |
|
||||||
test: ["CMD-SHELL", "code=$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8080 || echo 000); echo $$code | grep -E '^(101|200|400|404|426)$' >/dev/null"] |
|
||||||
interval: 15s |
|
||||||
timeout: 10s |
|
||||||
retries: 5 |
|
||||||
start_period: 20s |
|
||||||
|
|
||||||
# Load generator using existing benchmark runner |
|
||||||
loadgen: |
|
||||||
build: |
|
||||||
context: .. |
|
||||||
dockerfile: cmd/benchmark/Dockerfile.benchmark |
|
||||||
container_name: profiler-loadgen |
|
||||||
depends_on: |
|
||||||
next-orly-cpu: |
|
||||||
condition: service_healthy |
|
||||||
next-orly-mem: |
|
||||||
condition: service_healthy |
|
||||||
next-orly-alloc: |
|
||||||
condition: service_healthy |
|
||||||
environment: |
|
||||||
- BENCHMARK_TARGETS=next-orly-cpu:8080,next-orly-mem:8080,next-orly-alloc:8080 |
|
||||||
- BENCHMARK_EVENTS=5000 |
|
||||||
- BENCHMARK_WORKERS=4 |
|
||||||
- BENCHMARK_DURATION=30s |
|
||||||
volumes: |
|
||||||
- ./reports:/reports |
|
||||||
networks: |
|
||||||
- profiler-net |
|
||||||
command: > |
|
||||||
sh -c " |
|
||||||
echo 'Waiting a bit before starting load...' && \ |
|
||||||
sleep 10 && \ |
|
||||||
/app/benchmark-runner --output-dir=/reports && \ |
|
||||||
echo 'Triggering relay shutdowns to flush profiles...' && \ |
|
||||||
curl -sS -X POST http://next-orly-cpu:18080/shutdown || true && \ |
|
||||||
curl -sS -X POST http://next-orly-mem:18080/shutdown || true && \ |
|
||||||
curl -sS -X POST http://next-orly-alloc:18080/shutdown || true && \ |
|
||||||
echo 'Load generation complete. Waiting for relays to exit...' && \ |
|
||||||
sleep 5 |
|
||||||
" |
|
||||||
|
|
||||||
# Analyzer service: use the builder stage so Go toolchain is available |
|
||||||
analyzer: |
|
||||||
build: |
|
||||||
context: .. |
|
||||||
dockerfile: cmd/benchmark/Dockerfile.next-orly |
|
||||||
target: builder |
|
||||||
container_name: profiler-analyzer |
|
||||||
depends_on: |
|
||||||
loadgen: |
|
||||||
condition: service_completed_successfully |
|
||||||
working_dir: /work |
|
||||||
volumes: |
|
||||||
- ./profiles:/profiles:ro |
|
||||||
- ./reports:/work/reports |
|
||||||
- ./analyze.sh:/work/analyze.sh:ro |
|
||||||
networks: |
|
||||||
- profiler-net |
|
||||||
command: ["bash", "-lc", "bash /work/analyze.sh"] |
|
||||||
|
|
||||||
networks: |
|
||||||
profiler-net: |
|
||||||
driver: bridge |
|
||||||
@ -1,191 +0,0 @@ |
|||||||
==== next.orly.dev Profiling Analysis ==== |
|
||||||
Sat Sep 13 15:15:09 UTC 2025 |
|
||||||
|
|
||||||
-- CPU Functions (full list by flat CPU) -- |
|
||||||
Type: cpu |
|
||||||
Time: Sep 13, 2025 at 3:08pm (UTC) |
|
||||||
Duration: 401.93s, Total samples = 2.67s ( 0.66%) |
|
||||||
Showing nodes accounting for 2.48s, 92.88% of 2.67s total |
|
||||||
Dropped 51 nodes (cum <= 0.01s) |
|
||||||
flat flat% sum% cum cum% |
|
||||||
0.78s 29.21% 29.21% 0.78s 29.21% internal/runtime/syscall.Syscall6 |
|
||||||
0.27s 10.11% 39.33% 0.27s 10.11% runtime.futex |
|
||||||
0.12s 4.49% 43.82% 0.12s 4.49% runtime.write1 |
|
||||||
0.11s 4.12% 47.94% 0.34s 12.73% runtime.stealWork |
|
||||||
0.09s 3.37% 51.31% 0.09s 3.37% runtime.read |
|
||||||
0.08s 3.00% 54.31% 1.94s 72.66% runtime.findRunnable |
|
||||||
0.08s 3.00% 57.30% 0.08s 3.00% runtime.pMask.read (inline) |
|
||||||
0.05s 1.87% 59.18% 0.06s 2.25% runtime.sellock |
|
||||||
0.05s 1.87% 61.05% 0.05s 1.87% runtime.unlock2 |
|
||||||
0.04s 1.50% 62.55% 0.43s 16.10% github.com/dgraph-io/badger/v4.(*levelsController).runCompactor |
|
||||||
0.04s 1.50% 64.04% 0.89s 33.33% runtime.netpoll |
|
||||||
0.04s 1.50% 65.54% 0.16s 5.99% runtime.selectgo |
|
||||||
0.03s 1.12% 66.67% 0.04s 1.50% github.com/dgraph-io/ristretto/v2/z.(*Closer).HasBeenClosed (inline) |
|
||||||
0.03s 1.12% 67.79% 0.03s 1.12% internal/runtime/atomic.(*Uint32).CompareAndSwap (inline) |
|
||||||
0.03s 1.12% 68.91% 0.04s 1.50% runtime.mallocgcSmallNoscan |
|
||||||
0.03s 1.12% 70.04% 0.03s 1.12% runtime.pMask.set (inline) |
|
||||||
0.03s 1.12% 71.16% 0.03s 1.12% runtime.releaseSudog |
|
||||||
0.03s 1.12% 72.28% 0.03s 1.12% sync/atomic.(*Int32).Add (inline) |
|
||||||
0.02s 0.75% 73.03% 0.02s 0.75% github.com/dgraph-io/badger/v4.(*compactStatus).delSize |
|
||||||
0.02s 0.75% 73.78% 0.08s 3.00% github.com/dgraph-io/badger/v4.(*levelsController).levelTargets |
|
||||||
0.02s 0.75% 74.53% 0.20s 7.49% github.com/dgraph-io/badger/v4.(*levelsController).pickCompactLevels |
|
||||||
0.02s 0.75% 75.28% 0.02s 0.75% internal/reflectlite.unpackEface (inline) |
|
||||||
0.02s 0.75% 76.03% 0.02s 0.75% internal/runtime/atomic.(*Uint32).Load (inline) |
|
||||||
0.02s 0.75% 76.78% 0.04s 1.50% runtime.(*mcache).prepareForSweep |
|
||||||
0.02s 0.75% 77.53% 0.02s 0.75% runtime.(*randomEnum).next (inline) |
|
||||||
0.02s 0.75% 78.28% 0.03s 1.12% runtime.casgstatus |
|
||||||
0.02s 0.75% 79.03% 0.03s 1.12% runtime.checkRunqsNoP |
|
||||||
0.02s 0.75% 79.78% 0.02s 0.75% runtime.execute |
|
||||||
0.02s 0.75% 80.52% 0.19s 7.12% runtime.futexsleep |
|
||||||
0.02s 0.75% 81.27% 0.02s 0.75% runtime.lock2 |
|
||||||
0.02s 0.75% 82.02% 0.02s 0.75% runtime.nanotime1 |
|
||||||
0.02s 0.75% 82.77% 0.02s 0.75% runtime.nextFreeFast (inline) |
|
||||||
0.02s 0.75% 83.52% 0.02s 0.75% runtime.pidleput |
|
||||||
0.02s 0.75% 84.27% 0.02s 0.75% runtime.runqget (inline) |
|
||||||
0.02s 0.75% 85.02% 2.10s 78.65% runtime.schedule |
|
||||||
0.02s 0.75% 85.77% 0.02s 0.75% runtime.traceEnabled (inline) |
|
||||||
0.02s 0.75% 86.52% 0.03s 1.12% time.Now |
|
||||||
0.02s 0.75% 87.27% 0.03s 1.12% time.Time.Add |
|
||||||
0.01s 0.37% 87.64% 0.04s 1.50% github.com/dgraph-io/badger/v4.(*levelHandler).getTotalSize |
|
||||||
0.01s 0.37% 88.01% 0.76s 28.46% internal/runtime/syscall.EpollWait |
|
||||||
0.01s 0.37% 88.39% 0.14s 5.24% runtime.(*timer).unlockAndRun |
|
||||||
0.01s 0.37% 88.76% 0.03s 1.12% runtime.(*waitq).dequeue (inline) |
|
||||||
0.01s 0.37% 89.14% 0.07s 2.62% runtime.acquirep |
|
||||||
0.01s 0.37% 89.51% 0.04s 1.50% runtime.checkTimersNoP |
|
||||||
0.01s 0.37% 89.89% 0.02s 0.75% runtime.mallocgcSmallScanNoHeader |
|
||||||
0.01s 0.37% 90.26% 0.02s 0.75% runtime.markroot |
|
||||||
0.01s 0.37% 90.64% 2.12s 79.40% runtime.mcall |
|
||||||
0.01s 0.37% 91.01% 2.11s 79.03% runtime.park_m |
|
||||||
0.01s 0.37% 91.39% 0.02s 0.75% runtime.traceAcquire (inline) |
|
||||||
0.01s 0.37% 91.76% 0.12s 4.49% runtime.wakep |
|
||||||
0.01s 0.37% 92.13% 0.13s 4.87% runtime.write |
|
||||||
0.01s 0.37% 92.51% 0.03s 1.12% sort.Slice |
|
||||||
0.01s 0.37% 92.88% 0.13s 4.87% time.sendTime |
|
||||||
0 0% 92.88% 0.02s 0.75% github.com/dgraph-io/badger/v4.(*DB).openMemTable |
|
||||||
0 0% 92.88% 0.02s 0.75% github.com/dgraph-io/badger/v4.(*DB).openMemTables |
|
||||||
0 0% 92.88% 0.20s 7.49% github.com/dgraph-io/badger/v4.(*levelsController).runCompactor.func3 |
|
||||||
0 0% 92.88% 0.02s 0.75% github.com/dgraph-io/badger/v4.(*logFile).Truncate |
|
||||||
0 0% 92.88% 0.03s 1.12% github.com/dgraph-io/badger/v4.Open |
|
||||||
0 0% 92.88% 0.02s 0.75% github.com/dgraph-io/ristretto/v2/z.(*MmapFile).Truncate |
|
||||||
0 0% 92.88% 0.02s 0.75% internal/poll.(*FD).Ftruncate |
|
||||||
0 0% 92.88% 0.02s 0.75% internal/poll.(*FD).Ftruncate.func1 (inline) |
|
||||||
0 0% 92.88% 0.02s 0.75% internal/poll.ignoringEINTR (inline) |
|
||||||
0 0% 92.88% 0.02s 0.75% internal/reflectlite.ValueOf (inline) |
|
||||||
0 0% 92.88% 0.03s 1.12% main.main |
|
||||||
0 0% 92.88% 0.03s 1.12% next.orly.dev/pkg/database.New |
|
||||||
0 0% 92.88% 0.02s 0.75% os.(*File).Truncate |
|
||||||
0 0% 92.88% 0.17s 6.37% runtime.(*timers).check |
|
||||||
0 0% 92.88% 0.14s 5.24% runtime.(*timers).run |
|
||||||
0 0% 92.88% 0.06s 2.25% runtime.chansend |
|
||||||
0 0% 92.88% 0.02s 0.75% runtime.convTslice |
|
||||||
0 0% 92.88% 0.10s 3.75% runtime.futexwakeup |
|
||||||
0 0% 92.88% 0.02s 0.75% runtime.gcBgMarkWorker |
|
||||||
0 0% 92.88% 0.02s 0.75% runtime.gcBgMarkWorker.func2 |
|
||||||
0 0% 92.88% 0.02s 0.75% runtime.gcDrain |
|
||||||
0 0% 92.88% 0.02s 0.75% runtime.gcDrainMarkWorkerDedicated (inline) |
|
||||||
0 0% 92.88% 0.03s 1.12% runtime.goready (inline) |
|
||||||
0 0% 92.88% 0.02s 0.75% runtime.lock (inline) |
|
||||||
0 0% 92.88% 0.02s 0.75% runtime.lockWithRank (inline) |
|
||||||
0 0% 92.88% 0.19s 7.12% runtime.mPark (inline) |
|
||||||
0 0% 92.88% 0.03s 1.12% runtime.main |
|
||||||
0 0% 92.88% 0.05s 1.87% runtime.makeslice |
|
||||||
0 0% 92.88% 0.07s 2.62% runtime.mallocgc |
|
||||||
0 0% 92.88% 0.13s 4.87% runtime.netpollBreak |
|
||||||
0 0% 92.88% 0.19s 7.12% runtime.notesleep |
|
||||||
0 0% 92.88% 0.10s 3.75% runtime.notewakeup |
|
||||||
0 0% 92.88% 0.04s 1.50% runtime.pidleget |
|
||||||
0 0% 92.88% 0.03s 1.12% runtime.ready |
|
||||||
0 0% 92.88% 0.12s 4.49% runtime.resetspinning |
|
||||||
0 0% 92.88% 0.06s 2.25% runtime.selectnbsend |
|
||||||
0 0% 92.88% 0.03s 1.12% runtime.send |
|
||||||
0 0% 92.88% 0.03s 1.12% runtime.send.goready.func1 |
|
||||||
0 0% 92.88% 0.10s 3.75% runtime.startm |
|
||||||
0 0% 92.88% 0.21s 7.87% runtime.stopm |
|
||||||
0 0% 92.88% 0.03s 1.12% runtime.systemstack |
|
||||||
0 0% 92.88% 0.05s 1.87% runtime.unlock (inline) |
|
||||||
0 0% 92.88% 0.05s 1.87% runtime.unlockWithRank (inline) |
|
||||||
0 0% 92.88% 0.02s 0.75% sync.(*RWMutex).RLock (inline) |
|
||||||
0 0% 92.88% 0.02s 0.75% syscall.Ftruncate |
|
||||||
0 0% 92.88% 0.03s 1.12% syscall.RawSyscall6 |
|
||||||
0 0% 92.88% 0.03s 1.12% syscall.Syscall |
|
||||||
|
|
||||||
-- Memory (In-Use Space) Functions (full list) -- |
|
||||||
Type: inuse_space |
|
||||||
Time: Sep 13, 2025 at 3:15pm (UTC) |
|
||||||
Showing nodes accounting for 85209.25kB, 99.24% of 85860.37kB total |
|
||||||
Dropped 121 nodes (cum <= 429.30kB) |
|
||||||
flat flat% sum% cum cum% |
|
||||||
85200kB 99.23% 99.23% 85200kB 99.23% github.com/dgraph-io/badger/v4/skl.newArena (inline) |
|
||||||
9.25kB 0.011% 99.24% 85632.26kB 99.73% github.com/dgraph-io/badger/v4.Open |
|
||||||
0 0% 99.24% 85200kB 99.23% github.com/dgraph-io/badger/v4.(*DB).newMemTable |
|
||||||
0 0% 99.24% 85200kB 99.23% github.com/dgraph-io/badger/v4.(*DB).openMemTable |
|
||||||
0 0% 99.24% 85200kB 99.23% github.com/dgraph-io/badger/v4/skl.NewSkiplist |
|
||||||
0 0% 99.24% 85632.26kB 99.73% main.main |
|
||||||
0 0% 99.24% 85632.26kB 99.73% next.orly.dev/pkg/database.New |
|
||||||
0 0% 99.24% 85632.26kB 99.73% runtime.main |
|
||||||
|
|
||||||
-- Allocations (Total Alloc Space) Functions (full list) -- |
|
||||||
Type: alloc_space |
|
||||||
Time: Sep 13, 2025 at 3:15pm (UTC) |
|
||||||
Showing nodes accounting for 87.20MB, 100% of 87.21MB total |
|
||||||
Dropped 15 nodes (cum <= 0.44MB) |
|
||||||
flat flat% sum% cum cum% |
|
||||||
83.20MB 95.40% 95.40% 83.20MB 95.40% github.com/dgraph-io/badger/v4/skl.newArena (inline) |
|
||||||
4MB 4.59% 100% 4MB 4.59% github.com/dgraph-io/ristretto/v2/z.Calloc (inline) |
|
||||||
0 0% 100% 4MB 4.59% github.com/dgraph-io/badger/v4.(*DB).flushMemtable |
|
||||||
0 0% 100% 4MB 4.59% github.com/dgraph-io/badger/v4.(*DB).handleMemTableFlush |
|
||||||
0 0% 100% 83.20MB 95.40% github.com/dgraph-io/badger/v4.(*DB).newMemTable |
|
||||||
0 0% 100% 83.20MB 95.40% github.com/dgraph-io/badger/v4.(*DB).openMemTable |
|
||||||
0 0% 100% 83.20MB 95.40% github.com/dgraph-io/badger/v4.Open |
|
||||||
0 0% 100% 4MB 4.59% github.com/dgraph-io/badger/v4.Open.func5 |
|
||||||
0 0% 100% 4MB 4.59% github.com/dgraph-io/badger/v4.buildL0Table |
|
||||||
0 0% 100% 83.20MB 95.40% github.com/dgraph-io/badger/v4/skl.NewSkiplist |
|
||||||
0 0% 100% 4MB 4.59% github.com/dgraph-io/badger/v4/table.NewTableBuilder |
|
||||||
0 0% 100% 4MB 4.59% github.com/dgraph-io/ristretto/v2/z.(*AllocatorPool).Get |
|
||||||
0 0% 100% 4MB 4.59% github.com/dgraph-io/ristretto/v2/z.NewAllocator |
|
||||||
0 0% 100% 83.20MB 95.40% main.main |
|
||||||
0 0% 100% 83.20MB 95.40% next.orly.dev/pkg/database.New |
|
||||||
0 0% 100% 83.20MB 95.40% runtime.main |
|
||||||
|
|
||||||
-- Allocation Frequency (Alloc Objects) Functions (full list) -- |
|
||||||
Type: alloc_objects |
|
||||||
Time: Sep 13, 2025 at 3:15pm (UTC) |
|
||||||
Showing nodes accounting for 6, 100% of 6 total |
|
||||||
flat flat% sum% cum cum% |
|
||||||
1 16.67% 16.67% 1 16.67% github.com/dgraph-io/badger/v4/skl.newArena (inline) |
|
||||||
1 16.67% 33.33% 1 16.67% github.com/dgraph-io/ristretto/v2/z.Calloc (inline) |
|
||||||
1 16.67% 50.00% 1 16.67% github.com/pkg/profile.Start |
|
||||||
1 16.67% 66.67% 1 16.67% github.com/pkg/profile.Start.func11 |
|
||||||
1 16.67% 83.33% 1 16.67% runtime.allocm |
|
||||||
1 16.67% 100% 1 16.67% runtime.procresize |
|
||||||
0 0% 100% 1 16.67% github.com/dgraph-io/badger/v4.(*DB).flushMemtable |
|
||||||
0 0% 100% 1 16.67% github.com/dgraph-io/badger/v4.(*DB).handleMemTableFlush |
|
||||||
0 0% 100% 1 16.67% github.com/dgraph-io/badger/v4.(*DB).newMemTable |
|
||||||
0 0% 100% 1 16.67% github.com/dgraph-io/badger/v4.(*DB).openMemTable |
|
||||||
0 0% 100% 1 16.67% github.com/dgraph-io/badger/v4.Open |
|
||||||
0 0% 100% 1 16.67% github.com/dgraph-io/badger/v4.Open.func5 |
|
||||||
0 0% 100% 1 16.67% github.com/dgraph-io/badger/v4.buildL0Table |
|
||||||
0 0% 100% 1 16.67% github.com/dgraph-io/badger/v4/skl.NewSkiplist |
|
||||||
0 0% 100% 1 16.67% github.com/dgraph-io/badger/v4/table.NewTableBuilder |
|
||||||
0 0% 100% 1 16.67% github.com/dgraph-io/ristretto/v2/z.(*AllocatorPool).Get |
|
||||||
0 0% 100% 1 16.67% github.com/dgraph-io/ristretto/v2/z.NewAllocator |
|
||||||
0 0% 100% 2 33.33% main.main |
|
||||||
0 0% 100% 1 16.67% next.orly.dev/pkg/database.New |
|
||||||
0 0% 100% 2 33.33% runtime.main |
|
||||||
0 0% 100% 1 16.67% runtime.mstart |
|
||||||
0 0% 100% 1 16.67% runtime.mstart0 |
|
||||||
0 0% 100% 1 16.67% runtime.mstart1 |
|
||||||
0 0% 100% 1 16.67% runtime.newm |
|
||||||
0 0% 100% 1 16.67% runtime.resetspinning |
|
||||||
0 0% 100% 1 16.67% runtime.schedule |
|
||||||
0 0% 100% 1 16.67% runtime.startTheWorld.func1 |
|
||||||
0 0% 100% 1 16.67% runtime.startTheWorldWithSema |
|
||||||
0 0% 100% 1 16.67% runtime.startm |
|
||||||
0 0% 100% 1 16.67% runtime.systemstack |
|
||||||
0 0% 100% 1 16.67% runtime.wakep |
|
||||||
|
|
||||||
Notes: |
|
||||||
- CPU section identifies functions using the most CPU time. |
|
||||||
- Memory section identifies which functions retain the most memory (in-use). |
|
||||||
- Allocations sections identify functions responsible for the most allocation volume and count, which correlates with GC pressure. |
|
||||||
- Profiles are created by github.com/pkg/profile and may only be flushed when the relay process receives a shutdown; CPU profile often requires process exit. |
|
||||||
@ -1,86 +0,0 @@ |
|||||||
================================================================ |
|
||||||
NOSTR RELAY BENCHMARK AGGREGATE REPORT |
|
||||||
================================================================ |
|
||||||
Generated: 2025-09-13T15:15:03+00:00 |
|
||||||
Benchmark Configuration: |
|
||||||
Events per test: 5000 |
|
||||||
Concurrent workers: 4 |
|
||||||
Test duration: 30s |
|
||||||
|
|
||||||
Relays tested: 3 |
|
||||||
|
|
||||||
================================================================ |
|
||||||
SUMMARY BY RELAY |
|
||||||
================================================================ |
|
||||||
|
|
||||||
Relay: next-orly-cpu |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 14586.66 |
|
||||||
Events/sec: 523.16 |
|
||||||
Events/sec: 13427.76 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 266.404µs |
|
||||||
Bottom 10% Avg Latency: 404.279µs |
|
||||||
Avg Latency: 181.633µs |
|
||||||
P95 Latency: 386.835µs |
|
||||||
P95 Latency: 258.311µs |
|
||||||
P95 Latency: 9.420264ms |
|
||||||
|
|
||||||
Relay: next-orly-mem |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 14400.62 |
|
||||||
Events/sec: 517.16 |
|
||||||
Events/sec: 13744.06 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 269.084µs |
|
||||||
Bottom 10% Avg Latency: 409.33µs |
|
||||||
Avg Latency: 178.033µs |
|
||||||
P95 Latency: 390.313µs |
|
||||||
P95 Latency: 255.165µs |
|
||||||
P95 Latency: 9.733877ms |
|
||||||
|
|
||||||
Relay: next-orly-alloc |
|
||||||
---------------------------------------- |
|
||||||
Status: COMPLETED |
|
||||||
Events/sec: 14727.35 |
|
||||||
Events/sec: 534.10 |
|
||||||
Events/sec: 13931.93 |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Success Rate: 100.0% |
|
||||||
Avg Latency: 264.477µs |
|
||||||
Bottom 10% Avg Latency: 400.393µs |
|
||||||
Avg Latency: 183.763µs |
|
||||||
P95 Latency: 382.538µs |
|
||||||
P95 Latency: 269.453µs |
|
||||||
P95 Latency: 10.855199ms |
|
||||||
|
|
||||||
|
|
||||||
================================================================ |
|
||||||
DETAILED RESULTS |
|
||||||
================================================================ |
|
||||||
|
|
||||||
Individual relay reports are available in: |
|
||||||
- /reports/run_20250913_150837/next-orly-alloc_results.txt |
|
||||||
- /reports/run_20250913_150837/next-orly-cpu_results.txt |
|
||||||
- /reports/run_20250913_150837/next-orly-mem_results.txt |
|
||||||
|
|
||||||
================================================================ |
|
||||||
BENCHMARK COMPARISON TABLE |
|
||||||
================================================================ |
|
||||||
|
|
||||||
Relay Status Peak Tput/s Avg Latency Success Rate |
|
||||||
---- ------ ----------- ----------- ------------ |
|
||||||
next-orly-cpu OK 14586.66 266.404µs 100.0% |
|
||||||
next-orly-mem OK 14400.62 269.084µs 100.0% |
|
||||||
next-orly-alloc OK 14727.35 264.477µs 100.0% |
|
||||||
|
|
||||||
================================================================ |
|
||||||
End of Report |
|
||||||
================================================================ |
|
||||||
@ -1,190 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_next-orly-alloc_8 |
|
||||||
Events: 5000, Workers: 4, Duration: 30s |
|
||||||
20250913151255068694 INF /tmp/benchmark_next-orly-alloc_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250913151255069225 INF /tmp/benchmark_next-orly-alloc_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250913151255069261 INF /tmp/benchmark_next-orly-alloc_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250913151255069538 INF (*types.Uint32)(0xc00001010c)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250913151255069681 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Starting test round 1/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 5000/5000 (100.0%) |
|
||||||
Duration: 339.504298ms |
|
||||||
Events/sec: 14727.35 |
|
||||||
Avg latency: 264.477µs |
|
||||||
P90 latency: 350.647µs |
|
||||||
P95 latency: 382.538µs |
|
||||||
P99 latency: 448.954µs |
|
||||||
Bottom 10% Avg latency: 400.393µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 500 events in 479.359678ms |
|
||||||
Burst completed: 500 events in 425.596145ms |
|
||||||
Burst completed: 500 events in 446.109496ms |
|
||||||
Burst completed: 500 events in 378.033475ms |
|
||||||
Burst completed: 500 events in 391.065418ms |
|
||||||
Burst completed: 500 events in 409.089993ms |
|
||||||
Burst completed: 500 events in 495.220448ms |
|
||||||
Burst completed: 500 events in 493.489266ms |
|
||||||
Burst completed: 500 events in 410.468883ms |
|
||||||
Burst completed: 500 events in 418.819105ms |
|
||||||
Burst test completed: 5000 events in 9.361610197s |
|
||||||
Events/sec: 534.10 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 2500 writes, 2500 reads in 24.078024733s |
|
||||||
Combined ops/sec: 207.66 |
|
||||||
|
|
||||||
Pausing 10s before next round... |
|
||||||
|
|
||||||
=== Starting test round 2/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 5000/5000 (100.0%) |
|
||||||
Duration: 358.887842ms |
|
||||||
Events/sec: 13931.93 |
|
||||||
Avg latency: 280.856µs |
|
||||||
P90 latency: 366.297µs |
|
||||||
P95 latency: 394.952µs |
|
||||||
P99 latency: 451.52µs |
|
||||||
Bottom 10% Avg latency: 409.325µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 500 events in 362.96011ms |
|
||||||
Burst completed: 500 events in 416.140454ms |
|
||||||
Burst completed: 500 events in 448.460564ms |
|
||||||
Burst completed: 500 events in 474.76808ms |
|
||||||
Burst completed: 500 events in 447.434655ms |
|
||||||
Burst completed: 500 events in 427.462963ms |
|
||||||
Burst completed: 500 events in 413.117609ms |
|
||||||
Burst completed: 500 events in 442.349391ms |
|
||||||
Burst completed: 500 events in 464.157823ms |
|
||||||
Burst completed: 500 events in 472.898161ms |
|
||||||
Burst test completed: 5000 events in 9.381865696s |
|
||||||
Events/sec: 532.94 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 2500 writes, 2122 reads in 30.021046357s |
|
||||||
Combined ops/sec: 153.96 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 339.504298ms |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 14727.35 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 142 MB |
|
||||||
Avg Latency: 264.477µs |
|
||||||
P90 Latency: 350.647µs |
|
||||||
P95 Latency: 382.538µs |
|
||||||
P99 Latency: 448.954µs |
|
||||||
Bottom 10% Avg Latency: 400.393µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 9.361610197s |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 534.10 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 192 MB |
|
||||||
Avg Latency: 183.763µs |
|
||||||
P90 Latency: 236.69µs |
|
||||||
P95 Latency: 269.453µs |
|
||||||
P99 Latency: 328.425µs |
|
||||||
Bottom 10% Avg Latency: 284.22µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 24.078024733s |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 207.66 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 105 MB |
|
||||||
Avg Latency: 4.442571ms |
|
||||||
P90 Latency: 8.682425ms |
|
||||||
P95 Latency: 10.855199ms |
|
||||||
P99 Latency: 12.949977ms |
|
||||||
Bottom 10% Avg Latency: 10.754668ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 358.887842ms |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 13931.93 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 122 MB |
|
||||||
Avg Latency: 280.856µs |
|
||||||
P90 Latency: 366.297µs |
|
||||||
P95 Latency: 394.952µs |
|
||||||
P99 Latency: 451.52µs |
|
||||||
Bottom 10% Avg Latency: 409.325µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 9.381865696s |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 532.94 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 175 MB |
|
||||||
Avg Latency: 186.501µs |
|
||||||
P90 Latency: 237.853µs |
|
||||||
P95 Latency: 269.192µs |
|
||||||
P99 Latency: 336.811µs |
|
||||||
Bottom 10% Avg Latency: 287.769µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 30.021046357s |
|
||||||
Total Events: 4622 |
|
||||||
Events/sec: 153.96 |
|
||||||
Success Rate: 92.4% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 129 MB |
|
||||||
Avg Latency: 8.281607ms |
|
||||||
P90 Latency: 17.758024ms |
|
||||||
P95 Latency: 19.206379ms |
|
||||||
P99 Latency: 24.13486ms |
|
||||||
Bottom 10% Avg Latency: 20.330644ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_next-orly-alloc_8/benchmark_report.txt |
|
||||||
AsciiDoc report saved to: /tmp/benchmark_next-orly-alloc_8/benchmark_report.adoc |
|
||||||
20250913151458624980 INF /tmp/benchmark_next-orly-alloc_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250913151458946409 INF /tmp/benchmark_next-orly-alloc_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 01. Size: 22 MiB of 22 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250913151458948689 INF /tmp/benchmark_next-orly-alloc_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: next-orly-alloc |
|
||||||
RELAY_URL: ws://next-orly-alloc:8080 |
|
||||||
TEST_TIMESTAMP: 2025-09-13T15:14:58+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 5000 |
|
||||||
Workers: 4 |
|
||||||
Duration: 30s |
|
||||||
@ -1,190 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_next-orly-cpu_8 |
|
||||||
Events: 5000, Workers: 4, Duration: 30s |
|
||||||
20250913150837785506 INF /tmp/benchmark_next-orly-cpu_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250913150837785985 INF /tmp/benchmark_next-orly-cpu_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250913150837786066 INF /tmp/benchmark_next-orly-cpu_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250913150837786329 INF (*types.Uint32)(0xc0002b1cac)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250913150837786374 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Starting test round 1/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 5000/5000 (100.0%) |
|
||||||
Duration: 342.779064ms |
|
||||||
Events/sec: 14586.66 |
|
||||||
Avg latency: 266.404µs |
|
||||||
P90 latency: 354.213µs |
|
||||||
P95 latency: 386.835µs |
|
||||||
P99 latency: 459.934µs |
|
||||||
Bottom 10% Avg latency: 404.279µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 500 events in 423.591594ms |
|
||||||
Burst completed: 500 events in 454.585716ms |
|
||||||
Burst completed: 500 events in 486.007191ms |
|
||||||
Burst completed: 500 events in 503.830553ms |
|
||||||
Burst completed: 500 events in 433.97967ms |
|
||||||
Burst completed: 500 events in 427.591978ms |
|
||||||
Burst completed: 500 events in 500.38276ms |
|
||||||
Burst completed: 500 events in 489.161258ms |
|
||||||
Burst completed: 500 events in 474.350023ms |
|
||||||
Burst completed: 500 events in 350.911595ms |
|
||||||
Burst test completed: 5000 events in 9.557316818s |
|
||||||
Events/sec: 523.16 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 2500 writes, 2500 reads in 24.103605311s |
|
||||||
Combined ops/sec: 207.44 |
|
||||||
|
|
||||||
Pausing 10s before next round... |
|
||||||
|
|
||||||
=== Starting test round 2/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 5000/5000 (100.0%) |
|
||||||
Duration: 372.362841ms |
|
||||||
Events/sec: 13427.76 |
|
||||||
Avg latency: 291.441µs |
|
||||||
P90 latency: 380.663µs |
|
||||||
P95 latency: 417.233µs |
|
||||||
P99 latency: 494.64µs |
|
||||||
Bottom 10% Avg latency: 434.725µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 500 events in 417.269185ms |
|
||||||
Burst completed: 500 events in 468.354112ms |
|
||||||
Burst completed: 500 events in 443.231977ms |
|
||||||
Burst completed: 500 events in 435.358047ms |
|
||||||
Burst completed: 500 events in 380.799007ms |
|
||||||
Burst completed: 500 events in 322.904743ms |
|
||||||
Burst completed: 500 events in 354.234969ms |
|
||||||
Burst completed: 500 events in 390.690665ms |
|
||||||
Burst completed: 500 events in 392.317202ms |
|
||||||
Burst completed: 500 events in 467.071067ms |
|
||||||
Burst test completed: 5000 events in 9.085471121s |
|
||||||
Events/sec: 550.33 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 2500 writes, 2067 reads in 30.027760725s |
|
||||||
Combined ops/sec: 152.09 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 342.779064ms |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 14586.66 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 142 MB |
|
||||||
Avg Latency: 266.404µs |
|
||||||
P90 Latency: 354.213µs |
|
||||||
P95 Latency: 386.835µs |
|
||||||
P99 Latency: 459.934µs |
|
||||||
Bottom 10% Avg Latency: 404.279µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 9.557316818s |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 523.16 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 192 MB |
|
||||||
Avg Latency: 181.633µs |
|
||||||
P90 Latency: 225.639µs |
|
||||||
P95 Latency: 258.311µs |
|
||||||
P99 Latency: 332.341µs |
|
||||||
Bottom 10% Avg Latency: 277.625µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 24.103605311s |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 207.44 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 108 MB |
|
||||||
Avg Latency: 4.472533ms |
|
||||||
P90 Latency: 8.862063ms |
|
||||||
P95 Latency: 9.420264ms |
|
||||||
P99 Latency: 12.991173ms |
|
||||||
Bottom 10% Avg Latency: 10.293802ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 372.362841ms |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 13427.76 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 125 MB |
|
||||||
Avg Latency: 291.441µs |
|
||||||
P90 Latency: 380.663µs |
|
||||||
P95 Latency: 417.233µs |
|
||||||
P99 Latency: 494.64µs |
|
||||||
Bottom 10% Avg Latency: 434.725µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 9.085471121s |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 550.33 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 177 MB |
|
||||||
Avg Latency: 191.41µs |
|
||||||
P90 Latency: 247.551µs |
|
||||||
P95 Latency: 282.246µs |
|
||||||
P99 Latency: 336.099µs |
|
||||||
Bottom 10% Avg Latency: 290.757µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 30.027760725s |
|
||||||
Total Events: 4567 |
|
||||||
Events/sec: 152.09 |
|
||||||
Success Rate: 91.3% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 173 MB |
|
||||||
Avg Latency: 8.526682ms |
|
||||||
P90 Latency: 18.686774ms |
|
||||||
P95 Latency: 21.052665ms |
|
||||||
P99 Latency: 24.581304ms |
|
||||||
Bottom 10% Avg Latency: 21.498913ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_next-orly-cpu_8/benchmark_report.txt |
|
||||||
AsciiDoc report saved to: /tmp/benchmark_next-orly-cpu_8/benchmark_report.adoc |
|
||||||
20250913151041289202 INF /tmp/benchmark_next-orly-cpu_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250913151041613609 INF /tmp/benchmark_next-orly-cpu_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 01. Size: 22 MiB of 22 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250913151041615724 INF /tmp/benchmark_next-orly-cpu_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: next-orly-cpu |
|
||||||
RELAY_URL: ws://next-orly-cpu:8080 |
|
||||||
TEST_TIMESTAMP: 2025-09-13T15:10:41+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 5000 |
|
||||||
Workers: 4 |
|
||||||
Duration: 30s |
|
||||||
@ -1,190 +0,0 @@ |
|||||||
Starting Nostr Relay Benchmark |
|
||||||
Data Directory: /tmp/benchmark_next-orly-mem_8 |
|
||||||
Events: 5000, Workers: 4, Duration: 30s |
|
||||||
20250913151046664505 INF /tmp/benchmark_next-orly-mem_8: All 0 tables opened in 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/levels.go:161 /build/pkg/database/logger.go:57 |
|
||||||
20250913151046665322 INF /tmp/benchmark_next-orly-mem_8: Discard stats nextEmptySlot: 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/discard.go:55 /build/pkg/database/logger.go:57 |
|
||||||
20250913151046665358 INF /tmp/benchmark_next-orly-mem_8: Set nextTxnTs to 0 |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:358 /build/pkg/database/logger.go:57 |
|
||||||
20250913151046665590 INF (*types.Uint32)(0xc00013fc1c)({ |
|
||||||
value: (uint32) 1 |
|
||||||
}) |
|
||||||
/build/pkg/database/migrations.go:65 |
|
||||||
20250913151046665622 INF migrating to version 1... /build/pkg/database/migrations.go:79 |
|
||||||
|
|
||||||
=== Starting test round 1/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 5000/5000 (100.0%) |
|
||||||
Duration: 347.207269ms |
|
||||||
Events/sec: 14400.62 |
|
||||||
Avg latency: 269.084µs |
|
||||||
P90 latency: 358.252µs |
|
||||||
P95 latency: 390.313µs |
|
||||||
P99 latency: 459.745µs |
|
||||||
Bottom 10% Avg latency: 409.33µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 500 events in 372.815911ms |
|
||||||
Burst completed: 500 events in 385.472929ms |
|
||||||
Burst completed: 500 events in 493.886155ms |
|
||||||
Burst completed: 500 events in 499.001539ms |
|
||||||
Burst completed: 500 events in 495.383911ms |
|
||||||
Burst completed: 500 events in 463.681787ms |
|
||||||
Burst completed: 500 events in 474.409848ms |
|
||||||
Burst completed: 500 events in 507.35297ms |
|
||||||
Burst completed: 500 events in 487.725706ms |
|
||||||
Burst completed: 500 events in 473.3812ms |
|
||||||
Burst test completed: 5000 events in 9.668130847s |
|
||||||
Events/sec: 517.16 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 2500 writes, 2500 reads in 23.457777521s |
|
||||||
Combined ops/sec: 213.15 |
|
||||||
|
|
||||||
Pausing 10s before next round... |
|
||||||
|
|
||||||
=== Starting test round 2/2 === |
|
||||||
|
|
||||||
=== Peak Throughput Test === |
|
||||||
Events saved: 5000/5000 (100.0%) |
|
||||||
Duration: 363.793593ms |
|
||||||
Events/sec: 13744.06 |
|
||||||
Avg latency: 284.695µs |
|
||||||
P90 latency: 372.509µs |
|
||||||
P95 latency: 405.031µs |
|
||||||
P99 latency: 461.949µs |
|
||||||
Bottom 10% Avg latency: 418.636µs |
|
||||||
|
|
||||||
=== Burst Pattern Test === |
|
||||||
Burst completed: 500 events in 468.131728ms |
|
||||||
Burst completed: 500 events in 466.05048ms |
|
||||||
Burst completed: 500 events in 348.112373ms |
|
||||||
Burst completed: 500 events in 399.633064ms |
|
||||||
Burst completed: 500 events in 442.046507ms |
|
||||||
Burst completed: 500 events in 381.168926ms |
|
||||||
Burst completed: 500 events in 362.016406ms |
|
||||||
Burst completed: 500 events in 379.297871ms |
|
||||||
Burst completed: 500 events in 457.958442ms |
|
||||||
Burst completed: 500 events in 455.557676ms |
|
||||||
Burst test completed: 5000 events in 9.174541855s |
|
||||||
Events/sec: 544.99 |
|
||||||
|
|
||||||
=== Mixed Read/Write Test === |
|
||||||
Pre-populating database for read tests... |
|
||||||
Mixed test completed: 2500 writes, 2146 reads in 30.008115864s |
|
||||||
Combined ops/sec: 154.82 |
|
||||||
|
|
||||||
================================================================================ |
|
||||||
BENCHMARK REPORT |
|
||||||
================================================================================ |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 347.207269ms |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 14400.62 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 143 MB |
|
||||||
Avg Latency: 269.084µs |
|
||||||
P90 Latency: 358.252µs |
|
||||||
P95 Latency: 390.313µs |
|
||||||
P99 Latency: 459.745µs |
|
||||||
Bottom 10% Avg Latency: 409.33µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 9.668130847s |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 517.16 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 192 MB |
|
||||||
Avg Latency: 178.033µs |
|
||||||
P90 Latency: 225.098µs |
|
||||||
P95 Latency: 255.165µs |
|
||||||
P99 Latency: 318.015µs |
|
||||||
Bottom 10% Avg Latency: 267.252µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 23.457777521s |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 213.15 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 103 MB |
|
||||||
Avg Latency: 4.235413ms |
|
||||||
P90 Latency: 8.39945ms |
|
||||||
P95 Latency: 9.733877ms |
|
||||||
P99 Latency: 12.359344ms |
|
||||||
Bottom 10% Avg Latency: 10.173821ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Peak Throughput |
|
||||||
Duration: 363.793593ms |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 13744.06 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 121 MB |
|
||||||
Avg Latency: 284.695µs |
|
||||||
P90 Latency: 372.509µs |
|
||||||
P95 Latency: 405.031µs |
|
||||||
P99 Latency: 461.949µs |
|
||||||
Bottom 10% Avg Latency: 418.636µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Burst Pattern |
|
||||||
Duration: 9.174541855s |
|
||||||
Total Events: 5000 |
|
||||||
Events/sec: 544.99 |
|
||||||
Success Rate: 100.0% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 174 MB |
|
||||||
Avg Latency: 188.886µs |
|
||||||
P90 Latency: 242.201µs |
|
||||||
P95 Latency: 270.475µs |
|
||||||
P99 Latency: 331.521µs |
|
||||||
Bottom 10% Avg Latency: 287.008µs |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Test: Mixed Read/Write |
|
||||||
Duration: 30.008115864s |
|
||||||
Total Events: 4646 |
|
||||||
Events/sec: 154.82 |
|
||||||
Success Rate: 92.9% |
|
||||||
Concurrent Workers: 4 |
|
||||||
Memory Used: 184 MB |
|
||||||
Avg Latency: 8.147241ms |
|
||||||
P90 Latency: 17.076493ms |
|
||||||
P95 Latency: 17.970006ms |
|
||||||
P99 Latency: 24.424806ms |
|
||||||
Bottom 10% Avg Latency: 19.866973ms |
|
||||||
---------------------------------------- |
|
||||||
|
|
||||||
Report saved to: /tmp/benchmark_next-orly-mem_8/benchmark_report.txt |
|
||||||
AsciiDoc report saved to: /tmp/benchmark_next-orly-mem_8/benchmark_report.adoc |
|
||||||
20250913151249700098 INF /tmp/benchmark_next-orly-mem_8: Lifetime L0 stalled for: 0s |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:536 /build/pkg/database/logger.go:57 |
|
||||||
20250913151250019024 INF /tmp/benchmark_next-orly-mem_8: |
|
||||||
Level 0 [ ]: NumTables: 00. Size: 0 B of 0 B. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 64 MiB |
|
||||||
Level 1 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 2 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 3 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 4 [ ]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 5 [B]: NumTables: 00. Size: 0 B of 10 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 2.0 MiB |
|
||||||
Level 6 [ ]: NumTables: 01. Size: 22 MiB of 22 MiB. Score: 0.00->0.00 StaleData: 0 B Target FileSize: 4.0 MiB |
|
||||||
Level Done |
|
||||||
/go/pkg/mod/github.com/dgraph-io/badger/v4@v4.8.0/db.go:615 /build/pkg/database/logger.go:57 |
|
||||||
20250913151250021227 INF /tmp/benchmark_next-orly-mem_8: database closed /build/pkg/database/database.go:134 |
|
||||||
|
|
||||||
RELAY_NAME: next-orly-mem |
|
||||||
RELAY_URL: ws://next-orly-mem:8080 |
|
||||||
TEST_TIMESTAMP: 2025-09-13T15:12:50+00:00 |
|
||||||
BENCHMARK_CONFIG: |
|
||||||
Events: 5000 |
|
||||||
Workers: 4 |
|
||||||
Duration: 30s |
|
||||||
@ -0,0 +1,169 @@ |
|||||||
|
#!/bin/bash |
||||||
|
set -euo pipefail |
||||||
|
|
||||||
|
# scripts/benchmark.sh - Run full benchmark suite on a relay at a configurable address |
||||||
|
# |
||||||
|
# Usage: |
||||||
|
# ./scripts/benchmark.sh [relay_address] [relay_port] |
||||||
|
# |
||||||
|
# Example: |
||||||
|
# ./scripts/benchmark.sh localhost 3334 |
||||||
|
# ./scripts/benchmark.sh nostr.example.com 8080 |
||||||
|
# |
||||||
|
# If relay_address and relay_port are not provided, defaults to localhost:3334 |
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" |
||||||
|
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)" |
||||||
|
cd "$REPO_ROOT" |
||||||
|
|
||||||
|
# Default values |
||||||
|
RELAY_ADDRESS="${1:-localhost}" |
||||||
|
RELAY_PORT="${2:-3334}" |
||||||
|
RELAY_URL="ws://${RELAY_ADDRESS}:${RELAY_PORT}" |
||||||
|
BENCHMARK_EVENTS="${BENCHMARK_EVENTS:-10000}" |
||||||
|
BENCHMARK_WORKERS="${BENCHMARK_WORKERS:-8}" |
||||||
|
BENCHMARK_DURATION="${BENCHMARK_DURATION:-60s}" |
||||||
|
REPORTS_DIR="${REPORTS_DIR:-$REPO_ROOT/cmd/benchmark/reports}" |
||||||
|
TIMESTAMP=$(date +"%Y%m%d_%H%M%S") |
||||||
|
RUN_DIR="${REPORTS_DIR}/run_${TIMESTAMP}" |
||||||
|
|
||||||
|
# Ensure the benchmark binary is built |
||||||
|
BENCHMARK_BIN="${REPO_ROOT}/cmd/benchmark/benchmark" |
||||||
|
if [[ ! -x "$BENCHMARK_BIN" ]]; then |
||||||
|
echo "Building benchmark binary..." |
||||||
|
go build -o "$BENCHMARK_BIN" "$REPO_ROOT/cmd/benchmark" |
||||||
|
fi |
||||||
|
|
||||||
|
# Create output directory |
||||||
|
mkdir -p "${RUN_DIR}" |
||||||
|
|
||||||
|
echo "==================================================" |
||||||
|
echo "Nostr Relay Benchmark" |
||||||
|
echo "==================================================" |
||||||
|
echo "Timestamp: $(date)" |
||||||
|
echo "Target Relay: ${RELAY_URL}" |
||||||
|
echo "Events per test: ${BENCHMARK_EVENTS}" |
||||||
|
echo "Concurrent workers: ${BENCHMARK_WORKERS}" |
||||||
|
echo "Test duration: ${BENCHMARK_DURATION}" |
||||||
|
echo "Output directory: ${RUN_DIR}" |
||||||
|
echo "==================================================" |
||||||
|
|
||||||
|
# Function to wait for relay to be ready |
||||||
|
wait_for_relay() { |
||||||
|
local url="$1" |
||||||
|
local max_attempts=30 |
||||||
|
local attempt=0 |
||||||
|
|
||||||
|
echo "Waiting for relay to be ready at ${url}..." |
||||||
|
|
||||||
|
while [ $attempt -lt $max_attempts ]; do |
||||||
|
# Try to get HTTP status code with curl |
||||||
|
local status=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 5 "http://${RELAY_ADDRESS}:${RELAY_PORT}" || echo 000) |
||||||
|
|
||||||
|
case "$status" in |
||||||
|
101|200|400|404|426) |
||||||
|
echo "Relay is ready! (HTTP ${status})" |
||||||
|
return 0 |
||||||
|
;; |
||||||
|
esac |
||||||
|
|
||||||
|
attempt=$((attempt + 1)) |
||||||
|
echo " Attempt ${attempt}/${max_attempts}: Relay not ready yet (HTTP ${status})..." |
||||||
|
sleep 2 |
||||||
|
done |
||||||
|
|
||||||
|
echo "ERROR: Relay failed to become ready after ${max_attempts} attempts" |
||||||
|
return 1 |
||||||
|
} |
||||||
|
|
||||||
|
# Function to run benchmark against the relay |
||||||
|
run_benchmark() { |
||||||
|
local output_file="${RUN_DIR}/benchmark_results.txt" |
||||||
|
|
||||||
|
echo "" |
||||||
|
echo "==================================================" |
||||||
|
echo "Testing relay at ${RELAY_URL}" |
||||||
|
echo "==================================================" |
||||||
|
|
||||||
|
# Wait for relay to be ready |
||||||
|
if ! wait_for_relay "${RELAY_ADDRESS}:${RELAY_PORT}"; then |
||||||
|
echo "ERROR: Relay is not responding, aborting..." |
||||||
|
echo "RELAY_URL: ${RELAY_URL}" > "${output_file}" |
||||||
|
echo "STATUS: FAILED - Relay not responding" >> "${output_file}" |
||||||
|
echo "ERROR: Connection failed" >> "${output_file}" |
||||||
|
return 1 |
||||||
|
fi |
||||||
|
|
||||||
|
# Run the benchmark |
||||||
|
echo "Running benchmark against ${RELAY_URL}..." |
||||||
|
|
||||||
|
# Create temporary directory for benchmark data |
||||||
|
TEMP_DATA_DIR="/tmp/benchmark_${TIMESTAMP}" |
||||||
|
mkdir -p "${TEMP_DATA_DIR}" |
||||||
|
|
||||||
|
# Run benchmark and capture both stdout and stderr |
||||||
|
if "${BENCHMARK_BIN}" \ |
||||||
|
-relay-url="${RELAY_URL}" \ |
||||||
|
-datadir="${TEMP_DATA_DIR}" \ |
||||||
|
-events="${BENCHMARK_EVENTS}" \ |
||||||
|
-workers="${BENCHMARK_WORKERS}" \ |
||||||
|
-duration="${BENCHMARK_DURATION}" \ |
||||||
|
# > "${output_file}" |
||||||
|
2>&1; then |
||||||
|
echo "✓ Benchmark completed successfully" |
||||||
|
# Add relay identification to the report |
||||||
|
echo "" >> "${output_file}" |
||||||
|
echo "RELAY_URL: ${RELAY_URL}" >> "${output_file}" |
||||||
|
echo "TEST_TIMESTAMP: $(date -Iseconds)" >> "${output_file}" |
||||||
|
echo "BENCHMARK_CONFIG:" >> "${output_file}" |
||||||
|
echo " Events: ${BENCHMARK_EVENTS}" >> "${output_file}" |
||||||
|
echo " Workers: ${BENCHMARK_WORKERS}" >> "${output_file}" |
||||||
|
echo " Duration: ${BENCHMARK_DURATION}" >> "${output_file}" else |
||||||
|
echo "✗ Benchmark failed" |
||||||
|
echo "" >> "${output_file}" |
||||||
|
echo "RELAY_URL: ${RELAY_URL}" >> "${output_file}" |
||||||
|
echo "STATUS: FAILED" >> "${output_file}" |
||||||
|
echo "TEST_TIMESTAMP: $(date -Iseconds)" >> "${output_file}" |
||||||
|
fi |
||||||
|
|
||||||
|
# Clean up temporary data |
||||||
|
rm -rf "${TEMP_DATA_DIR}" |
||||||
|
|
||||||
|
return 0 |
||||||
|
} |
||||||
|
|
||||||
|
# Main execution |
||||||
|
echo "Starting relay benchmark..." |
||||||
|
run_benchmark |
||||||
|
|
||||||
|
# Display results |
||||||
|
if [ -f "${RUN_DIR}/benchmark_results.txt" ]; then |
||||||
|
echo "" |
||||||
|
echo "==================================================" |
||||||
|
echo "Benchmark Results Summary" |
||||||
|
echo "==================================================" |
||||||
|
# Extract key metrics from the benchmark report |
||||||
|
if grep -q "STATUS: FAILED" "${RUN_DIR}/benchmark_results.txt"; then |
||||||
|
echo "Status: FAILED" |
||||||
|
grep "ERROR:" "${RUN_DIR}/benchmark_results.txt" | head -1 || echo "Error: Unknown failure" |
||||||
|
else |
||||||
|
echo "Status: COMPLETED" |
||||||
|
|
||||||
|
# Extract performance metrics |
||||||
|
grep "Events/sec:" "${RUN_DIR}/benchmark_results.txt" | head -3 || true |
||||||
|
grep "Success Rate:" "${RUN_DIR}/benchmark_results.txt" | head -3 || true |
||||||
|
grep "Avg Latency:" "${RUN_DIR}/benchmark_results.txt" | head -3 || true |
||||||
|
grep "P95 Latency:" "${RUN_DIR}/benchmark_results.txt" | head -3 || true |
||||||
|
grep "Memory:" "${RUN_DIR}/benchmark_results.txt" | head -3 || true |
||||||
|
fi |
||||||
|
|
||||||
|
echo "" |
||||||
|
echo "Full results available in: ${RUN_DIR}/benchmark_results.txt" |
||||||
|
fi |
||||||
|
|
||||||
|
echo "" |
||||||
|
echo "==================================================" |
||||||
|
echo "Benchmark Completed!" |
||||||
|
echo "==================================================" |
||||||
|
echo "Results directory: ${RUN_DIR}" |
||||||
|
echo "Benchmark finished at: $(date)" |
||||||
Loading…
Reference in new issue