From 83c27a52b0b9575ba0cde70964f05de9fd898485 Mon Sep 17 00:00:00 2001 From: mleku Date: Thu, 4 Dec 2025 20:10:27 +0000 Subject: [PATCH] bump v0.34.1 --- .../khatru-badger_results.txt | 74 +++++++ .../khatru-sqlite_results.txt | 8 + .../next-orly-neo4j_results.txt | 78 ------- .../khatru-badger_results.txt | 201 +++++++++++++++++ .../khatru-sqlite_results.txt | 201 +++++++++++++++++ ...xt-orly-badger_graph_traversal_results.txt | 43 ++++ .../next-orly-badger_results.txt | 201 +++++++++++++++++ .../next-orly-neo4j_results.txt | 201 +++++++++++++++++ .../nostr-rs-relay_results.txt | 201 +++++++++++++++++ .../relayer-basic_results.txt | 201 +++++++++++++++++ .../rely-sqlite_graph_traversal_results.txt | 63 ++++++ .../rely-sqlite_results.txt | 202 ++++++++++++++++++ .../run_20251204_104444/strfry_results.txt | 201 +++++++++++++++++ pkg/version/version | 2 +- 14 files changed, 1798 insertions(+), 79 deletions(-) create mode 100644 cmd/benchmark/reports/run_20251204_092025/khatru-badger_results.txt create mode 100644 cmd/benchmark/reports/run_20251204_092025/khatru-sqlite_results.txt delete mode 100644 cmd/benchmark/reports/run_20251204_092025/next-orly-neo4j_results.txt create mode 100644 cmd/benchmark/reports/run_20251204_104444/khatru-badger_results.txt create mode 100644 cmd/benchmark/reports/run_20251204_104444/khatru-sqlite_results.txt create mode 100644 cmd/benchmark/reports/run_20251204_104444/next-orly-badger_graph_traversal_results.txt create mode 100644 cmd/benchmark/reports/run_20251204_104444/next-orly-badger_results.txt create mode 100644 cmd/benchmark/reports/run_20251204_104444/next-orly-neo4j_results.txt create mode 100644 cmd/benchmark/reports/run_20251204_104444/nostr-rs-relay_results.txt create mode 100644 cmd/benchmark/reports/run_20251204_104444/relayer-basic_results.txt create mode 100644 cmd/benchmark/reports/run_20251204_104444/rely-sqlite_graph_traversal_results.txt create mode 100644 cmd/benchmark/reports/run_20251204_104444/rely-sqlite_results.txt create mode 100644 cmd/benchmark/reports/run_20251204_104444/strfry_results.txt diff --git a/cmd/benchmark/reports/run_20251204_092025/khatru-badger_results.txt b/cmd/benchmark/reports/run_20251204_092025/khatru-badger_results.txt new file mode 100644 index 0000000..43831dd --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_092025/khatru-badger_results.txt @@ -0,0 +1,74 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_khatru-badger_8 +Events: 50000, Workers: 24, Duration: 1m0s +1764840830987179ℹ️ migrating to version 1... /build/pkg/database/migrations.go:68 +1764840830987255ℹ️ migrating to version 2... /build/pkg/database/migrations.go:75 +1764840830987278ℹ️ migrating to version 3... /build/pkg/database/migrations.go:82 +1764840830987283ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304 +1764840830987292ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349 +1764840830987305ℹ️ migrating to version 4... /build/pkg/database/migrations.go:89 +1764840830987310ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357 +1764840830987336ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446 +1764840830987364ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555 +1764840830987412ℹ️ migrating to version 5... /build/pkg/database/migrations.go:96 +1764840830987419ℹ️ re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562 +1764840830987429ℹ️ found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649 +1764840830987435ℹ️ no events need re-encoding /build/pkg/database/migrations.go:652 +1764840830987452ℹ️ migrating to version 6... /build/pkg/database/migrations.go:103 +1764840830987458ℹ️ converting events to compact serial-reference format... /build/pkg/database/migrations.go:706 +1764840830987473ℹ️ found 0 events to convert to compact format /build/pkg/database/migrations.go:846 +1764840830987479ℹ️ no events need conversion /build/pkg/database/migrations.go:849 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/12/04 09:33:50 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.213866224s +Events/sec: 15557.59 +Avg latency: 1.456848ms +P90 latency: 1.953553ms +P95 latency: 2.322455ms +P99 latency: 4.316566ms +Bottom 10% Avg latency: 793.956µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 336.223018ms +Burst completed: 5000 events in 314.023603ms +Burst completed: 5000 events in 296.961158ms +Burst completed: 5000 events in 313.470891ms +Burst completed: 5000 events in 312.977339ms +Burst completed: 5000 events in 304.290846ms +Burst completed: 5000 events in 279.718158ms +Burst completed: 5000 events in 351.360773ms +Burst completed: 5000 events in 413.446584ms +Burst completed: 5000 events in 412.074279ms +Burst test completed: 50000 events in 8.341599033s, errors: 0 +Events/sec: 5994.05 +Wiping database between tests... +RunMixedReadWriteTest (Badger).. + +=== Mixed Read/Write Test === +Generating 1000 unique synthetic events (minimum 300 bytes each)... +Generated 1000 events: + Average content size: 312 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database for read tests... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Mixed test completed: 25000 writes, 25000 reads in 24.442820936s +Combined ops/sec: 2045.59 +Wiping database between tests... diff --git a/cmd/benchmark/reports/run_20251204_092025/khatru-sqlite_results.txt b/cmd/benchmark/reports/run_20251204_092025/khatru-sqlite_results.txt new file mode 100644 index 0000000..ba94123 --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_092025/khatru-sqlite_results.txt @@ -0,0 +1,8 @@ + +RELAY_NAME: khatru-sqlite +RELAY_URL: ws://khatru-sqlite:3334 +TEST_TIMESTAMP: 2025-12-04T09:33:45+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251204_092025/next-orly-neo4j_results.txt b/cmd/benchmark/reports/run_20251204_092025/next-orly-neo4j_results.txt deleted file mode 100644 index 330a44d..0000000 --- a/cmd/benchmark/reports/run_20251204_092025/next-orly-neo4j_results.txt +++ /dev/null @@ -1,78 +0,0 @@ -Starting Nostr Relay Benchmark (Badger Backend) -Data Directory: /tmp/benchmark_next-orly-neo4j_8 -Events: 50000, Workers: 24, Duration: 1m0s -1764840427673892ℹ️ migrating to version 1... /build/pkg/database/migrations.go:68 -1764840427674007ℹ️ migrating to version 2... /build/pkg/database/migrations.go:75 -1764840427674031ℹ️ migrating to version 3... /build/pkg/database/migrations.go:82 -1764840427674036ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304 -1764840427674056ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349 -1764840427674081ℹ️ migrating to version 4... /build/pkg/database/migrations.go:89 -1764840427674087ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357 -1764840427674097ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446 -1764840427674102ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555 -1764840427674116ℹ️ migrating to version 5... /build/pkg/database/migrations.go:96 -1764840427674121ℹ️ re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562 -1764840427674128ℹ️ found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649 -1764840427674132ℹ️ no events need re-encoding /build/pkg/database/migrations.go:652 -1764840427674146ℹ️ migrating to version 6... /build/pkg/database/migrations.go:103 -1764840427674151ℹ️ converting events to compact serial-reference format... /build/pkg/database/migrations.go:706 -1764840427674168ℹ️ found 0 events to convert to compact format /build/pkg/database/migrations.go:846 -1764840427674172ℹ️ no events need conversion /build/pkg/database/migrations.go:849 - -╔════════════════════════════════════════════════════════╗ -║ BADGER BACKEND BENCHMARK SUITE ║ -╚════════════════════════════════════════════════════════╝ - -=== Starting Badger benchmark === -RunPeakThroughputTest (Badger).. - -=== Peak Throughput Test === -2025/12/04 09:27:07 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so -Events saved: 50000/50000 (100.0%), errors: 0 -Duration: 3.004845722s -Events/sec: 16639.79 -Avg latency: 1.323689ms -P90 latency: 1.758038ms -P95 latency: 2.077948ms -P99 latency: 3.856256ms -Bottom 10% Avg latency: 730.568µs -Wiping database between tests... -RunBurstPatternTest (Badger).. - -=== Burst Pattern Test === -Burst completed: 5000 events in 283.966934ms -Burst completed: 5000 events in 294.692625ms -Burst completed: 5000 events in 363.280618ms -Burst completed: 5000 events in 340.745621ms -Burst completed: 5000 events in 304.674199ms -Burst completed: 5000 events in 280.09038ms -Burst completed: 5000 events in 266.781378ms -Burst completed: 5000 events in 277.70181ms -Burst completed: 5000 events in 271.658408ms -Burst completed: 5000 events in 309.272288ms -Burst test completed: 50000 events in 8.000384614s, errors: 0 -Events/sec: 6249.70 -Wiping database between tests... -RunMixedReadWriteTest (Badger).. - -=== Mixed Read/Write Test === -Generating 1000 unique synthetic events (minimum 300 bytes each)... -Generated 1000 events: - Average content size: 312 bytes - All events are unique (incremental timestamps) - All events are properly signed - -Pre-populating database for read tests... -Generating 50000 unique synthetic events (minimum 300 bytes each)... -Generated 50000 events: - Average content size: 314 bytes - All events are unique (incremental timestamps) - All events are properly signed - -Mixed test completed: 25000 writes, 25000 reads in 24.409054146s -Combined ops/sec: 2048.42 -Wiping database between tests... -RunQueryTest (Badger).. - -=== Query Test === -Generating 10000 unique synthetic events (minimum 300 bytes each)... diff --git a/cmd/benchmark/reports/run_20251204_104444/khatru-badger_results.txt b/cmd/benchmark/reports/run_20251204_104444/khatru-badger_results.txt new file mode 100644 index 0000000..afc44ba --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_104444/khatru-badger_results.txt @@ -0,0 +1,201 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_khatru-badger_8 +Events: 50000, Workers: 24, Duration: 1m0s +1764845904475025ℹ️ migrating to version 1... /build/pkg/database/migrations.go:68 +1764845904475112ℹ️ migrating to version 2... /build/pkg/database/migrations.go:75 +1764845904475134ℹ️ migrating to version 3... /build/pkg/database/migrations.go:82 +1764845904475139ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304 +1764845904475152ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349 +1764845904475166ℹ️ migrating to version 4... /build/pkg/database/migrations.go:89 +1764845904475171ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357 +1764845904475182ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446 +1764845904475187ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555 +1764845904475202ℹ️ migrating to version 5... /build/pkg/database/migrations.go:96 +1764845904475207ℹ️ re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562 +1764845904475213ℹ️ found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649 +1764845904475218ℹ️ no events need re-encoding /build/pkg/database/migrations.go:652 +1764845904475233ℹ️ migrating to version 6... /build/pkg/database/migrations.go:103 +1764845904475238ℹ️ converting events to compact serial-reference format... /build/pkg/database/migrations.go:706 +1764845904475247ℹ️ found 0 events to convert to compact format /build/pkg/database/migrations.go:846 +1764845904475252ℹ️ no events need conversion /build/pkg/database/migrations.go:849 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/12/04 10:58:24 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 4.536980771s +Events/sec: 11020.54 +Avg latency: 2.141467ms +P90 latency: 3.415814ms +P95 latency: 4.218151ms +P99 latency: 6.573395ms +Bottom 10% Avg latency: 965.163µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 562.534206ms +Burst completed: 5000 events in 495.672511ms +Burst completed: 5000 events in 403.9333ms +Burst completed: 5000 events in 406.633831ms +Burst completed: 5000 events in 497.747932ms +Burst completed: 5000 events in 375.06022ms +Burst completed: 5000 events in 357.935146ms +Burst completed: 5000 events in 354.7018ms +Burst completed: 5000 events in 363.034284ms +Burst completed: 5000 events in 369.648798ms +Burst test completed: 50000 events in 9.192909424s, errors: 0 +Events/sec: 5438.97 +Wiping database between tests... +RunMixedReadWriteTest (Badger).. + +=== Mixed Read/Write Test === +Generating 1000 unique synthetic events (minimum 300 bytes each)... +Generated 1000 events: + Average content size: 312 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database for read tests... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Mixed test completed: 25000 writes, 25000 reads in 24.759007602s +Combined ops/sec: 2019.47 +Wiping database between tests... +RunQueryTest (Badger).. + +=== Query Test === +Generating 10000 unique synthetic events (minimum 300 bytes each)... +Generated 10000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 10000 events for query tests... +Query test completed: 279947 queries in 1m0.0101769s +Queries/sec: 4664.99 +Avg query latency: 3.577317ms +P95 query latency: 13.542975ms +P99 query latency: 20.687227ms +Wiping database between tests... +RunConcurrentQueryStoreTest (Badger).. + +=== Concurrent Query/Store Test === +Generating 5000 unique synthetic events (minimum 300 bytes each)... +Generated 5000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 5000 events for concurrent query/store test... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Concurrent test completed: 236582 operations (186582 queries, 50000 writes) in 1m0.004658961s +Operations/sec: 3942.73 +Avg latency: 2.272206ms +Avg query latency: 2.486915ms +Avg write latency: 1.470991ms +P95 latency: 6.629071ms +P99 latency: 17.102632ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 4.536980771s +Total Events: 50000 +Events/sec: 11020.54 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 233 MB +Avg Latency: 2.141467ms +P90 Latency: 3.415814ms +P95 Latency: 4.218151ms +P99 Latency: 6.573395ms +Bottom 10% Avg Latency: 965.163µs +---------------------------------------- + +Test: Burst Pattern +Duration: 9.192909424s +Total Events: 50000 +Events/sec: 5438.97 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 235 MB +Avg Latency: 1.990208ms +P90 Latency: 3.107457ms +P95 Latency: 3.856432ms +P99 Latency: 6.336835ms +Bottom 10% Avg Latency: 900.221µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.759007602s +Total Events: 50000 +Events/sec: 2019.47 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 174 MB +Avg Latency: 450.921µs +P90 Latency: 937.184µs +P95 Latency: 1.10841ms +P99 Latency: 1.666212ms +Bottom 10% Avg Latency: 1.296193ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.0101769s +Total Events: 279947 +Events/sec: 4664.99 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 142 MB +Avg Latency: 3.577317ms +P90 Latency: 10.560196ms +P95 Latency: 13.542975ms +P99 Latency: 20.687227ms +Bottom 10% Avg Latency: 14.957911ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.004658961s +Total Events: 236582 +Events/sec: 3942.73 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 161 MB +Avg Latency: 2.272206ms +P90 Latency: 4.975152ms +P95 Latency: 6.629071ms +P99 Latency: 17.102632ms +Bottom 10% Avg Latency: 8.89611ms +---------------------------------------- + +Report saved to: /tmp/benchmark_khatru-badger_8/benchmark_report.txt +AsciiDoc report saved to: /tmp/benchmark_khatru-badger_8/benchmark_report.adoc + +RELAY_NAME: khatru-badger +RELAY_URL: ws://khatru-badger:3334 +TEST_TIMESTAMP: 2025-12-04T11:01:44+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251204_104444/khatru-sqlite_results.txt b/cmd/benchmark/reports/run_20251204_104444/khatru-sqlite_results.txt new file mode 100644 index 0000000..2e5097b --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_104444/khatru-sqlite_results.txt @@ -0,0 +1,201 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_khatru-sqlite_8 +Events: 50000, Workers: 24, Duration: 1m0s +1764845699509026ℹ️ migrating to version 1... /build/pkg/database/migrations.go:68 +1764845699509106ℹ️ migrating to version 2... /build/pkg/database/migrations.go:75 +1764845699509128ℹ️ migrating to version 3... /build/pkg/database/migrations.go:82 +1764845699509133ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304 +1764845699509146ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349 +1764845699509159ℹ️ migrating to version 4... /build/pkg/database/migrations.go:89 +1764845699509164ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357 +1764845699509172ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446 +1764845699509178ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555 +1764845699509192ℹ️ migrating to version 5... /build/pkg/database/migrations.go:96 +1764845699509197ℹ️ re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562 +1764845699509206ℹ️ found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649 +1764845699509211ℹ️ no events need re-encoding /build/pkg/database/migrations.go:652 +1764845699509224ℹ️ migrating to version 6... /build/pkg/database/migrations.go:103 +1764845699509228ℹ️ converting events to compact serial-reference format... /build/pkg/database/migrations.go:706 +1764845699509238ℹ️ found 0 events to convert to compact format /build/pkg/database/migrations.go:846 +1764845699509242ℹ️ no events need conversion /build/pkg/database/migrations.go:849 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/12/04 10:54:59 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 4.109596583s +Events/sec: 12166.64 +Avg latency: 1.93573ms +P90 latency: 2.871977ms +P95 latency: 3.44036ms +P99 latency: 5.475515ms +Bottom 10% Avg latency: 961.636µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 515.356224ms +Burst completed: 5000 events in 399.9581ms +Burst completed: 5000 events in 459.416277ms +Burst completed: 5000 events in 428.20652ms +Burst completed: 5000 events in 747.547021ms +Burst completed: 5000 events in 647.984214ms +Burst completed: 5000 events in 488.90592ms +Burst completed: 5000 events in 377.505306ms +Burst completed: 5000 events in 465.109125ms +Burst completed: 5000 events in 429.364917ms +Burst test completed: 50000 events in 9.965909051s, errors: 0 +Events/sec: 5017.10 +Wiping database between tests... +RunMixedReadWriteTest (Badger).. + +=== Mixed Read/Write Test === +Generating 1000 unique synthetic events (minimum 300 bytes each)... +Generated 1000 events: + Average content size: 312 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database for read tests... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Mixed test completed: 25000 writes, 25000 reads in 24.612452482s +Combined ops/sec: 2031.49 +Wiping database between tests... +RunQueryTest (Badger).. + +=== Query Test === +Generating 10000 unique synthetic events (minimum 300 bytes each)... +Generated 10000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 10000 events for query tests... +Query test completed: 302291 queries in 1m0.005394665s +Queries/sec: 5037.73 +Avg query latency: 3.277291ms +P95 query latency: 12.307232ms +P99 query latency: 18.488169ms +Wiping database between tests... +RunConcurrentQueryStoreTest (Badger).. + +=== Concurrent Query/Store Test === +Generating 5000 unique synthetic events (minimum 300 bytes each)... +Generated 5000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 5000 events for concurrent query/store test... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Concurrent test completed: 243436 operations (193436 queries, 50000 writes) in 1m0.00468811s +Operations/sec: 4056.95 +Avg latency: 2.220391ms +Avg query latency: 2.393422ms +Avg write latency: 1.550983ms +P95 latency: 6.295105ms +P99 latency: 16.788623ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 4.109596583s +Total Events: 50000 +Events/sec: 12166.64 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 243 MB +Avg Latency: 1.93573ms +P90 Latency: 2.871977ms +P95 Latency: 3.44036ms +P99 Latency: 5.475515ms +Bottom 10% Avg Latency: 961.636µs +---------------------------------------- + +Test: Burst Pattern +Duration: 9.965909051s +Total Events: 50000 +Events/sec: 5017.10 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 257 MB +Avg Latency: 2.375602ms +P90 Latency: 3.854368ms +P95 Latency: 5.019226ms +P99 Latency: 8.287248ms +Bottom 10% Avg Latency: 1.013228ms +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.612452482s +Total Events: 50000 +Events/sec: 2031.49 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 190 MB +Avg Latency: 432.265µs +P90 Latency: 913.499µs +P95 Latency: 1.051763ms +P99 Latency: 1.395767ms +Bottom 10% Avg Latency: 1.160261ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.005394665s +Total Events: 302291 +Events/sec: 5037.73 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 234 MB +Avg Latency: 3.277291ms +P90 Latency: 9.787032ms +P95 Latency: 12.307232ms +P99 Latency: 18.488169ms +Bottom 10% Avg Latency: 13.509646ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.00468811s +Total Events: 243436 +Events/sec: 4056.95 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 148 MB +Avg Latency: 2.220391ms +P90 Latency: 4.746928ms +P95 Latency: 6.295105ms +P99 Latency: 16.788623ms +Bottom 10% Avg Latency: 8.681502ms +---------------------------------------- + +Report saved to: /tmp/benchmark_khatru-sqlite_8/benchmark_report.txt +AsciiDoc report saved to: /tmp/benchmark_khatru-sqlite_8/benchmark_report.adoc + +RELAY_NAME: khatru-sqlite +RELAY_URL: ws://khatru-sqlite:3334 +TEST_TIMESTAMP: 2025-12-04T10:58:19+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251204_104444/next-orly-badger_graph_traversal_results.txt b/cmd/benchmark/reports/run_20251204_104444/next-orly-badger_graph_traversal_results.txt new file mode 100644 index 0000000..128c040 --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_104444/next-orly-badger_graph_traversal_results.txt @@ -0,0 +1,43 @@ +Starting Network Graph Traversal Benchmark +Relay URL: ws://next-orly-badger:8080 +Workers: 24 +Pubkeys: 100000, Follows per pubkey: 1-1000 + +╔════════════════════════════════════════════════════════╗ +║ NETWORK GRAPH TRAVERSAL BENCHMARK (100k Pubkeys) ║ +║ Relay: ws://next-orly-badger:8080 ║ +╚════════════════════════════════════════════════════════╝ +Generating 100000 deterministic pubkeys... +2025/12/04 13:19:05 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so + Generated 10000/100000 pubkeys... + Generated 20000/100000 pubkeys... + Generated 30000/100000 pubkeys... + Generated 40000/100000 pubkeys... + Generated 50000/100000 pubkeys... + Generated 60000/100000 pubkeys... + Generated 70000/100000 pubkeys... + Generated 80000/100000 pubkeys... + Generated 90000/100000 pubkeys... + Generated 100000/100000 pubkeys... +Generated 100000 pubkeys in 2.473794335s +Generating follow graph (1-1000 follows per pubkey)... + Generated follow lists for 10000/100000 pubkeys... + Generated follow lists for 20000/100000 pubkeys... + Generated follow lists for 30000/100000 pubkeys... + Generated follow lists for 40000/100000 pubkeys... + Generated follow lists for 50000/100000 pubkeys... + Generated follow lists for 60000/100000 pubkeys... + Generated follow lists for 70000/100000 pubkeys... + Generated follow lists for 80000/100000 pubkeys... + Generated follow lists for 90000/100000 pubkeys... + Generated follow lists for 100000/100000 pubkeys... +Generated follow graph in 4.361425602s (avg 500.5 follows/pubkey, total 50048088 follows) + +Connecting to relay: ws://next-orly-badger:8080 +Connected successfully! +Creating follow list events via WebSocket... + Queued 10000/100000 follow list events... + Queued 20000/100000 follow list events... + Queued 30000/100000 follow list events... +1764854401568817🚨 NOTICE from ws://next-orly-badger:8080: 'EVENT processing failed' /go/pkg/mod/git.mleku.dev/mleku/nostr@v1.0.8/ws/client.go:326 +1764854402773843🚨 failed to write message: %!w(*net.OpError=&{write tcp 0xc0001b0f30 0xc0001b0f60 {}}) /go/pkg/mod/git.mleku.dev/mleku/nostr@v1.0.8/ws/connection.go:63 diff --git a/cmd/benchmark/reports/run_20251204_104444/next-orly-badger_results.txt b/cmd/benchmark/reports/run_20251204_104444/next-orly-badger_results.txt new file mode 100644 index 0000000..55dccf8 --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_104444/next-orly-badger_results.txt @@ -0,0 +1,201 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_next-orly-badger_8 +Events: 50000, Workers: 24, Duration: 1m0s +1764845290757888ℹ️ migrating to version 1... /build/pkg/database/migrations.go:68 +1764845290758084ℹ️ migrating to version 2... /build/pkg/database/migrations.go:75 +1764845290758119ℹ️ migrating to version 3... /build/pkg/database/migrations.go:82 +1764845290758124ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304 +1764845290758135ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349 +1764845290758150ℹ️ migrating to version 4... /build/pkg/database/migrations.go:89 +1764845290758155ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357 +1764845290758167ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446 +1764845290758173ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555 +1764845290758190ℹ️ migrating to version 5... /build/pkg/database/migrations.go:96 +1764845290758195ℹ️ re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562 +1764845290758204ℹ️ found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649 +1764845290758210ℹ️ no events need re-encoding /build/pkg/database/migrations.go:652 +1764845290758224ℹ️ migrating to version 6... /build/pkg/database/migrations.go:103 +1764845290758229ℹ️ converting events to compact serial-reference format... /build/pkg/database/migrations.go:706 +1764845290758241ℹ️ found 0 events to convert to compact format /build/pkg/database/migrations.go:846 +1764845290758247ℹ️ no events need conversion /build/pkg/database/migrations.go:849 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/12/04 10:48:10 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 4.113585513s +Events/sec: 12154.85 +Avg latency: 1.935424ms +P90 latency: 2.908617ms +P95 latency: 3.52541ms +P99 latency: 5.586614ms +Bottom 10% Avg latency: 943.568µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 384.404827ms +Burst completed: 5000 events in 366.066982ms +Burst completed: 5000 events in 413.972961ms +Burst completed: 5000 events in 540.992935ms +Burst completed: 5000 events in 444.488278ms +Burst completed: 5000 events in 342.979185ms +Burst completed: 5000 events in 393.451489ms +Burst completed: 5000 events in 530.328367ms +Burst completed: 5000 events in 483.78923ms +Burst completed: 5000 events in 356.248835ms +Burst test completed: 50000 events in 9.263453685s, errors: 0 +Events/sec: 5397.55 +Wiping database between tests... +RunMixedReadWriteTest (Badger).. + +=== Mixed Read/Write Test === +Generating 1000 unique synthetic events (minimum 300 bytes each)... +Generated 1000 events: + Average content size: 312 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database for read tests... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Mixed test completed: 25000 writes, 25000 reads in 24.809227197s +Combined ops/sec: 2015.38 +Wiping database between tests... +RunQueryTest (Badger).. + +=== Query Test === +Generating 10000 unique synthetic events (minimum 300 bytes each)... +Generated 10000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 10000 events for query tests... +Query test completed: 256384 queries in 1m0.005966351s +Queries/sec: 4272.64 +Avg query latency: 3.92418ms +P95 query latency: 14.841512ms +P99 query latency: 22.768552ms +Wiping database between tests... +RunConcurrentQueryStoreTest (Badger).. + +=== Concurrent Query/Store Test === +Generating 5000 unique synthetic events (minimum 300 bytes each)... +Generated 5000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 5000 events for concurrent query/store test... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Concurrent test completed: 220975 operations (170975 queries, 50000 writes) in 1m0.003529193s +Operations/sec: 3682.70 +Avg latency: 2.572587ms +Avg query latency: 2.803798ms +Avg write latency: 1.781959ms +P95 latency: 7.618974ms +P99 latency: 19.690393ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 4.113585513s +Total Events: 50000 +Events/sec: 12154.85 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 127 MB +Avg Latency: 1.935424ms +P90 Latency: 2.908617ms +P95 Latency: 3.52541ms +P99 Latency: 5.586614ms +Bottom 10% Avg Latency: 943.568µs +---------------------------------------- + +Test: Burst Pattern +Duration: 9.263453685s +Total Events: 50000 +Events/sec: 5397.55 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 231 MB +Avg Latency: 2.034536ms +P90 Latency: 3.126682ms +P95 Latency: 3.863975ms +P99 Latency: 6.098539ms +Bottom 10% Avg Latency: 935.662µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.809227197s +Total Events: 50000 +Events/sec: 2015.38 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 184 MB +Avg Latency: 438.529µs +P90 Latency: 917.747µs +P95 Latency: 1.086949ms +P99 Latency: 1.523991ms +Bottom 10% Avg Latency: 1.218802ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.005966351s +Total Events: 256384 +Events/sec: 4272.64 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 151 MB +Avg Latency: 3.92418ms +P90 Latency: 11.560176ms +P95 Latency: 14.841512ms +P99 Latency: 22.768552ms +Bottom 10% Avg Latency: 16.422096ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003529193s +Total Events: 220975 +Events/sec: 3682.70 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 207 MB +Avg Latency: 2.572587ms +P90 Latency: 5.5629ms +P95 Latency: 7.618974ms +P99 Latency: 19.690393ms +Bottom 10% Avg Latency: 10.306482ms +---------------------------------------- + +Report saved to: /tmp/benchmark_next-orly-badger_8/benchmark_report.txt +AsciiDoc report saved to: /tmp/benchmark_next-orly-badger_8/benchmark_report.adoc + +RELAY_NAME: next-orly-badger +RELAY_URL: ws://next-orly-badger:8080 +TEST_TIMESTAMP: 2025-12-04T10:51:30+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251204_104444/next-orly-neo4j_results.txt b/cmd/benchmark/reports/run_20251204_104444/next-orly-neo4j_results.txt new file mode 100644 index 0000000..c6f96e2 --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_104444/next-orly-neo4j_results.txt @@ -0,0 +1,201 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_next-orly-neo4j_8 +Events: 50000, Workers: 24, Duration: 1m0s +1764845495230040ℹ️ migrating to version 1... /build/pkg/database/migrations.go:68 +1764845495230118ℹ️ migrating to version 2... /build/pkg/database/migrations.go:75 +1764845495230154ℹ️ migrating to version 3... /build/pkg/database/migrations.go:82 +1764845495230159ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304 +1764845495230168ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349 +1764845495230182ℹ️ migrating to version 4... /build/pkg/database/migrations.go:89 +1764845495230187ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357 +1764845495230198ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446 +1764845495230204ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555 +1764845495230219ℹ️ migrating to version 5... /build/pkg/database/migrations.go:96 +1764845495230224ℹ️ re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562 +1764845495230232ℹ️ found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649 +1764845495230237ℹ️ no events need re-encoding /build/pkg/database/migrations.go:652 +1764845495230250ℹ️ migrating to version 6... /build/pkg/database/migrations.go:103 +1764845495230255ℹ️ converting events to compact serial-reference format... /build/pkg/database/migrations.go:706 +1764845495230265ℹ️ found 0 events to convert to compact format /build/pkg/database/migrations.go:846 +1764845495230269ℹ️ no events need conversion /build/pkg/database/migrations.go:849 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/12/04 10:51:35 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.737037757s +Events/sec: 13379.58 +Avg latency: 1.744659ms +P90 latency: 2.47401ms +P95 latency: 2.895953ms +P99 latency: 4.909556ms +Bottom 10% Avg latency: 897.762µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 421.882059ms +Burst completed: 5000 events in 412.531799ms +Burst completed: 5000 events in 429.098267ms +Burst completed: 5000 events in 390.670143ms +Burst completed: 5000 events in 438.603112ms +Burst completed: 5000 events in 366.944086ms +Burst completed: 5000 events in 534.455064ms +Burst completed: 5000 events in 559.621403ms +Burst completed: 5000 events in 393.427363ms +Burst completed: 5000 events in 371.875354ms +Burst test completed: 50000 events in 9.324705477s, errors: 0 +Events/sec: 5362.10 +Wiping database between tests... +RunMixedReadWriteTest (Badger).. + +=== Mixed Read/Write Test === +Generating 1000 unique synthetic events (minimum 300 bytes each)... +Generated 1000 events: + Average content size: 312 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database for read tests... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Mixed test completed: 25000 writes, 25000 reads in 24.924958418s +Combined ops/sec: 2006.02 +Wiping database between tests... +RunQueryTest (Badger).. + +=== Query Test === +Generating 10000 unique synthetic events (minimum 300 bytes each)... +Generated 10000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 10000 events for query tests... +Query test completed: 244167 queries in 1m0.008740456s +Queries/sec: 4068.86 +Avg query latency: 4.157543ms +P95 query latency: 15.724716ms +P99 query latency: 24.284362ms +Wiping database between tests... +RunConcurrentQueryStoreTest (Badger).. + +=== Concurrent Query/Store Test === +Generating 5000 unique synthetic events (minimum 300 bytes each)... +Generated 5000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 5000 events for concurrent query/store test... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Concurrent test completed: 227664 operations (177664 queries, 50000 writes) in 1m0.005538199s +Operations/sec: 3794.05 +Avg latency: 2.523997ms +Avg query latency: 2.668863ms +Avg write latency: 2.009247ms +P95 latency: 7.235855ms +P99 latency: 20.657306ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.737037757s +Total Events: 50000 +Events/sec: 13379.58 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 217 MB +Avg Latency: 1.744659ms +P90 Latency: 2.47401ms +P95 Latency: 2.895953ms +P99 Latency: 4.909556ms +Bottom 10% Avg Latency: 897.762µs +---------------------------------------- + +Test: Burst Pattern +Duration: 9.324705477s +Total Events: 50000 +Events/sec: 5362.10 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 304 MB +Avg Latency: 2.063122ms +P90 Latency: 3.130188ms +P95 Latency: 3.8975ms +P99 Latency: 6.378352ms +Bottom 10% Avg Latency: 954.959µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.924958418s +Total Events: 50000 +Events/sec: 2006.02 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 272 MB +Avg Latency: 475.177µs +P90 Latency: 996.497µs +P95 Latency: 1.205595ms +P99 Latency: 1.873106ms +Bottom 10% Avg Latency: 1.414397ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.008740456s +Total Events: 244167 +Events/sec: 4068.86 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 148 MB +Avg Latency: 4.157543ms +P90 Latency: 12.228439ms +P95 Latency: 15.724716ms +P99 Latency: 24.284362ms +Bottom 10% Avg Latency: 17.427943ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.005538199s +Total Events: 227664 +Events/sec: 3794.05 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 211 MB +Avg Latency: 2.523997ms +P90 Latency: 5.269722ms +P95 Latency: 7.235855ms +P99 Latency: 20.657306ms +Bottom 10% Avg Latency: 10.288906ms +---------------------------------------- + +Report saved to: /tmp/benchmark_next-orly-neo4j_8/benchmark_report.txt +AsciiDoc report saved to: /tmp/benchmark_next-orly-neo4j_8/benchmark_report.adoc + +RELAY_NAME: next-orly-neo4j +RELAY_URL: ws://next-orly-neo4j:8080 +TEST_TIMESTAMP: 2025-12-04T10:54:54+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251204_104444/nostr-rs-relay_results.txt b/cmd/benchmark/reports/run_20251204_104444/nostr-rs-relay_results.txt new file mode 100644 index 0000000..5d47424 --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_104444/nostr-rs-relay_results.txt @@ -0,0 +1,201 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_nostr-rs-relay_8 +Events: 50000, Workers: 24, Duration: 1m0s +1764846517510492ℹ️ migrating to version 1... /build/pkg/database/migrations.go:68 +1764846517510692ℹ️ migrating to version 2... /build/pkg/database/migrations.go:75 +1764846517511210ℹ️ migrating to version 3... /build/pkg/database/migrations.go:82 +1764846517511251ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304 +1764846517511274ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349 +1764846517511304ℹ️ migrating to version 4... /build/pkg/database/migrations.go:89 +1764846517511317ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357 +1764846517511329ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446 +1764846517511340ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555 +1764846517511366ℹ️ migrating to version 5... /build/pkg/database/migrations.go:96 +1764846517511373ℹ️ re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562 +1764846517511388ℹ️ found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649 +1764846517511394ℹ️ no events need re-encoding /build/pkg/database/migrations.go:652 +1764846517511443ℹ️ migrating to version 6... /build/pkg/database/migrations.go:103 +1764846517511452ℹ️ converting events to compact serial-reference format... /build/pkg/database/migrations.go:706 +1764846517511466ℹ️ found 0 events to convert to compact format /build/pkg/database/migrations.go:846 +1764846517511472ℹ️ no events need conversion /build/pkg/database/migrations.go:849 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/12/04 11:08:37 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 4.118969633s +Events/sec: 12138.96 +Avg latency: 1.937994ms +P90 latency: 2.852802ms +P95 latency: 3.444328ms +P99 latency: 5.727836ms +Bottom 10% Avg latency: 946.456µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 403.020917ms +Burst completed: 5000 events in 372.371612ms +Burst completed: 5000 events in 424.238707ms +Burst completed: 5000 events in 385.317421ms +Burst completed: 5000 events in 516.841571ms +Burst completed: 5000 events in 591.703187ms +Burst completed: 5000 events in 445.314485ms +Burst completed: 5000 events in 374.011153ms +Burst completed: 5000 events in 398.6942ms +Burst completed: 5000 events in 365.965806ms +Burst test completed: 50000 events in 9.28457886s, errors: 0 +Events/sec: 5385.27 +Wiping database between tests... +RunMixedReadWriteTest (Badger).. + +=== Mixed Read/Write Test === +Generating 1000 unique synthetic events (minimum 300 bytes each)... +Generated 1000 events: + Average content size: 312 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database for read tests... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Mixed test completed: 25000 writes, 25000 reads in 24.684808581s +Combined ops/sec: 2025.54 +Wiping database between tests... +RunQueryTest (Badger).. + +=== Query Test === +Generating 10000 unique synthetic events (minimum 300 bytes each)... +Generated 10000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 10000 events for query tests... +Query test completed: 251672 queries in 1m0.006178379s +Queries/sec: 4194.10 +Avg query latency: 4.01666ms +P95 query latency: 15.051188ms +P99 query latency: 22.451758ms +Wiping database between tests... +RunConcurrentQueryStoreTest (Badger).. + +=== Concurrent Query/Store Test === +Generating 5000 unique synthetic events (minimum 300 bytes each)... +Generated 5000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 5000 events for concurrent query/store test... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Concurrent test completed: 219001 operations (169001 queries, 50000 writes) in 1m0.004144652s +Operations/sec: 3649.76 +Avg latency: 2.620549ms +Avg query latency: 2.844617ms +Avg write latency: 1.863195ms +P95 latency: 7.482377ms +P99 latency: 20.396275ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 4.118969633s +Total Events: 50000 +Events/sec: 12138.96 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 150 MB +Avg Latency: 1.937994ms +P90 Latency: 2.852802ms +P95 Latency: 3.444328ms +P99 Latency: 5.727836ms +Bottom 10% Avg Latency: 946.456µs +---------------------------------------- + +Test: Burst Pattern +Duration: 9.28457886s +Total Events: 50000 +Events/sec: 5385.27 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 259 MB +Avg Latency: 2.040218ms +P90 Latency: 3.113648ms +P95 Latency: 3.901749ms +P99 Latency: 6.623842ms +Bottom 10% Avg Latency: 930.455µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.684808581s +Total Events: 50000 +Events/sec: 2025.54 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 170 MB +Avg Latency: 435.806µs +P90 Latency: 909.692µs +P95 Latency: 1.063135ms +P99 Latency: 1.414473ms +Bottom 10% Avg Latency: 1.173081ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.006178379s +Total Events: 251672 +Events/sec: 4194.10 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 159 MB +Avg Latency: 4.01666ms +P90 Latency: 11.874709ms +P95 Latency: 15.051188ms +P99 Latency: 22.451758ms +Bottom 10% Avg Latency: 16.47537ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.004144652s +Total Events: 219001 +Events/sec: 3649.76 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 154 MB +Avg Latency: 2.620549ms +P90 Latency: 5.591506ms +P95 Latency: 7.482377ms +P99 Latency: 20.396275ms +Bottom 10% Avg Latency: 10.345145ms +---------------------------------------- + +Report saved to: /tmp/benchmark_nostr-rs-relay_8/benchmark_report.txt +AsciiDoc report saved to: /tmp/benchmark_nostr-rs-relay_8/benchmark_report.adoc + +RELAY_NAME: nostr-rs-relay +RELAY_URL: ws://nostr-rs-relay:8080 +TEST_TIMESTAMP: 2025-12-04T11:11:56+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251204_104444/relayer-basic_results.txt b/cmd/benchmark/reports/run_20251204_104444/relayer-basic_results.txt new file mode 100644 index 0000000..f540b8d --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_104444/relayer-basic_results.txt @@ -0,0 +1,201 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_relayer-basic_8 +Events: 50000, Workers: 24, Duration: 1m0s +1764846109277147ℹ️ migrating to version 1... /build/pkg/database/migrations.go:68 +1764846109277265ℹ️ migrating to version 2... /build/pkg/database/migrations.go:75 +1764846109277319ℹ️ migrating to version 3... /build/pkg/database/migrations.go:82 +1764846109277325ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304 +1764846109277335ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349 +1764846109277350ℹ️ migrating to version 4... /build/pkg/database/migrations.go:89 +1764846109277355ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357 +1764846109277363ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446 +1764846109277369ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555 +1764846109277389ℹ️ migrating to version 5... /build/pkg/database/migrations.go:96 +1764846109277396ℹ️ re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562 +1764846109277405ℹ️ found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649 +1764846109277410ℹ️ no events need re-encoding /build/pkg/database/migrations.go:652 +1764846109277424ℹ️ migrating to version 6... /build/pkg/database/migrations.go:103 +1764846109277429ℹ️ converting events to compact serial-reference format... /build/pkg/database/migrations.go:706 +1764846109277439ℹ️ found 0 events to convert to compact format /build/pkg/database/migrations.go:846 +1764846109277443ℹ️ no events need conversion /build/pkg/database/migrations.go:849 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/12/04 11:01:49 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.829064715s +Events/sec: 13058.02 +Avg latency: 1.792879ms +P90 latency: 2.621872ms +P95 latency: 3.153103ms +P99 latency: 4.914106ms +Bottom 10% Avg latency: 919.64µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 406.089196ms +Burst completed: 5000 events in 571.162214ms +Burst completed: 5000 events in 417.21044ms +Burst completed: 5000 events in 388.695149ms +Burst completed: 5000 events in 448.68702ms +Burst completed: 5000 events in 349.680067ms +Burst completed: 5000 events in 352.379547ms +Burst completed: 5000 events in 348.007743ms +Burst completed: 5000 events in 396.819076ms +Burst completed: 5000 events in 388.190088ms +Burst test completed: 50000 events in 9.077665116s, errors: 0 +Events/sec: 5508.02 +Wiping database between tests... +RunMixedReadWriteTest (Badger).. + +=== Mixed Read/Write Test === +Generating 1000 unique synthetic events (minimum 300 bytes each)... +Generated 1000 events: + Average content size: 312 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database for read tests... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Mixed test completed: 25000 writes, 25000 reads in 24.750507885s +Combined ops/sec: 2020.16 +Wiping database between tests... +RunQueryTest (Badger).. + +=== Query Test === +Generating 10000 unique synthetic events (minimum 300 bytes each)... +Generated 10000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 10000 events for query tests... +Query test completed: 272535 queries in 1m0.006407297s +Queries/sec: 4541.76 +Avg query latency: 3.702484ms +P95 query latency: 14.064278ms +P99 query latency: 21.546984ms +Wiping database between tests... +RunConcurrentQueryStoreTest (Badger).. + +=== Concurrent Query/Store Test === +Generating 5000 unique synthetic events (minimum 300 bytes each)... +Generated 5000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 5000 events for concurrent query/store test... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Concurrent test completed: 236255 operations (186255 queries, 50000 writes) in 1m0.005350378s +Operations/sec: 3937.23 +Avg latency: 2.284443ms +Avg query latency: 2.471631ms +Avg write latency: 1.58715ms +P95 latency: 6.469447ms +P99 latency: 17.551758ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.829064715s +Total Events: 50000 +Events/sec: 13058.02 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 226 MB +Avg Latency: 1.792879ms +P90 Latency: 2.621872ms +P95 Latency: 3.153103ms +P99 Latency: 4.914106ms +Bottom 10% Avg Latency: 919.64µs +---------------------------------------- + +Test: Burst Pattern +Duration: 9.077665116s +Total Events: 50000 +Events/sec: 5508.02 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 263 MB +Avg Latency: 1.938961ms +P90 Latency: 2.872088ms +P95 Latency: 3.585166ms +P99 Latency: 6.443979ms +Bottom 10% Avg Latency: 919.151µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.750507885s +Total Events: 50000 +Events/sec: 2020.16 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 173 MB +Avg Latency: 448.262µs +P90 Latency: 942.865µs +P95 Latency: 1.09768ms +P99 Latency: 1.554199ms +Bottom 10% Avg Latency: 1.241163ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.006407297s +Total Events: 272535 +Events/sec: 4541.76 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 134 MB +Avg Latency: 3.702484ms +P90 Latency: 10.940029ms +P95 Latency: 14.064278ms +P99 Latency: 21.546984ms +Bottom 10% Avg Latency: 15.564533ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.005350378s +Total Events: 236255 +Events/sec: 3937.23 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 200 MB +Avg Latency: 2.284443ms +P90 Latency: 4.876796ms +P95 Latency: 6.469447ms +P99 Latency: 17.551758ms +Bottom 10% Avg Latency: 8.957464ms +---------------------------------------- + +Report saved to: /tmp/benchmark_relayer-basic_8/benchmark_report.txt +AsciiDoc report saved to: /tmp/benchmark_relayer-basic_8/benchmark_report.adoc + +RELAY_NAME: relayer-basic +RELAY_URL: ws://relayer-basic:7447 +TEST_TIMESTAMP: 2025-12-04T11:05:08+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251204_104444/rely-sqlite_graph_traversal_results.txt b/cmd/benchmark/reports/run_20251204_104444/rely-sqlite_graph_traversal_results.txt new file mode 100644 index 0000000..c6f9aa8 --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_104444/rely-sqlite_graph_traversal_results.txt @@ -0,0 +1,63 @@ +Starting Network Graph Traversal Benchmark +Relay URL: ws://rely-sqlite:3334 +Workers: 24 +Pubkeys: 100000, Follows per pubkey: 1-1000 + +╔════════════════════════════════════════════════════════╗ +║ NETWORK GRAPH TRAVERSAL BENCHMARK (100k Pubkeys) ║ +║ Relay: ws://rely-sqlite:3334 ║ +╚════════════════════════════════════════════════════════╝ +Generating 100000 deterministic pubkeys... +2025/12/04 11:12:01 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so + Generated 10000/100000 pubkeys... + Generated 20000/100000 pubkeys... + Generated 30000/100000 pubkeys... + Generated 40000/100000 pubkeys... + Generated 50000/100000 pubkeys... + Generated 60000/100000 pubkeys... + Generated 70000/100000 pubkeys... + Generated 80000/100000 pubkeys... + Generated 90000/100000 pubkeys... + Generated 100000/100000 pubkeys... +Generated 100000 pubkeys in 2.699112464s +Generating follow graph (1-1000 follows per pubkey)... + Generated follow lists for 10000/100000 pubkeys... + Generated follow lists for 20000/100000 pubkeys... + Generated follow lists for 30000/100000 pubkeys... + Generated follow lists for 40000/100000 pubkeys... + Generated follow lists for 50000/100000 pubkeys... + Generated follow lists for 60000/100000 pubkeys... + Generated follow lists for 70000/100000 pubkeys... + Generated follow lists for 80000/100000 pubkeys... + Generated follow lists for 90000/100000 pubkeys... + Generated follow lists for 100000/100000 pubkeys... +Generated follow graph in 5.172393834s (avg 500.5 follows/pubkey, total 50048088 follows) + +Connecting to relay: ws://rely-sqlite:3334 +Connected successfully! +Creating follow list events via WebSocket... + Queued 10000/100000 follow list events... + Queued 20000/100000 follow list events... + Queued 30000/100000 follow list events... + Queued 40000/100000 follow list events... + Queued 50000/100000 follow list events... + Queued 60000/100000 follow list events... + Queued 70000/100000 follow list events... + Queued 80000/100000 follow list events... + Queued 90000/100000 follow list events... + Queued 100000/100000 follow list events... +Created 100000 follow list events in 1m47.750797847s (928.07 events/sec, errors: 0) + Avg latency: 5.218453ms, P95: 30.619168ms, P99: 66.455368ms + +Waiting for events to be processed... + +=== Third-Degree Graph Traversal Benchmark (Network) === +Traversing 3 degrees of follows via WebSocket... +Sampling 1000 pubkeys for traversal... +Killed + +RELAY_NAME: rely-sqlite +RELAY_URL: ws://rely-sqlite:3334 +TEST_TYPE: Graph Traversal +STATUS: FAILED +TEST_TIMESTAMP: 2025-12-04T13:18:55+00:00 diff --git a/cmd/benchmark/reports/run_20251204_104444/rely-sqlite_results.txt b/cmd/benchmark/reports/run_20251204_104444/rely-sqlite_results.txt new file mode 100644 index 0000000..4856770 --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_104444/rely-sqlite_results.txt @@ -0,0 +1,202 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_rely-sqlite_8 +Events: 50000, Workers: 24, Duration: 1m0s +1764845084601162ℹ️ migrating to version 1... /build/pkg/database/migrations.go:68 +1764845084601278ℹ️ migrating to version 2... /build/pkg/database/migrations.go:75 +1764845084601338ℹ️ migrating to version 3... /build/pkg/database/migrations.go:82 +1764845084601353ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304 +1764845084601368ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349 +1764845084601398ℹ️ migrating to version 4... /build/pkg/database/migrations.go:89 +1764845084601404ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357 +1764845084601425ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446 +1764845084601432ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555 +1764845084601453ℹ️ migrating to version 5... /build/pkg/database/migrations.go:96 +1764845084601459ℹ️ re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562 +1764845084601470ℹ️ found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649 +1764845084601476ℹ️ no events need re-encoding /build/pkg/database/migrations.go:652 +1764845084601492ℹ️ migrating to version 6... /build/pkg/database/migrations.go:103 +1764845084601498ℹ️ converting events to compact serial-reference format... /build/pkg/database/migrations.go:706 +1764845084601512ℹ️ found 0 events to convert to compact format /build/pkg/database/migrations.go:846 +1764845084601518ℹ️ no events need conversion /build/pkg/database/migrations.go:849 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/12/04 10:44:44 INFO: Extracted embedded libsecp256k1 to /tmp/orly-libsecp256k1/libsecp256k1.so +2025/12/04 10:44:44 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 4.863868097s +Events/sec: 10279.88 +Avg latency: 2.303586ms +P90 latency: 3.506294ms +P95 latency: 4.26606ms +P99 latency: 6.589692ms +Bottom 10% Avg latency: 1.039748ms +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 490.290781ms +Burst completed: 5000 events in 660.13017ms +Burst completed: 5000 events in 395.417016ms +Burst completed: 5000 events in 386.572933ms +Burst completed: 5000 events in 453.417446ms +Burst completed: 5000 events in 431.074552ms +Burst completed: 5000 events in 425.56635ms +Burst completed: 5000 events in 480.609672ms +Burst completed: 5000 events in 491.483839ms +Burst completed: 5000 events in 855.851556ms +Burst test completed: 50000 events in 10.076554319s, errors: 0 +Events/sec: 4962.01 +Wiping database between tests... +RunMixedReadWriteTest (Badger).. + +=== Mixed Read/Write Test === +Generating 1000 unique synthetic events (minimum 300 bytes each)... +Generated 1000 events: + Average content size: 312 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database for read tests... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Mixed test completed: 25000 writes, 25000 reads in 24.99725206s +Combined ops/sec: 2000.22 +Wiping database between tests... +RunQueryTest (Badger).. + +=== Query Test === +Generating 10000 unique synthetic events (minimum 300 bytes each)... +Generated 10000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 10000 events for query tests... +Query test completed: 248134 queries in 1m0.010897965s +Queries/sec: 4134.82 +Avg query latency: 4.008215ms +P95 query latency: 15.241611ms +P99 query latency: 23.364071ms +Wiping database between tests... +RunConcurrentQueryStoreTest (Badger).. + +=== Concurrent Query/Store Test === +Generating 5000 unique synthetic events (minimum 300 bytes each)... +Generated 5000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 5000 events for concurrent query/store test... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Concurrent test completed: 223423 operations (173423 queries, 50000 writes) in 1m0.003723611s +Operations/sec: 3723.49 +Avg latency: 2.490436ms +Avg query latency: 2.752076ms +Avg write latency: 1.582945ms +P95 latency: 7.431916ms +P99 latency: 18.31948ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 4.863868097s +Total Events: 50000 +Events/sec: 10279.88 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 210 MB +Avg Latency: 2.303586ms +P90 Latency: 3.506294ms +P95 Latency: 4.26606ms +P99 Latency: 6.589692ms +Bottom 10% Avg Latency: 1.039748ms +---------------------------------------- + +Test: Burst Pattern +Duration: 10.076554319s +Total Events: 50000 +Events/sec: 4962.01 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 306 MB +Avg Latency: 2.440058ms +P90 Latency: 3.974234ms +P95 Latency: 5.200288ms +P99 Latency: 9.335708ms +Bottom 10% Avg Latency: 1.00845ms +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.99725206s +Total Events: 50000 +Events/sec: 2000.22 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 270 MB +Avg Latency: 457.992µs +P90 Latency: 957.983µs +P95 Latency: 1.136012ms +P99 Latency: 1.617368ms +Bottom 10% Avg Latency: 1.292479ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.010897965s +Total Events: 248134 +Events/sec: 4134.82 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 138 MB +Avg Latency: 4.008215ms +P90 Latency: 11.8477ms +P95 Latency: 15.241611ms +P99 Latency: 23.364071ms +Bottom 10% Avg Latency: 16.87008ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003723611s +Total Events: 223423 +Events/sec: 3723.49 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 195 MB +Avg Latency: 2.490436ms +P90 Latency: 5.497334ms +P95 Latency: 7.431916ms +P99 Latency: 18.31948ms +Bottom 10% Avg Latency: 9.827857ms +---------------------------------------- + +Report saved to: /tmp/benchmark_rely-sqlite_8/benchmark_report.txt +AsciiDoc report saved to: /tmp/benchmark_rely-sqlite_8/benchmark_report.adoc + +RELAY_NAME: rely-sqlite +RELAY_URL: ws://rely-sqlite:3334 +TEST_TIMESTAMP: 2025-12-04T10:48:05+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251204_104444/strfry_results.txt b/cmd/benchmark/reports/run_20251204_104444/strfry_results.txt new file mode 100644 index 0000000..caa1ce3 --- /dev/null +++ b/cmd/benchmark/reports/run_20251204_104444/strfry_results.txt @@ -0,0 +1,201 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_strfry_8 +Events: 50000, Workers: 24, Duration: 1m0s +1764846313173994ℹ️ migrating to version 1... /build/pkg/database/migrations.go:68 +1764846313174100ℹ️ migrating to version 2... /build/pkg/database/migrations.go:75 +1764846313174135ℹ️ migrating to version 3... /build/pkg/database/migrations.go:82 +1764846313174143ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:304 +1764846313174154ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:349 +1764846313174172ℹ️ migrating to version 4... /build/pkg/database/migrations.go:89 +1764846313174177ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:357 +1764846313174193ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:446 +1764846313174199ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:555 +1764846313174215ℹ️ migrating to version 5... /build/pkg/database/migrations.go:96 +1764846313174222ℹ️ re-encoding events with optimized tag binary format... /build/pkg/database/migrations.go:562 +1764846313174232ℹ️ found 0 events with e/p tags to re-encode /build/pkg/database/migrations.go:649 +1764846313174238ℹ️ no events need re-encoding /build/pkg/database/migrations.go:652 +1764846313174259ℹ️ migrating to version 6... /build/pkg/database/migrations.go:103 +1764846313174264ℹ️ converting events to compact serial-reference format... /build/pkg/database/migrations.go:706 +1764846313174274ℹ️ found 0 events to convert to compact format /build/pkg/database/migrations.go:846 +1764846313174282ℹ️ no events need conversion /build/pkg/database/migrations.go:849 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/12/04 11:05:13 INFO: Successfully loaded embedded libsecp256k1 v5.0.0 from /tmp/orly-libsecp256k1/libsecp256k1.so +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.876849434s +Events/sec: 12897.07 +Avg latency: 1.815658ms +P90 latency: 2.61564ms +P95 latency: 3.107597ms +P99 latency: 5.258081ms +Bottom 10% Avg latency: 919.54µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 399.187129ms +Burst completed: 5000 events in 388.99822ms +Burst completed: 5000 events in 402.825697ms +Burst completed: 5000 events in 402.426226ms +Burst completed: 5000 events in 509.746009ms +Burst completed: 5000 events in 360.327121ms +Burst completed: 5000 events in 354.620576ms +Burst completed: 5000 events in 340.233233ms +Burst completed: 5000 events in 484.991889ms +Burst completed: 5000 events in 450.540384ms +Burst test completed: 50000 events in 9.101582141s, errors: 0 +Events/sec: 5493.55 +Wiping database between tests... +RunMixedReadWriteTest (Badger).. + +=== Mixed Read/Write Test === +Generating 1000 unique synthetic events (minimum 300 bytes each)... +Generated 1000 events: + Average content size: 312 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database for read tests... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Mixed test completed: 25000 writes, 25000 reads in 24.968859674s +Combined ops/sec: 2002.49 +Wiping database between tests... +RunQueryTest (Badger).. + +=== Query Test === +Generating 10000 unique synthetic events (minimum 300 bytes each)... +Generated 10000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 10000 events for query tests... +Query test completed: 261904 queries in 1m0.006069229s +Queries/sec: 4364.63 +Avg query latency: 3.860709ms +P95 query latency: 14.612102ms +P99 query latency: 22.708667ms +Wiping database between tests... +RunConcurrentQueryStoreTest (Badger).. + +=== Concurrent Query/Store Test === +Generating 5000 unique synthetic events (minimum 300 bytes each)... +Generated 5000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 5000 events for concurrent query/store test... +Generating 50000 unique synthetic events (minimum 300 bytes each)... +Generated 50000 events: + Average content size: 314 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Concurrent test completed: 230898 operations (180898 queries, 50000 writes) in 1m0.007085265s +Operations/sec: 3847.85 +Avg latency: 2.400221ms +Avg query latency: 2.609803ms +Avg write latency: 1.641962ms +P95 latency: 6.834352ms +P99 latency: 18.125521ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.876849434s +Total Events: 50000 +Events/sec: 12897.07 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 194 MB +Avg Latency: 1.815658ms +P90 Latency: 2.61564ms +P95 Latency: 3.107597ms +P99 Latency: 5.258081ms +Bottom 10% Avg Latency: 919.54µs +---------------------------------------- + +Test: Burst Pattern +Duration: 9.101582141s +Total Events: 50000 +Events/sec: 5493.55 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 189 MB +Avg Latency: 1.954573ms +P90 Latency: 2.922786ms +P95 Latency: 3.66591ms +P99 Latency: 6.353176ms +Bottom 10% Avg Latency: 904.101µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.968859674s +Total Events: 50000 +Events/sec: 2002.49 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 188 MB +Avg Latency: 443.895µs +P90 Latency: 930.312µs +P95 Latency: 1.08191ms +P99 Latency: 1.476191ms +Bottom 10% Avg Latency: 1.222569ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.006069229s +Total Events: 261904 +Events/sec: 4364.63 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 198 MB +Avg Latency: 3.860709ms +P90 Latency: 11.381821ms +P95 Latency: 14.612102ms +P99 Latency: 22.708667ms +Bottom 10% Avg Latency: 16.28305ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.007085265s +Total Events: 230898 +Events/sec: 3847.85 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 178 MB +Avg Latency: 2.400221ms +P90 Latency: 5.16819ms +P95 Latency: 6.834352ms +P99 Latency: 18.125521ms +Bottom 10% Avg Latency: 9.340478ms +---------------------------------------- + +Report saved to: /tmp/benchmark_strfry_8/benchmark_report.txt +AsciiDoc report saved to: /tmp/benchmark_strfry_8/benchmark_report.adoc + +RELAY_NAME: strfry +RELAY_URL: ws://strfry:8080 +TEST_TIMESTAMP: 2025-12-04T11:08:32+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/pkg/version/version b/pkg/version/version index ab58ac5..5eb9675 100644 --- a/pkg/version/version +++ b/pkg/version/version @@ -1 +1 @@ -v0.34.0 \ No newline at end of file +v0.34.1 \ No newline at end of file