diff --git a/.claude/settings.local.json b/.claude/settings.local.json index fbae76c..ebef870 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -110,7 +110,11 @@ "Bash(timeout 60 go test:*)", "Bash(timeout 120 go test:*)", "Bash(timeout 180 ./scripts/test.sh:*)", - "Bash(CGO_ENABLED=0 timeout 60 go test:*)" + "Bash(CGO_ENABLED=0 timeout 60 go test:*)", + "Bash(CGO_ENABLED=1 go build:*)", + "Bash(lynx:*)", + "Bash(sed:*)", + "Bash(docker stop:*)" ], "deny": [], "ask": [] diff --git a/cmd/benchmark/.dockerignore b/cmd/benchmark/.dockerignore new file mode 100644 index 0000000..d238b00 --- /dev/null +++ b/cmd/benchmark/.dockerignore @@ -0,0 +1,6 @@ +data/ +reports/ +*.log +*.db +external/ +configs/ diff --git a/cmd/benchmark/Dockerfile.benchmark b/cmd/benchmark/Dockerfile.benchmark index ce02b07..4c1d1dc 100644 --- a/cmd/benchmark/Dockerfile.benchmark +++ b/cmd/benchmark/Dockerfile.benchmark @@ -4,14 +4,19 @@ FROM golang:1.25-alpine AS builder # Install build dependencies including libsecp256k1 build requirements RUN apk add --no-cache git ca-certificates gcc musl-dev autoconf automake libtool make -# Build libsecp256k1 +# Build libsecp256k1 EARLY - this layer will be cached unless secp256k1 version changes +# Using specific version tag and parallel builds for faster compilation RUN cd /tmp && \ git clone https://github.com/bitcoin-core/secp256k1.git && \ cd secp256k1 && \ + git checkout v0.6.0 && \ + git submodule init && \ + git submodule update && \ ./autogen.sh && \ ./configure --enable-module-recovery --enable-module-ecdh --enable-module-schnorrsig --enable-module-extrakeys && \ - make && \ - make install + make -j$(nproc) && \ + make install && \ + cd /tmp && rm -rf secp256k1 # Set working directory WORKDIR /build diff --git a/cmd/benchmark/Dockerfile.next-orly b/cmd/benchmark/Dockerfile.next-orly index dbbb39e..1fc2a64 100644 --- a/cmd/benchmark/Dockerfile.next-orly +++ b/cmd/benchmark/Dockerfile.next-orly @@ -4,12 +4,12 @@ FROM ubuntu:22.04 as builder # Set environment variables ARG GOLANG_VERSION=1.22.5 -# Update package list and install dependencies +# Update package list and install ALL dependencies in one layer RUN apt-get update && \ - apt-get install -y wget ca-certificates && \ + apt-get install -y wget ca-certificates build-essential autoconf libtool git && \ rm -rf /var/lib/apt/lists/* -# Download Go binary +# Download and install Go binary RUN wget https://go.dev/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz && \ rm -rf /usr/local/go && \ tar -C /usr/local -xzf go${GOLANG_VERSION}.linux-amd64.tar.gz && \ @@ -21,8 +21,7 @@ ENV PATH="/usr/local/go/bin:${PATH}" # Verify installation RUN go version -RUN apt update && \ - apt -y install build-essential autoconf libtool git wget +# Build secp256k1 EARLY - this layer will be cached unless secp256k1 version changes RUN cd /tmp && \ rm -rf secp256k1 && \ git clone https://github.com/bitcoin-core/secp256k1.git && \ @@ -32,17 +31,18 @@ RUN cd /tmp && \ git submodule update && \ ./autogen.sh && \ ./configure --enable-module-schnorrsig --enable-module-ecdh --prefix=/usr && \ - make -j1 && \ - make install + make -j$(nproc) && \ + make install && \ + cd /tmp && rm -rf secp256k1 # Set working directory WORKDIR /build -# Copy go modules +# Copy go modules AFTER secp256k1 build - this allows module cache to be reused COPY go.mod go.sum ./ RUN go mod download -# Copy source code +# Copy source code LAST - this is the most frequently changing layer COPY . . # Build the relay (libsecp256k1 installed via make install to /usr/lib) diff --git a/cmd/benchmark/docker-compose.yml b/cmd/benchmark/docker-compose.yml index cb8b947..4eaded1 100644 --- a/cmd/benchmark/docker-compose.yml +++ b/cmd/benchmark/docker-compose.yml @@ -269,6 +269,28 @@ services: retries: 3 start_period: 40s + # Rely-SQLite relay + rely-sqlite: + build: + context: . + dockerfile: Dockerfile.rely-sqlite + container_name: benchmark-rely-sqlite + environment: + - DATABASE_PATH=/data/relay.db + - RELAY_LISTEN=0.0.0.0:3334 + volumes: + - ./data/rely-sqlite:/data + ports: + - "8009:3334" + networks: + - benchmark-net + healthcheck: + test: ["CMD-SHELL", "curl -s --max-time 2 http://localhost:3334 2>&1 | head -1 | grep -q ."] + interval: 10s + timeout: 5s + retries: 10 + start_period: 30s + # Benchmark runner benchmark-runner: build: @@ -292,8 +314,10 @@ services: condition: service_healthy nostr-rs-relay: condition: service_healthy + rely-sqlite: + condition: service_healthy environment: - - BENCHMARK_TARGETS=next-orly-badger:8080,next-orly-dgraph:8080,next-orly-neo4j:8080,khatru-sqlite:3334,khatru-badger:3334,relayer-basic:7447,strfry:8080,nostr-rs-relay:8080 + - BENCHMARK_TARGETS=rely-sqlite:3334,next-orly-badger:8080,next-orly-dgraph:8080,next-orly-neo4j:8080,khatru-sqlite:3334,khatru-badger:3334,relayer-basic:7447,strfry:8080,nostr-rs-relay:8080 - BENCHMARK_EVENTS=50000 - BENCHMARK_WORKERS=24 - BENCHMARK_DURATION=60s diff --git a/cmd/benchmark/main.go b/cmd/benchmark/main.go index 6bcdd06..034572a 100644 --- a/cmd/benchmark/main.go +++ b/cmd/benchmark/main.go @@ -42,8 +42,9 @@ type BenchmarkConfig struct { NetRate int // events/sec per worker // Backend selection - UseDgraph bool - UseNeo4j bool + UseDgraph bool + UseNeo4j bool + UseRelySQLite bool } type BenchmarkResult struct { @@ -126,6 +127,12 @@ func main() { return } + if config.UseRelySQLite { + // Run Rely-SQLite benchmark + runRelySQLiteBenchmark(config) + return + } + // Run standard Badger benchmark fmt.Printf("Starting Nostr Relay Benchmark (Badger Backend)\n") fmt.Printf("Data Directory: %s\n", config.DataDir) @@ -189,6 +196,28 @@ func runNeo4jBenchmark(config *BenchmarkConfig) { neo4jBench.GenerateAsciidocReport() } +func runRelySQLiteBenchmark(config *BenchmarkConfig) { + fmt.Printf("Starting Nostr Relay Benchmark (Rely-SQLite Backend)\n") + fmt.Printf("Data Directory: %s\n", config.DataDir) + fmt.Printf( + "Events: %d, Workers: %d\n", + config.NumEvents, config.ConcurrentWorkers, + ) + + relysqliteBench, err := NewRelySQLiteBenchmark(config) + if err != nil { + log.Fatalf("Failed to create Rely-SQLite benchmark: %v", err) + } + defer relysqliteBench.Close() + + // Run Rely-SQLite benchmark suite + relysqliteBench.RunSuite() + + // Generate reports + relysqliteBench.GenerateReport() + relysqliteBench.GenerateAsciidocReport() +} + func parseFlags() *BenchmarkConfig { config := &BenchmarkConfig{} @@ -233,6 +262,10 @@ func parseFlags() *BenchmarkConfig { &config.UseNeo4j, "neo4j", false, "Use Neo4j backend (requires Docker)", ) + flag.BoolVar( + &config.UseRelySQLite, "relysqlite", false, + "Use rely-sqlite backend", + ) flag.Parse() return config diff --git a/cmd/benchmark/rely-sqlite-main.go b/cmd/benchmark/rely-sqlite-main.go new file mode 100644 index 0000000..8fefccc --- /dev/null +++ b/cmd/benchmark/rely-sqlite-main.go @@ -0,0 +1,99 @@ +//go:build ignore +// +build ignore + +package main + +import ( + "context" + "log" + "os" + "os/signal" + "syscall" + "time" + + "github.com/nbd-wtf/go-nostr" + sqlite "github.com/vertex-lab/nostr-sqlite" + "github.com/pippellia-btc/rely" +) + +func main() { + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM) + defer cancel() + + // Get configuration from environment with defaults + dbPath := os.Getenv("DATABASE_PATH") + if dbPath == "" { + dbPath = "./relay.db" + } + + listenAddr := os.Getenv("RELAY_LISTEN") + if listenAddr == "" { + listenAddr = "0.0.0.0:3334" + } + + // Initialize database + db, err := sqlite.New(dbPath) + if err != nil { + log.Fatalf("failed to initialize database: %v", err) + } + defer db.Close() + + // Create relay with handlers + relay := rely.NewRelay( + rely.WithQueueCapacity(10_000), + rely.WithMaxProcessors(10), + ) + + // Register event handlers using the correct API + relay.On.Event = Save(db) + relay.On.Req = Query(db) + relay.On.Count = Count(db) + + // Start relay + log.Printf("Starting rely-sqlite on %s with database %s", listenAddr, dbPath) + err = relay.StartAndServe(ctx, listenAddr) + if err != nil { + log.Fatalf("relay failed: %v", err) + } +} + +// Save handles incoming events +func Save(db *sqlite.Store) func(_ rely.Client, e *nostr.Event) error { + return func(_ rely.Client, e *nostr.Event) error { + ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) + defer cancel() + + switch { + case nostr.IsRegularKind(e.Kind): + _, err := db.Save(ctx, e) + return err + case nostr.IsReplaceableKind(e.Kind) || nostr.IsAddressableKind(e.Kind): + _, err := db.Replace(ctx, e) + return err + default: + return nil + } + } +} + +// Query retrieves events matching filters +func Query(db *sqlite.Store) func(ctx context.Context, _ rely.Client, filters nostr.Filters) ([]nostr.Event, error) { + return func(ctx context.Context, _ rely.Client, filters nostr.Filters) ([]nostr.Event, error) { + ctx, cancel := context.WithTimeout(ctx, 2*time.Second) + defer cancel() + return db.Query(ctx, filters...) + } +} + +// Count counts events matching filters +func Count(db *sqlite.Store) func(_ rely.Client, filters nostr.Filters) (count int64, approx bool, err error) { + return func(_ rely.Client, filters nostr.Filters) (count int64, approx bool, err error) { + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + count, err = db.Count(ctx, filters...) + if err != nil { + return -1, false, err + } + return count, false, nil + } +} diff --git a/cmd/benchmark/relysqlite_benchmark.go b/cmd/benchmark/relysqlite_benchmark.go new file mode 100644 index 0000000..d7a72b5 --- /dev/null +++ b/cmd/benchmark/relysqlite_benchmark.go @@ -0,0 +1,151 @@ +package main + +import ( + "fmt" + "log" + "os" + "path/filepath" + "time" + + "next.orly.dev/pkg/database" +) + +// RelySQLiteBenchmark wraps a Benchmark with rely-sqlite-specific setup +type RelySQLiteBenchmark struct { + config *BenchmarkConfig + database database.Database + bench *BenchmarkAdapter + dbPath string +} + +// NewRelySQLiteBenchmark creates a new rely-sqlite benchmark instance +func NewRelySQLiteBenchmark(config *BenchmarkConfig) (*RelySQLiteBenchmark, error) { + // Create database path + dbPath := filepath.Join(config.DataDir, "relysqlite.db") + + // Ensure parent directory exists + if err := os.MkdirAll(config.DataDir, 0755); err != nil { + return nil, fmt.Errorf("failed to create data directory: %w", err) + } + + // Remove existing database file if it exists + if _, err := os.Stat(dbPath); err == nil { + if err := os.Remove(dbPath); err != nil { + return nil, fmt.Errorf("failed to remove existing database: %w", err) + } + } + + // Create wrapper + wrapper, err := NewRelySQLiteWrapper(dbPath) + if err != nil { + return nil, fmt.Errorf("failed to create rely-sqlite wrapper: %w", err) + } + + // Wait for database to be ready + fmt.Println("Waiting for rely-sqlite database to be ready...") + select { + case <-wrapper.Ready(): + fmt.Println("Rely-sqlite database is ready") + case <-time.After(10 * time.Second): + wrapper.Close() + return nil, fmt.Errorf("rely-sqlite database failed to become ready") + } + + // Create adapter to use Database interface with Benchmark + adapter := NewBenchmarkAdapter(config, wrapper) + + relysqliteBench := &RelySQLiteBenchmark{ + config: config, + database: wrapper, + bench: adapter, + dbPath: dbPath, + } + + return relysqliteBench, nil +} + +// Close closes the rely-sqlite benchmark +func (rsb *RelySQLiteBenchmark) Close() { + fmt.Println("Closing rely-sqlite benchmark...") + + if rsb.database != nil { + rsb.database.Close() + } + + // Clean up database file + if rsb.dbPath != "" { + os.Remove(rsb.dbPath) + } +} + +// RunSuite runs the benchmark suite on rely-sqlite +func (rsb *RelySQLiteBenchmark) RunSuite() { + fmt.Println("\n╔════════════════════════════════════════════════════════╗") + fmt.Println("║ RELY-SQLITE BACKEND BENCHMARK SUITE ║") + fmt.Println("╚════════════════════════════════════════════════════════╝") + + // Run benchmark tests + fmt.Printf("\n=== Starting Rely-SQLite benchmark ===\n") + + fmt.Printf("RunPeakThroughputTest (Rely-SQLite)..\n") + rsb.bench.RunPeakThroughputTest() + fmt.Println("Wiping database between tests...") + rsb.wipeDatabase() + time.Sleep(5 * time.Second) + + fmt.Printf("RunBurstPatternTest (Rely-SQLite)..\n") + rsb.bench.RunBurstPatternTest() + fmt.Println("Wiping database between tests...") + rsb.wipeDatabase() + time.Sleep(5 * time.Second) + + fmt.Printf("RunMixedReadWriteTest (Rely-SQLite)..\n") + rsb.bench.RunMixedReadWriteTest() + fmt.Println("Wiping database between tests...") + rsb.wipeDatabase() + time.Sleep(5 * time.Second) + + fmt.Printf("RunQueryTest (Rely-SQLite)..\n") + rsb.bench.RunQueryTest() + fmt.Println("Wiping database between tests...") + rsb.wipeDatabase() + time.Sleep(5 * time.Second) + + fmt.Printf("RunConcurrentQueryStoreTest (Rely-SQLite)..\n") + rsb.bench.RunConcurrentQueryStoreTest() + + fmt.Printf("\n=== Rely-SQLite benchmark completed ===\n\n") +} + +// wipeDatabase recreates the database for a clean slate +func (rsb *RelySQLiteBenchmark) wipeDatabase() { + // Close existing database + if rsb.database != nil { + rsb.database.Close() + } + + // Remove database file + if rsb.dbPath != "" { + os.Remove(rsb.dbPath) + } + + // Recreate database + wrapper, err := NewRelySQLiteWrapper(rsb.dbPath) + if err != nil { + log.Printf("Failed to recreate database: %v", err) + return + } + + rsb.database = wrapper + rsb.bench.db = wrapper +} + +// GenerateReport generates the benchmark report +func (rsb *RelySQLiteBenchmark) GenerateReport() { + rsb.bench.GenerateReport() +} + +// GenerateAsciidocReport generates asciidoc format report +func (rsb *RelySQLiteBenchmark) GenerateAsciidocReport() { + rsb.bench.GenerateAsciidocReport() +} diff --git a/cmd/benchmark/relysqlite_converters.go b/cmd/benchmark/relysqlite_converters.go new file mode 100644 index 0000000..6dcbaf3 --- /dev/null +++ b/cmd/benchmark/relysqlite_converters.go @@ -0,0 +1,164 @@ +package main + +import ( + "encoding/hex" + "fmt" + + "github.com/nbd-wtf/go-nostr" + + orlyEvent "next.orly.dev/pkg/encoders/event" + orlyFilter "next.orly.dev/pkg/encoders/filter" + orlyTag "next.orly.dev/pkg/encoders/tag" +) + +// convertToNostrEvent converts an ORLY event to a go-nostr event +func convertToNostrEvent(ev *orlyEvent.E) (*nostr.Event, error) { + if ev == nil { + return nil, fmt.Errorf("nil event") + } + + nostrEv := &nostr.Event{ + ID: hex.EncodeToString(ev.ID), + PubKey: hex.EncodeToString(ev.Pubkey), + CreatedAt: nostr.Timestamp(ev.CreatedAt), + Kind: int(ev.Kind), + Content: string(ev.Content), + Sig: hex.EncodeToString(ev.Sig), + } + + // Convert tags + if ev.Tags != nil && len(*ev.Tags) > 0 { + nostrEv.Tags = make(nostr.Tags, 0, len(*ev.Tags)) + for _, orlyTag := range *ev.Tags { + if orlyTag != nil && len(orlyTag.T) > 0 { + tag := make(nostr.Tag, len(orlyTag.T)) + for i, val := range orlyTag.T { + tag[i] = string(val) + } + nostrEv.Tags = append(nostrEv.Tags, tag) + } + } + } + + return nostrEv, nil +} + +// convertFromNostrEvent converts a go-nostr event to an ORLY event +func convertFromNostrEvent(ne *nostr.Event) (*orlyEvent.E, error) { + if ne == nil { + return nil, fmt.Errorf("nil event") + } + + ev := orlyEvent.New() + + // Convert ID + idBytes, err := hex.DecodeString(ne.ID) + if err != nil { + return nil, fmt.Errorf("failed to decode ID: %w", err) + } + ev.ID = idBytes + + // Convert Pubkey + pubkeyBytes, err := hex.DecodeString(ne.PubKey) + if err != nil { + return nil, fmt.Errorf("failed to decode pubkey: %w", err) + } + ev.Pubkey = pubkeyBytes + + // Convert Sig + sigBytes, err := hex.DecodeString(ne.Sig) + if err != nil { + return nil, fmt.Errorf("failed to decode signature: %w", err) + } + ev.Sig = sigBytes + + // Simple fields + ev.CreatedAt = int64(ne.CreatedAt) + ev.Kind = uint16(ne.Kind) + ev.Content = []byte(ne.Content) + + // Convert tags + if len(ne.Tags) > 0 { + ev.Tags = orlyTag.NewS() + for _, nostrTag := range ne.Tags { + if len(nostrTag) > 0 { + tag := orlyTag.NewWithCap(len(nostrTag)) + for _, val := range nostrTag { + tag.T = append(tag.T, []byte(val)) + } + *ev.Tags = append(*ev.Tags, tag) + } + } + } else { + ev.Tags = orlyTag.NewS() + } + + return ev, nil +} + +// convertToNostrFilter converts an ORLY filter to a go-nostr filter +func convertToNostrFilter(f *orlyFilter.F) (nostr.Filter, error) { + if f == nil { + return nostr.Filter{}, fmt.Errorf("nil filter") + } + + filter := nostr.Filter{} + + // Convert IDs + if f.Ids != nil && len(f.Ids.T) > 0 { + filter.IDs = make([]string, 0, len(f.Ids.T)) + for _, id := range f.Ids.T { + filter.IDs = append(filter.IDs, hex.EncodeToString(id)) + } + } + + // Convert Authors + if f.Authors != nil && len(f.Authors.T) > 0 { + filter.Authors = make([]string, 0, len(f.Authors.T)) + for _, author := range f.Authors.T { + filter.Authors = append(filter.Authors, hex.EncodeToString(author)) + } + } + + // Convert Kinds + if f.Kinds != nil && len(f.Kinds.K) > 0 { + filter.Kinds = make([]int, 0, len(f.Kinds.K)) + for _, kind := range f.Kinds.K { + filter.Kinds = append(filter.Kinds, int(kind.K)) + } + } + + // Convert Tags + if f.Tags != nil && len(*f.Tags) > 0 { + filter.Tags = make(nostr.TagMap) + for _, tag := range *f.Tags { + if tag != nil && len(tag.T) >= 2 { + tagName := string(tag.T[0]) + tagValues := make([]string, 0, len(tag.T)-1) + for i := 1; i < len(tag.T); i++ { + tagValues = append(tagValues, string(tag.T[i])) + } + filter.Tags[tagName] = tagValues + } + } + } + + // Convert timestamps + if f.Since != nil { + ts := nostr.Timestamp(f.Since.V) + filter.Since = &ts + } + + if f.Until != nil { + ts := nostr.Timestamp(f.Until.V) + filter.Until = &ts + } + + // Convert limit + if f.Limit != nil { + limit := int(*f.Limit) + filter.Limit = limit + } + + return filter, nil +} diff --git a/cmd/benchmark/relysqlite_wrapper.go b/cmd/benchmark/relysqlite_wrapper.go new file mode 100644 index 0000000..d1e475d --- /dev/null +++ b/cmd/benchmark/relysqlite_wrapper.go @@ -0,0 +1,289 @@ +package main + +import ( + "context" + "fmt" + "io" + "time" + + sqlite "github.com/vertex-lab/nostr-sqlite" + + "next.orly.dev/pkg/database" + "next.orly.dev/pkg/database/indexes/types" + "next.orly.dev/pkg/encoders/event" + "next.orly.dev/pkg/encoders/filter" + "next.orly.dev/pkg/encoders/tag" + "next.orly.dev/pkg/interfaces/store" +) + +// RelySQLiteWrapper wraps the vertex-lab/nostr-sqlite store to implement +// the minimal database.Database interface needed for benchmarking +type RelySQLiteWrapper struct { + store *sqlite.Store + path string + ready chan struct{} +} + +// NewRelySQLiteWrapper creates a new wrapper around nostr-sqlite +func NewRelySQLiteWrapper(dbPath string) (*RelySQLiteWrapper, error) { + store, err := sqlite.New(dbPath) + if err != nil { + return nil, fmt.Errorf("failed to create sqlite store: %w", err) + } + + wrapper := &RelySQLiteWrapper{ + store: store, + path: dbPath, + ready: make(chan struct{}), + } + + // Close the ready channel immediately as SQLite is ready on creation + close(wrapper.ready) + + return wrapper, nil +} + +// SaveEvent saves an event to the database +func (w *RelySQLiteWrapper) SaveEvent(ctx context.Context, ev *event.E) (exists bool, err error) { + // Convert ORLY event to go-nostr event + nostrEv, err := convertToNostrEvent(ev) + if err != nil { + return false, fmt.Errorf("failed to convert event: %w", err) + } + + // Use Replace for replaceable/addressable events, Save otherwise + if isReplaceableKind(int(ev.Kind)) || isAddressableKind(int(ev.Kind)) { + replaced, err := w.store.Replace(ctx, nostrEv) + return replaced, err + } + + saved, err := w.store.Save(ctx, nostrEv) + return !saved, err // saved=true means it's new, exists=false +} + +// QueryEvents queries events matching the filter +func (w *RelySQLiteWrapper) QueryEvents(ctx context.Context, f *filter.F) (evs event.S, err error) { + // Convert ORLY filter to go-nostr filter + nostrFilter, err := convertToNostrFilter(f) + if err != nil { + return nil, fmt.Errorf("failed to convert filter: %w", err) + } + + // Query the store + nostrEvents, err := w.store.Query(ctx, nostrFilter) + if err != nil { + return nil, fmt.Errorf("query failed: %w", err) + } + + // Convert back to ORLY events + events := make(event.S, 0, len(nostrEvents)) + for _, ne := range nostrEvents { + ev, err := convertFromNostrEvent(&ne) + if err != nil { + continue // Skip events that fail to convert + } + events = append(events, ev) + } + + return events, nil +} + +// Close closes the database +func (w *RelySQLiteWrapper) Close() error { + if w.store != nil { + return w.store.Close() + } + return nil +} + +// Ready returns a channel that closes when the database is ready +func (w *RelySQLiteWrapper) Ready() <-chan struct{} { + return w.ready +} + +// Path returns the database path +func (w *RelySQLiteWrapper) Path() string { + return w.path +} + +// Wipe clears all data from the database +func (w *RelySQLiteWrapper) Wipe() error { + // Close current store + if err := w.store.Close(); err != nil { + return err + } + + // Delete the database file + // Note: This is a simplified approach - in production you'd want + // to handle this more carefully + return nil +} + +// Stub implementations for unused interface methods +func (w *RelySQLiteWrapper) Init(path string) error { return nil } +func (w *RelySQLiteWrapper) Sync() error { return nil } +func (w *RelySQLiteWrapper) SetLogLevel(level string) {} +func (w *RelySQLiteWrapper) GetSerialsFromFilter(f *filter.F) (serials types.Uint40s, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) WouldReplaceEvent(ev *event.E) (bool, types.Uint40s, error) { + return false, nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) QueryAllVersions(c context.Context, f *filter.F) (evs event.S, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) QueryEventsWithOptions(c context.Context, f *filter.F, includeDeleteEvents bool, showAllVersions bool) (evs event.S, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) QueryDeleteEventsByTargetId(c context.Context, targetEventId []byte) (evs event.S, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) QueryForSerials(c context.Context, f *filter.F) (serials types.Uint40s, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) QueryForIds(c context.Context, f *filter.F) (idPkTs []*store.IdPkTs, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) CountEvents(c context.Context, f *filter.F) (count int, approximate bool, err error) { + return 0, false, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) FetchEventBySerial(ser *types.Uint40) (ev *event.E, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) FetchEventsBySerials(serials []*types.Uint40) (events map[uint64]*event.E, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetSerialById(id []byte) (ser *types.Uint40, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetSerialsByIds(ids *tag.T) (serials map[string]*types.Uint40, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetSerialsByIdsWithFilter(ids *tag.T, fn func(ev *event.E, ser *types.Uint40) bool) (serials map[string]*types.Uint40, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetSerialsByRange(idx database.Range) (serials types.Uint40s, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetFullIdPubkeyBySerial(ser *types.Uint40) (fidpk *store.IdPkTs, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetFullIdPubkeyBySerials(sers []*types.Uint40) (fidpks []*store.IdPkTs, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) DeleteEvent(c context.Context, eid []byte) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) DeleteEventBySerial(c context.Context, ser *types.Uint40, ev *event.E) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) DeleteExpired() {} +func (w *RelySQLiteWrapper) ProcessDelete(ev *event.E, admins [][]byte) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) CheckForDeleted(ev *event.E, admins [][]byte) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) Import(rr io.Reader) {} +func (w *RelySQLiteWrapper) Export(c context.Context, writer io.Writer, pubkeys ...[]byte) { +} +func (w *RelySQLiteWrapper) ImportEventsFromReader(ctx context.Context, rr io.Reader) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) ImportEventsFromStrings(ctx context.Context, eventJSONs []string, policyManager interface{ CheckPolicy(action string, ev *event.E, pubkey []byte, remote string) (bool, error) }) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetRelayIdentitySecret() (skb []byte, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) SetRelayIdentitySecret(skb []byte) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetOrCreateRelayIdentitySecret() (skb []byte, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) SetMarker(key string, value []byte) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetMarker(key string) (value []byte, err error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) HasMarker(key string) bool { return false } +func (w *RelySQLiteWrapper) DeleteMarker(key string) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetSubscription(pubkey []byte) (*database.Subscription, error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) IsSubscriptionActive(pubkey []byte) (bool, error) { + return false, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) ExtendSubscription(pubkey []byte, days int) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) RecordPayment(pubkey []byte, amount int64, invoice, preimage string) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetPaymentHistory(pubkey []byte) ([]database.Payment, error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) ExtendBlossomSubscription(pubkey []byte, tier string, storageMB int64, daysExtended int) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetBlossomStorageQuota(pubkey []byte) (quotaMB int64, err error) { + return 0, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) IsFirstTimeUser(pubkey []byte) (bool, error) { + return false, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) AddNIP43Member(pubkey []byte, inviteCode string) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) RemoveNIP43Member(pubkey []byte) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) IsNIP43Member(pubkey []byte) (isMember bool, err error) { + return false, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetNIP43Membership(pubkey []byte) (*database.NIP43Membership, error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) GetAllNIP43Members() ([][]byte, error) { + return nil, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) StoreInviteCode(code string, expiresAt time.Time) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) ValidateInviteCode(code string) (valid bool, err error) { + return false, fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) DeleteInviteCode(code string) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) PublishNIP43MembershipEvent(kind int, pubkey []byte) error { + return fmt.Errorf("not implemented") +} +func (w *RelySQLiteWrapper) RunMigrations() {} +func (w *RelySQLiteWrapper) GetCachedJSON(f *filter.F) ([][]byte, bool) { + return nil, false +} +func (w *RelySQLiteWrapper) CacheMarshaledJSON(f *filter.F, marshaledJSON [][]byte) { +} +func (w *RelySQLiteWrapper) GetCachedEvents(f *filter.F) (event.S, bool) { + return nil, false +} +func (w *RelySQLiteWrapper) CacheEvents(f *filter.F, events event.S) {} +func (w *RelySQLiteWrapper) InvalidateQueryCache() {} +func (w *RelySQLiteWrapper) EventIdsBySerial(start uint64, count int) (evs []uint64, err error) { + return nil, fmt.Errorf("not implemented") +} + +// Helper function to check if a kind is replaceable +func isReplaceableKind(kind int) bool { + return (kind >= 10000 && kind < 20000) || kind == 0 || kind == 3 +} + +// Helper function to check if a kind is addressable +func isAddressableKind(kind int) bool { + return kind >= 30000 && kind < 40000 +} diff --git a/cmd/benchmark/reports/run_20251119_054648/aggregate_report.txt b/cmd/benchmark/reports/run_20251119_054648/aggregate_report.txt deleted file mode 100644 index 73e5940..0000000 --- a/cmd/benchmark/reports/run_20251119_054648/aggregate_report.txt +++ /dev/null @@ -1,176 +0,0 @@ -================================================================ -NOSTR RELAY BENCHMARK AGGREGATE REPORT -================================================================ -Generated: 2025-11-19T06:13:40+00:00 -Benchmark Configuration: - Events per test: 50000 - Concurrent workers: 24 - Test duration: 60s - -Relays tested: 8 - -================================================================ -SUMMARY BY RELAY -================================================================ - -Relay: next-orly-badger ----------------------------------------- -Status: COMPLETED -Events/sec: 2911.52 -Events/sec: 0.00 -Events/sec: 2911.52 -Success Rate: 23.2% -Success Rate: 0.0% -Success Rate: 50.0% -Avg Latency: 3.938925ms -Bottom 10% Avg Latency: 1.115318ms -Avg Latency: 0s -P95 Latency: 4.624387ms -P95 Latency: 0s -P95 Latency: 112.915µs - -Relay: next-orly-dgraph ----------------------------------------- -Status: COMPLETED -Events/sec: 2661.66 -Events/sec: 0.00 -Events/sec: 2661.66 -Success Rate: 23.2% -Success Rate: 0.0% -Success Rate: 50.0% -Avg Latency: 4.795769ms -Bottom 10% Avg Latency: 1.212562ms -Avg Latency: 0s -P95 Latency: 6.029522ms -P95 Latency: 0s -P95 Latency: 115.35µs - -Relay: next-orly-neo4j ----------------------------------------- -Status: COMPLETED -Events/sec: 2827.54 -Events/sec: 0.00 -Events/sec: 2827.54 -Success Rate: 23.2% -Success Rate: 0.0% -Success Rate: 50.0% -Avg Latency: 4.203722ms -Bottom 10% Avg Latency: 1.124184ms -Avg Latency: 0s -P95 Latency: 4.568189ms -P95 Latency: 0s -P95 Latency: 112.755µs - -Relay: khatru-sqlite ----------------------------------------- -Status: COMPLETED -Events/sec: 2840.91 -Events/sec: 0.00 -Events/sec: 2840.91 -Success Rate: 23.2% -Success Rate: 0.0% -Success Rate: 50.0% -Avg Latency: 4.23095ms -Bottom 10% Avg Latency: 1.142932ms -Avg Latency: 0s -P95 Latency: 4.703046ms -P95 Latency: 0s -P95 Latency: 113.897µs - -Relay: khatru-badger ----------------------------------------- -Status: COMPLETED -Events/sec: 2885.30 -Events/sec: 0.00 -Events/sec: 2885.30 -Success Rate: 23.2% -Success Rate: 0.0% -Success Rate: 50.0% -Avg Latency: 3.985846ms -Bottom 10% Avg Latency: 1.120349ms -Avg Latency: 0s -P95 Latency: 4.23797ms -P95 Latency: 0s -P95 Latency: 114.277µs - -Relay: relayer-basic ----------------------------------------- -Status: COMPLETED -Events/sec: 2707.76 -Events/sec: 0.00 -Events/sec: 2707.76 -Success Rate: 23.2% -Success Rate: 0.0% -Success Rate: 50.0% -Avg Latency: 4.657987ms -Bottom 10% Avg Latency: 1.266467ms -Avg Latency: 0s -P95 Latency: 5.603449ms -P95 Latency: 0s -P95 Latency: 112.123µs - -Relay: strfry ----------------------------------------- -Status: COMPLETED -Events/sec: 2841.22 -Events/sec: 0.00 -Events/sec: 2841.22 -Success Rate: 23.2% -Success Rate: 0.0% -Success Rate: 50.0% -Avg Latency: 4.088506ms -Bottom 10% Avg Latency: 1.135387ms -Avg Latency: 0s -P95 Latency: 4.517428ms -P95 Latency: 0s -P95 Latency: 113.396µs - -Relay: nostr-rs-relay ----------------------------------------- -Status: COMPLETED -Events/sec: 2883.32 -Events/sec: 0.00 -Events/sec: 2883.32 -Success Rate: 23.2% -Success Rate: 0.0% -Success Rate: 50.0% -Avg Latency: 4.044321ms -Bottom 10% Avg Latency: 1.103637ms -Avg Latency: 0s -P95 Latency: 4.602719ms -P95 Latency: 0s -P95 Latency: 114.679µs - - -================================================================ -DETAILED RESULTS -================================================================ - -Individual relay reports are available in: - - /reports/run_20251119_054648/khatru-badger_results.txt - - /reports/run_20251119_054648/khatru-sqlite_results.txt - - /reports/run_20251119_054648/next-orly-badger_results.txt - - /reports/run_20251119_054648/next-orly-dgraph_results.txt - - /reports/run_20251119_054648/next-orly-neo4j_results.txt - - /reports/run_20251119_054648/nostr-rs-relay_results.txt - - /reports/run_20251119_054648/relayer-basic_results.txt - - /reports/run_20251119_054648/strfry_results.txt - -================================================================ -BENCHMARK COMPARISON TABLE -================================================================ - -Relay Status Peak Tput/s Avg Latency Success Rate ----- ------ ----------- ----------- ------------ -next-orly-badger OK 2911.52 3.938925ms 23.2% -next-orly-dgraph OK 2661.66 4.795769ms 23.2% -next-orly-neo4j OK 2827.54 4.203722ms 23.2% -khatru-sqlite OK 2840.91 4.23095ms 23.2% -khatru-badger OK 2885.30 3.985846ms 23.2% -relayer-basic OK 2707.76 4.657987ms 23.2% -strfry OK 2841.22 4.088506ms 23.2% -nostr-rs-relay OK 2883.32 4.044321ms 23.2% - -================================================================ -End of Report -================================================================ diff --git a/cmd/benchmark/reports/run_20251119_054648/khatru-badger_results.txt b/cmd/benchmark/reports/run_20251119_054648/khatru-badger_results.txt deleted file mode 100644 index 409d471..0000000 --- a/cmd/benchmark/reports/run_20251119_054648/khatru-badger_results.txt +++ /dev/null @@ -1,422 +0,0 @@ -Starting Nostr Relay Benchmark (Badger Backend) -Data Directory: /tmp/benchmark_khatru-badger_8 -Events: 50000, Workers: 24, Duration: 1m0s -1763532013820368ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763532013820438ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763532013820599ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763532013820636ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763532013820660ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763532013820689ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763532013820696ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763532013820709ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763532013820716ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 -Loading real-world sample events from embedded data... -Loading real-world sample events (11,596 events from 6 months of Nostr)... -Loaded 11596 real-world events (already signed, zero crypto overhead) - -Event Statistics: - Total events: 11596 - Average content size: 588 bytes - Event kinds found: 25 unique - Most common kinds: - Kind 1: 7152 events - Kind 7: 1973 events - Kind 6: 934 events - Kind 10002: 337 events - Kind 0: 290 events - - -╔════════════════════════════════════════════════════════╗ -║ BADGER BACKEND BENCHMARK SUITE ║ -╚════════════════════════════════════════════════════════╝ - -=== Starting Badger benchmark === -RunPeakThroughputTest (Badger).. - -=== Peak Throughput Test === -1763532014234684🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014251555🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014251585🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014251639🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014254033🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014254683🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014260808🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014260870🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014260812🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014277104🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014277657🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014278205🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014278285🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014336903🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014363478🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014364290🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014364354🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014372904🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014372959🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532014372971⚠️ failed to process deletion for event ecd7b942d5a473589b4a3bc34f0b3dadf0c6e0ba9325d7a47604167acc757d5c: id not found in database /build/pkg/database/save-event.go:333 -1763532014372938🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014373003🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532014373014⚠️ failed to process deletion for event 900e73566bb098d7ec1880ec68521ef76e066b933d4d6b71dbe99ee156c4b307: id not found in database /build/pkg/database/save-event.go:333 -1763532014383001🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014388837🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014388919🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014391202🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014391216🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014395794🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014396847🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014396979🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014396873🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014396880🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014396846🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014397913🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014398032🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014398153🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014398247🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014398524🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014400310🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014403460🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014403895🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014404002🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014470332🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014934773🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014936459🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014936494🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014936497🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014937911🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014939536🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014940367🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014941984🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014942689🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014942709🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014942750🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014942741🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014942816🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014943338🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014943451🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014943893🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014944522🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014944537🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014945141🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014946012🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014946045🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532014946054⚠️ failed to process deletion for event 63eae8af9f42e2d37f93b1277bcf708c94aeb8935dd83d1e8e80136c4e4f8292: id not found in database /build/pkg/database/save-event.go:333 -1763532014952520🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014952585🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014952570🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014952563🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014952804🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014952823🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014962010🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014964509🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014966546🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014967125🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014967251🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014967275🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532014967285⚠️ failed to process deletion for event 2f5e01050c81c0d711e9f391726af47933b5fcfbe497434164069787d201e3b9: id not found in database /build/pkg/database/save-event.go:333 -1763532014967615🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014967952🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014968056🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014969528🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014970610🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014971146🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014971229🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014972191🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014972290🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014972853🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014972895🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014974659🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014974684🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014974733🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014974970🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014975040🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014977640🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014978813🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014978844🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014979660🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014980760🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014981739🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014984695🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014987050🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014990255🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014990268🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014993000🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014993071🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014996648🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014997887🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014997959🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014999208🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532014999202🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015000529🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015000865🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015000886🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532015000896⚠️ failed to process deletion for event e56f683d8a3ad6a1d7ed41f50bf2739179ac8f6e1418ff34e5e20903172237ea: id not found in database /build/pkg/database/save-event.go:333 -1763532015002409🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015004222🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015004801🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015008082🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015008121🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015009296🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015009474🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015009686🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015012705🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015012722🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015012772🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532015012781⚠️ failed to process deletion for event 4b07094ff22787f584f5ceddc11ae44c66ab513d01d7529e156d6adb75323eca: id not found in database /build/pkg/database/save-event.go:333 -1763532015012725🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015013275🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015015485🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015019833🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015020302🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015020468🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015021079🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015021179🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015021350🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532015021469⚠️ failed to process deletion for event 59475e9f41d77977a2b2c0d9acf7c32bad368dafdeab1e8f7be8cf0fe0e00ceb: id not found in database /build/pkg/database/save-event.go:333 -1763532015064798🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015093196🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015094045🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015094353🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015095456🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015095647🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015096130🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015097710🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015098568🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015098646🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015098916🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015098980🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015099247🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015099372🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015108396🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015119916🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015119977🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015120078🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015120399🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015120616🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015122335🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015122440🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015123578🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015124232🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015124271🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015124633🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015125046🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015125334🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015125478🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015126491🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015128111🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015129915🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015130524🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015130922🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015130936🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532015130947⚠️ failed to process deletion for event bd502ba9dc5c173b3b82708561f35118e2ca580f9c7e5baffceccdd9f6502462: id not found in database /build/pkg/database/save-event.go:333 -1763532015132041🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015132140🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015132159🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532015132169⚠️ failed to process deletion for event 961a3d9582d896fcd8755ccc634b7846e549131284740f6fec0d635d0bb072af: id not found in database /build/pkg/database/save-event.go:333 -1763532015132455🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015133481🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015135204🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015136901🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015139167🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015139314🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015139559🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015141275🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015142111🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015142160🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015142311🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015142362🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015142802🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015144182🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015145669🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015146606🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015146730🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015146734🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015146823🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015149126🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015149475🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015150317🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015150316🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015151297🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015151530🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015153167🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015153511🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015153573🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015155305🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015155850🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015156230🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015156939🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015156993🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015157067🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015157244🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015157507🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015157735🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015158040🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015158976🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015158977🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015159156🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015169407🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015169419🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015169831🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015169843🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015170898🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015171507🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015171504🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015171625🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015171670🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015171725🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015171739🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532015172695🚨 id not found in database /build/pkg/database/process-delete.go:43 -Events saved: 11594/50000 (23.2%), errors: 38406 -Duration: 4.018301066s -Events/sec: 2885.30 -Avg latency: 3.985846ms -P90 latency: 3.336914ms -P95 latency: 4.23797ms -P99 latency: 73.250512ms -Bottom 10% Avg latency: 1.120349ms -Wiping database between tests... -RunBurstPatternTest (Badger).. - -=== Burst Pattern Test === -Burst completed: 5000 events in 340.161594ms -Burst completed: 5000 events in 341.757352ms -Burst completed: 5000 events in 343.518235ms -Burst completed: 5000 events in 351.096045ms -Burst completed: 5000 events in 332.761293ms -Burst completed: 5000 events in 335.458889ms -Burst completed: 5000 events in 331.664424ms -Burst completed: 5000 events in 347.834073ms -Burst completed: 5000 events in 356.191406ms -Burst completed: 5000 events in 335.250061ms -Burst test completed: 0 events in 8.421134295s, errors: 50000 -Events/sec: 0.00 -Wiping database between tests... -RunMixedReadWriteTest (Badger).. - -=== Mixed Read/Write Test === -Pre-populating database for read tests... -Mixed test completed: 0 writes, 25000 reads in 22.626390359s -Combined ops/sec: 1104.90 -Wiping database between tests... -RunQueryTest (Badger).. - -=== Query Test === -Pre-populating database with 10000 events for query tests... -Query test completed: 403899 queries in 1m0.00394972s -Queries/sec: 6731.21 -Avg query latency: 1.574327ms -P95 query latency: 5.370236ms -P99 query latency: 9.259041ms -Wiping database between tests... -RunConcurrentQueryStoreTest (Badger).. - -=== Concurrent Query/Store Test === -Pre-populating database with 5000 events for concurrent query/store test... -Concurrent test completed: 564827 operations (564827 queries, 0 writes) in 1m0.001868516s -Operations/sec: 9413.49 -Avg latency: 45.49µs -Avg query latency: 45.49µs -Avg write latency: 0s -P95 latency: 87.116µs -P99 latency: 128.965µs - -=== Badger benchmark completed === - - -================================================================================ -BENCHMARK REPORT -================================================================================ - -Test: Peak Throughput -Duration: 4.018301066s -Total Events: 11594 -Events/sec: 2885.30 -Success Rate: 23.2% -Concurrent Workers: 24 -Memory Used: 398 MB -Avg Latency: 3.985846ms -P90 Latency: 3.336914ms -P95 Latency: 4.23797ms -P99 Latency: 73.250512ms -Bottom 10% Avg Latency: 1.120349ms ----------------------------------------- - -Test: Burst Pattern -Duration: 8.421134295s -Total Events: 0 -Events/sec: 0.00 -Success Rate: 0.0% -Concurrent Workers: 24 -Memory Used: 226 MB -Avg Latency: 0s -P90 Latency: 0s -P95 Latency: 0s -P99 Latency: 0s -Bottom 10% Avg Latency: 0s ----------------------------------------- - -Test: Mixed Read/Write -Duration: 22.626390359s -Total Events: 25000 -Events/sec: 1104.90 -Success Rate: 50.0% -Concurrent Workers: 24 -Memory Used: 400 MB -Avg Latency: 82.006µs -P90 Latency: 103.006µs -P95 Latency: 114.277µs -P99 Latency: 141.409µs -Bottom 10% Avg Latency: 128.204µs -Errors (25000): - - blocked: event already exists: 193c67d51dab9dc19eeebcde810364f2ba7d105ab9206de1f4f0f884db23e6e2 - - blocked: event already exists: 06061b630fd0881cbe7ed02114584fea59b9621c2e9479e6e6aa2be561240a90 - - blocked: event already exists: 1642d6770a74de7ca45169bc76dab334591bcb2191044da0b18459888164f9fc - - blocked: event already exists: 0312061d336fd22dc64b98130663835242e4479c54c7ca88b72c3b3093ef29a2 - - blocked: event already exists: 11aa0b6defe3d58cef2f93c06fb194bc72241f17fb35312594d279f6c8f13d44 - ... and 24995 more errors ----------------------------------------- - -Test: Query Performance -Duration: 1m0.00394972s -Total Events: 403899 -Events/sec: 6731.21 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 343 MB -Avg Latency: 1.574327ms -P90 Latency: 4.377275ms -P95 Latency: 5.370236ms -P99 Latency: 9.259041ms -Bottom 10% Avg Latency: 6.283482ms ----------------------------------------- - -Test: Concurrent Query/Store -Duration: 1m0.001868516s -Total Events: 564827 -Events/sec: 9413.49 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 314 MB -Avg Latency: 45.49µs -P90 Latency: 77.518µs -P95 Latency: 87.116µs -P99 Latency: 128.965µs -Bottom 10% Avg Latency: 98.509µs -Errors (50000): - - blocked: event already exists: 0ce484c600cb1c0b33f1e38ddea4b38a47069615d22114a9c621a9164d9b6218 - - blocked: event already exists: 0e0b4dfd5e4ecfb0d3acb8db48d13833edeac5163fbcba9fb94160b686c07595 - - blocked: event already exists: 048d7b07155b3832a76eac0b46bea764cac3597dfbc28b559698d51f915cb6d1 - - blocked: event already exists: 0ea6723d131534cf6e2209169a518c4bc598e3acad0618c2ef34df34c867cca1 - - blocked: event already exists: 03edc6b095b2a314733ea3dc689bb54e8739d443e9e69dd61334a5d376bf72a4 - ... and 49995 more errors ----------------------------------------- - -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-11-19T06:03:30+00:00 -BENCHMARK_CONFIG: - Events: 50000 - Workers: 24 - Duration: 60s diff --git a/cmd/benchmark/reports/run_20251119_054648/khatru-sqlite_results.txt b/cmd/benchmark/reports/run_20251119_054648/khatru-sqlite_results.txt deleted file mode 100644 index 1e6d79e..0000000 --- a/cmd/benchmark/reports/run_20251119_054648/khatru-sqlite_results.txt +++ /dev/null @@ -1,422 +0,0 @@ -Starting Nostr Relay Benchmark (Badger Backend) -Data Directory: /tmp/benchmark_khatru-sqlite_8 -Events: 50000, Workers: 24, Duration: 1m0s -1763531812447164ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763531812447229ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763531812447253ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763531812447258ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763531812447267ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763531812447280ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763531812447284ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763531812447299ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763531812447305ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 -Loading real-world sample events from embedded data... -Loading real-world sample events (11,596 events from 6 months of Nostr)... -Loaded 11596 real-world events (already signed, zero crypto overhead) - -Event Statistics: - Total events: 11596 - Average content size: 588 bytes - Event kinds found: 25 unique - Most common kinds: - Kind 1: 7152 events - Kind 7: 1973 events - Kind 6: 934 events - Kind 10002: 337 events - Kind 0: 290 events - - -╔════════════════════════════════════════════════════════╗ -║ BADGER BACKEND BENCHMARK SUITE ║ -╚════════════════════════════════════════════════════════╝ - -=== Starting Badger benchmark === -RunPeakThroughputTest (Badger).. - -=== Peak Throughput Test === -1763531812868715🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812885777🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812885785🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812885781🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812888045🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812888883🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812894492🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812894803🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812894864🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812906496🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812906886🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812907798🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812907811🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812970866🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812994211🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812994242🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531812995432🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813002343🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813002408🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531813002419⚠️ failed to process deletion for event 900e73566bb098d7ec1880ec68521ef76e066b933d4d6b71dbe99ee156c4b307: id not found in database /build/pkg/database/save-event.go:333 -1763531813002352🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813002444🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531813002453⚠️ failed to process deletion for event ecd7b942d5a473589b4a3bc34f0b3dadf0c6e0ba9325d7a47604167acc757d5c: id not found in database /build/pkg/database/save-event.go:333 -1763531813015072🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813021384🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813021454🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813024080🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813024096🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813028103🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813028164🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813028163🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813028172🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813029347🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813029380🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813029352🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813029730🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813030214🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813030785🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813030957🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813031557🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813035531🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813036469🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813036495🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813099067🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813562314🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813562971🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813565216🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813565216🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813567538🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813567585🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813567716🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813568218🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813568287🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813569557🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813570316🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813570360🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813570365🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813571136🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813571233🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813572029🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813572530🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813572639🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813574021🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813574064🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813574094🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531813574102⚠️ failed to process deletion for event 63eae8af9f42e2d37f93b1277bcf708c94aeb8935dd83d1e8e80136c4e4f8292: id not found in database /build/pkg/database/save-event.go:333 -1763531813580239🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813580983🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813581043🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813581051🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813581057🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813582095🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813591212🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813592938🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813595510🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813595557🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531813595567⚠️ failed to process deletion for event 2f5e01050c81c0d711e9f391726af47933b5fcfbe497434164069787d201e3b9: id not found in database /build/pkg/database/save-event.go:333 -1763531813596639🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813597830🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813597913🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813597995🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813598000🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813601235🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813601369🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813601858🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813603356🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813603525🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813604715🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813604863🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813605574🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813605606🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813607117🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813607278🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813607509🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813607624🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813612677🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813612797🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813614702🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813614764🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813614882🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813617726🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813623543🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813625833🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813626707🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813627647🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813632382🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813632571🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813635724🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813636426🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813636441🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813639483🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813639507🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813639674🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813639722🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813639732🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531813639741⚠️ failed to process deletion for event e56f683d8a3ad6a1d7ed41f50bf2739179ac8f6e1418ff34e5e20903172237ea: id not found in database /build/pkg/database/save-event.go:333 -1763531813640713🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813643809🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813644009🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813647476🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813647510🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813647627🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813648800🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813648916🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813650458🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813651830🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813651871🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531813651882⚠️ failed to process deletion for event 4b07094ff22787f584f5ceddc11ae44c66ab513d01d7529e156d6adb75323eca: id not found in database /build/pkg/database/save-event.go:333 -1763531813652883🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813652944🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813653924🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813659588🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813659716🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813659733🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813660461🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813660671🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813660696🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531813660706⚠️ failed to process deletion for event 59475e9f41d77977a2b2c0d9acf7c32bad368dafdeab1e8f7be8cf0fe0e00ceb: id not found in database /build/pkg/database/save-event.go:333 -1763531813665655🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813667093🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813669863🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813669986🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813670282🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813717436🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813717882🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813717901🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813718988🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813719942🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813721821🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813738580🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813738746🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813739264🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813748490🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813759607🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813759605🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813760687🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813762309🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813765035🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813765052🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813765323🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813765579🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813765764🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813766675🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813766899🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813767155🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813767196🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813772016🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813772674🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813776484🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813776639🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813778873🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813779242🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813779285🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531813779295⚠️ failed to process deletion for event bd502ba9dc5c173b3b82708561f35118e2ca580f9c7e5baffceccdd9f6502462: id not found in database /build/pkg/database/save-event.go:333 -1763531813779456🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813779483🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531813779497⚠️ failed to process deletion for event 961a3d9582d896fcd8755ccc634b7846e549131284740f6fec0d635d0bb072af: id not found in database /build/pkg/database/save-event.go:333 -1763531813779697🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813780185🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813781185🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813785435🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813786078🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813787727🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813788738🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813788858🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813791644🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813791838🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813791870🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813792007🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813792229🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813793643🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813795596🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813796358🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813797479🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813798679🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813800350🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813800531🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813800925🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813800936🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813800925🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813803971🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813803969🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813804958🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813806100🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813817052🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813817048🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813818064🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813818135🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813818275🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813818876🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813818912🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813819267🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813819296🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813819709🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813820510🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813820746🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813821066🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813821216🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813821322🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813821776🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813822026🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813822031🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813826902🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813827998🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813828498🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813828596🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813828687🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813828721🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813828601🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813829312🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531813830658🚨 id not found in database /build/pkg/database/process-delete.go:43 -Events saved: 11596/50000 (23.2%), errors: 38404 -Duration: 4.081787895s -Events/sec: 2840.91 -Avg latency: 4.23095ms -P90 latency: 3.400435ms -P95 latency: 4.703046ms -P99 latency: 81.047331ms -Bottom 10% Avg latency: 1.142932ms -Wiping database between tests... -RunBurstPatternTest (Badger).. - -=== Burst Pattern Test === -Burst completed: 5000 events in 346.663376ms -Burst completed: 5000 events in 333.067587ms -Burst completed: 5000 events in 330.484528ms -Burst completed: 5000 events in 338.487447ms -Burst completed: 5000 events in 341.447764ms -Burst completed: 5000 events in 364.127901ms -Burst completed: 5000 events in 344.947769ms -Burst completed: 5000 events in 341.432775ms -Burst completed: 5000 events in 347.698657ms -Burst completed: 5000 events in 341.10947ms -Burst test completed: 0 events in 8.436449617s, errors: 50000 -Events/sec: 0.00 -Wiping database between tests... -RunMixedReadWriteTest (Badger).. - -=== Mixed Read/Write Test === -Pre-populating database for read tests... -Mixed test completed: 0 writes, 25000 reads in 22.467041454s -Combined ops/sec: 1112.74 -Wiping database between tests... -RunQueryTest (Badger).. - -=== Query Test === -Pre-populating database with 10000 events for query tests... -Query test completed: 408433 queries in 1m0.005096356s -Queries/sec: 6806.64 -Avg query latency: 1.551089ms -P95 query latency: 5.244046ms -P99 query latency: 9.025085ms -Wiping database between tests... -RunConcurrentQueryStoreTest (Badger).. - -=== Concurrent Query/Store Test === -Pre-populating database with 5000 events for concurrent query/store test... -Concurrent test completed: 564551 operations (564551 queries, 0 writes) in 1m0.000283858s -Operations/sec: 9409.14 -Avg latency: 45.619µs -Avg query latency: 45.619µs -Avg write latency: 0s -P95 latency: 87.236µs -P99 latency: 130.949µs - -=== Badger benchmark completed === - - -================================================================================ -BENCHMARK REPORT -================================================================================ - -Test: Peak Throughput -Duration: 4.081787895s -Total Events: 11596 -Events/sec: 2840.91 -Success Rate: 23.2% -Concurrent Workers: 24 -Memory Used: 384 MB -Avg Latency: 4.23095ms -P90 Latency: 3.400435ms -P95 Latency: 4.703046ms -P99 Latency: 81.047331ms -Bottom 10% Avg Latency: 1.142932ms ----------------------------------------- - -Test: Burst Pattern -Duration: 8.436449617s -Total Events: 0 -Events/sec: 0.00 -Success Rate: 0.0% -Concurrent Workers: 24 -Memory Used: 215 MB -Avg Latency: 0s -P90 Latency: 0s -P95 Latency: 0s -P99 Latency: 0s -Bottom 10% Avg Latency: 0s ----------------------------------------- - -Test: Mixed Read/Write -Duration: 22.467041454s -Total Events: 25000 -Events/sec: 1112.74 -Success Rate: 50.0% -Concurrent Workers: 24 -Memory Used: 385 MB -Avg Latency: 82.061µs -P90 Latency: 102.695µs -P95 Latency: 113.897µs -P99 Latency: 140.147µs -Bottom 10% Avg Latency: 129.144µs -Errors (25000): - - blocked: event already exists: 06061b630fd0881cbe7ed02114584fea59b9621c2e9479e6e6aa2be561240a90 - - blocked: event already exists: 048d7b07155b3832a76eac0b46bea764cac3597dfbc28b559698d51f915cb6d1 - - blocked: event already exists: 0ea6723d131534cf6e2209169a518c4bc598e3acad0618c2ef34df34c867cca1 - - blocked: event already exists: 0312061d336fd22dc64b98130663835242e4479c54c7ca88b72c3b3093ef29a2 - - blocked: event already exists: 11aa0b6defe3d58cef2f93c06fb194bc72241f17fb35312594d279f6c8f13d44 - ... and 24995 more errors ----------------------------------------- - -Test: Query Performance -Duration: 1m0.005096356s -Total Events: 408433 -Events/sec: 6806.64 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 366 MB -Avg Latency: 1.551089ms -P90 Latency: 4.323112ms -P95 Latency: 5.244046ms -P99 Latency: 9.025085ms -Bottom 10% Avg Latency: 6.133631ms ----------------------------------------- - -Test: Concurrent Query/Store -Duration: 1m0.000283858s -Total Events: 564551 -Events/sec: 9409.14 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 353 MB -Avg Latency: 45.619µs -P90 Latency: 77.388µs -P95 Latency: 87.236µs -P99 Latency: 130.949µs -Bottom 10% Avg Latency: 98.767µs -Errors (50000): - - blocked: event already exists: 01e9943cf5e805283c512b9c26cf69f7e9ff412710d7543a3a52dc93ac7e8a57 - - blocked: event already exists: 00a5f5f6c7f1c4e6f71ab7df2c056e238ccd9b441e59ddf119d7ab7f1d7510e0 - - blocked: event already exists: 0312061d336fd22dc64b98130663835242e4479c54c7ca88b72c3b3093ef29a2 - - blocked: event already exists: 03edc6b095b2a314733ea3dc689bb54e8739d443e9e69dd61334a5d376bf72a4 - - blocked: event already exists: 0ea6723d131534cf6e2209169a518c4bc598e3acad0618c2ef34df34c867cca1 - ... and 49995 more errors ----------------------------------------- - -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-11-19T06:00:08+00:00 -BENCHMARK_CONFIG: - Events: 50000 - Workers: 24 - Duration: 60s diff --git a/cmd/benchmark/reports/run_20251119_054648/next-orly-badger_results.txt b/cmd/benchmark/reports/run_20251119_054648/next-orly-badger_results.txt deleted file mode 100644 index 7330227..0000000 --- a/cmd/benchmark/reports/run_20251119_054648/next-orly-badger_results.txt +++ /dev/null @@ -1,422 +0,0 @@ -Starting Nostr Relay Benchmark (Badger Backend) -Data Directory: /tmp/benchmark_next-orly-badger_8 -Events: 50000, Workers: 24, Duration: 1m0s -1763531208053542ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763531208053690ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763531208053742ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763531208053750ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763531208053760ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763531208053778ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763531208053784ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763531208053801ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763531208053808ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 -Loading real-world sample events from embedded data... -Loading real-world sample events (11,596 events from 6 months of Nostr)... -Loaded 11596 real-world events (already signed, zero crypto overhead) - -Event Statistics: - Total events: 11596 - Average content size: 588 bytes - Event kinds found: 25 unique - Most common kinds: - Kind 1: 7152 events - Kind 7: 1973 events - Kind 6: 934 events - Kind 10002: 337 events - Kind 0: 290 events - - -╔════════════════════════════════════════════════════════╗ -║ BADGER BACKEND BENCHMARK SUITE ║ -╚════════════════════════════════════════════════════════╝ - -=== Starting Badger benchmark === -RunPeakThroughputTest (Badger).. - -=== Peak Throughput Test === -1763531208465992🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208483000🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208483002🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208483661🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208485058🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208485701🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208491992🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208492314🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208492945🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208507228🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208507404🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208507623🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208508352🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208565748🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208593189🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208593671🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208594027🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208602302🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208602343🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531208602353⚠️ failed to process deletion for event 900e73566bb098d7ec1880ec68521ef76e066b933d4d6b71dbe99ee156c4b307: id not found in database /build/pkg/database/save-event.go:333 -1763531208602584🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208602605🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531208602611⚠️ failed to process deletion for event ecd7b942d5a473589b4a3bc34f0b3dadf0c6e0ba9325d7a47604167acc757d5c: id not found in database /build/pkg/database/save-event.go:333 -1763531208610060🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208618508🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208618604🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208622203🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208622231🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208626334🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208626349🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208626357🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208626874🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208626909🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208626885🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208626879🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208627275🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208627366🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208628641🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208628657🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208630021🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208632589🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208633861🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208633918🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531208707199🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209162276🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209162272🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209162817🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209162842🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209165303🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209165301🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209166674🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209166730🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209167368🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209167390🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209167886🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209168683🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209168686🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209169118🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209169150🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209170268🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209170273🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209170304🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209171666🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209171826🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209171854🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531209171863⚠️ failed to process deletion for event 63eae8af9f42e2d37f93b1277bcf708c94aeb8935dd83d1e8e80136c4e4f8292: id not found in database /build/pkg/database/save-event.go:333 -1763531209177425🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209177559🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209178508🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209178569🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209178611🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209179115🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209187446🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209190525🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209192408🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209192833🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209193582🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209193679🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209193698🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531209193706🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209193707⚠️ failed to process deletion for event 2f5e01050c81c0d711e9f391726af47933b5fcfbe497434164069787d201e3b9: id not found in database /build/pkg/database/save-event.go:333 -1763531209193752🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209195157🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209197056🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209197225🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209197585🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209198217🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209198927🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209198996🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209199967🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209200128🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209200229🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209201976🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209202454🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209202456🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209204631🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209204834🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209205952🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209206128🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209206132🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209208116🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209211081🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209213252🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209214253🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209215036🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209218532🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209219160🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209222863🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209222881🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209222965🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209224623🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209225425🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209225575🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209225925🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209225963🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531209225976⚠️ failed to process deletion for event e56f683d8a3ad6a1d7ed41f50bf2739179ac8f6e1418ff34e5e20903172237ea: id not found in database /build/pkg/database/save-event.go:333 -1763531209227378🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209230128🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209231247🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209234368🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209234474🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209235586🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209235721🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209235726🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209237302🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209237697🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209238490🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209238511🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531209238521⚠️ failed to process deletion for event 4b07094ff22787f584f5ceddc11ae44c66ab513d01d7529e156d6adb75323eca: id not found in database /build/pkg/database/save-event.go:333 -1763531209238633🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209240817🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209244908🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209246392🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209247168🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209247218🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209247624🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209247733🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531209247887⚠️ failed to process deletion for event 59475e9f41d77977a2b2c0d9acf7c32bad368dafdeab1e8f7be8cf0fe0e00ceb: id not found in database /build/pkg/database/save-event.go:333 -1763531209258006🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209279804🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209281422🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209281504🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209282064🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209282725🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209302439🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209302967🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209303684🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209304213🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209304357🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209304523🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209304583🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209305101🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209330784🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209340122🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209340215🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209345768🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209346170🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209346179🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209346425🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209346897🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209347883🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209347912🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209347965🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209348714🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209349164🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209349193🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209350881🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209350968🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209352091🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209353585🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209355263🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209355876🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209355928🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531209355941⚠️ failed to process deletion for event bd502ba9dc5c173b3b82708561f35118e2ca580f9c7e5baffceccdd9f6502462: id not found in database /build/pkg/database/save-event.go:333 -1763531209355985🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209356002🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531209356010⚠️ failed to process deletion for event 961a3d9582d896fcd8755ccc634b7846e549131284740f6fec0d635d0bb072af: id not found in database /build/pkg/database/save-event.go:333 -1763531209356081🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209356450🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209356604🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209359937🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209360087🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209361772🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209361849🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209362879🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209363754🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209365054🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209365110🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209365144🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209365175🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209366595🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209366598🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209368981🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209369366🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209369921🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209369991🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209370020🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209371151🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209372195🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209372361🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209372416🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209372441🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209374373🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209375330🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209375383🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209375621🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209376946🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209376950🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209377448🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209377499🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209378356🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209378357🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209378418🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209378454🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209382899🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209383451🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209387993🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209388236🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209401957🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209402627🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209402903🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209403446🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209403453🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209404336🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209404676🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209404984🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209405085🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209405676🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209405823🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209405861🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531209406920🚨 id not found in database /build/pkg/database/process-delete.go:43 -Events saved: 11592/50000 (23.2%), errors: 38408 -Duration: 3.98141893s -Events/sec: 2911.52 -Avg latency: 3.938925ms -P90 latency: 3.357143ms -P95 latency: 4.624387ms -P99 latency: 71.546396ms -Bottom 10% Avg latency: 1.115318ms -Wiping database between tests... -RunBurstPatternTest (Badger).. - -=== Burst Pattern Test === -Burst completed: 5000 events in 342.062444ms -Burst completed: 5000 events in 342.428441ms -Burst completed: 5000 events in 331.568769ms -Burst completed: 5000 events in 325.104719ms -Burst completed: 5000 events in 336.284199ms -Burst completed: 5000 events in 336.312002ms -Burst completed: 5000 events in 336.094447ms -Burst completed: 5000 events in 333.072923ms -Burst completed: 5000 events in 350.917627ms -Burst completed: 5000 events in 329.621891ms -Burst test completed: 0 events in 8.368751649s, errors: 50000 -Events/sec: 0.00 -Wiping database between tests... -RunMixedReadWriteTest (Badger).. - -=== Mixed Read/Write Test === -Pre-populating database for read tests... -Mixed test completed: 0 writes, 25000 reads in 22.617040249s -Combined ops/sec: 1105.36 -Wiping database between tests... -RunQueryTest (Badger).. - -=== Query Test === -Pre-populating database with 10000 events for query tests... -Query test completed: 404906 queries in 1m0.003855016s -Queries/sec: 6748.00 -Avg query latency: 1.567428ms -P95 query latency: 5.346663ms -P99 query latency: 9.186414ms -Wiping database between tests... -RunConcurrentQueryStoreTest (Badger).. - -=== Concurrent Query/Store Test === -Pre-populating database with 5000 events for concurrent query/store test... -Concurrent test completed: 565785 operations (565785 queries, 0 writes) in 1m0.000685928s -Operations/sec: 9429.64 -Avg latency: 45.237µs -Avg query latency: 45.237µs -Avg write latency: 0s -P95 latency: 86.405µs -P99 latency: 126.221µs - -=== Badger benchmark completed === - - -================================================================================ -BENCHMARK REPORT -================================================================================ - -Test: Peak Throughput -Duration: 3.98141893s -Total Events: 11592 -Events/sec: 2911.52 -Success Rate: 23.2% -Concurrent Workers: 24 -Memory Used: 409 MB -Avg Latency: 3.938925ms -P90 Latency: 3.357143ms -P95 Latency: 4.624387ms -P99 Latency: 71.546396ms -Bottom 10% Avg Latency: 1.115318ms ----------------------------------------- - -Test: Burst Pattern -Duration: 8.368751649s -Total Events: 0 -Events/sec: 0.00 -Success Rate: 0.0% -Concurrent Workers: 24 -Memory Used: 316 MB -Avg Latency: 0s -P90 Latency: 0s -P95 Latency: 0s -P99 Latency: 0s -Bottom 10% Avg Latency: 0s ----------------------------------------- - -Test: Mixed Read/Write -Duration: 22.617040249s -Total Events: 25000 -Events/sec: 1105.36 -Success Rate: 50.0% -Concurrent Workers: 24 -Memory Used: 358 MB -Avg Latency: 81.046µs -P90 Latency: 102.124µs -P95 Latency: 112.915µs -P99 Latency: 137.351µs -Bottom 10% Avg Latency: 122.82µs -Errors (25000): - - blocked: event already exists: 2197ff7ffc723d2fb4f7e44aeaf0ed8c2e0e2f3fb3aae29f2e33e0683ddf1a99 - - blocked: event already exists: 00a5f5f6c7f1c4e6f71ab7df2c056e238ccd9b441e59ddf119d7ab7f1d7510e0 - - blocked: event already exists: 0ce484c600cb1c0b33f1e38ddea4b38a47069615d22114a9c621a9164d9b6218 - - blocked: event already exists: 0ea6723d131534cf6e2209169a518c4bc598e3acad0618c2ef34df34c867cca1 - - blocked: event already exists: 1642d6770a74de7ca45169bc76dab334591bcb2191044da0b18459888164f9fc - ... and 24995 more errors ----------------------------------------- - -Test: Query Performance -Duration: 1m0.003855016s -Total Events: 404906 -Events/sec: 6748.00 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 370 MB -Avg Latency: 1.567428ms -P90 Latency: 4.371194ms -P95 Latency: 5.346663ms -P99 Latency: 9.186414ms -Bottom 10% Avg Latency: 6.253752ms ----------------------------------------- - -Test: Concurrent Query/Store -Duration: 1m0.000685928s -Total Events: 565785 -Events/sec: 9429.64 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 285 MB -Avg Latency: 45.237µs -P90 Latency: 76.916µs -P95 Latency: 86.405µs -P99 Latency: 126.221µs -Bottom 10% Avg Latency: 96.947µs -Errors (50000): - - blocked: event already exists: 00a5f5f6c7f1c4e6f71ab7df2c056e238ccd9b441e59ddf119d7ab7f1d7510e0 - - blocked: event already exists: 0312061d336fd22dc64b98130663835242e4479c54c7ca88b72c3b3093ef29a2 - - blocked: event already exists: 0f06ba91f371d4f8647a3f9529af3b9a012988eabf9f7c2eb42b39aa86697ea9 - - blocked: event already exists: 06061b630fd0881cbe7ed02114584fea59b9621c2e9479e6e6aa2be561240a90 - - blocked: event already exists: 01e9943cf5e805283c512b9c26cf69f7e9ff412710d7543a3a52dc93ac7e8a57 - ... and 49995 more errors ----------------------------------------- - -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-11-19T05:50:04+00:00 -BENCHMARK_CONFIG: - Events: 50000 - Workers: 24 - Duration: 60s diff --git a/cmd/benchmark/reports/run_20251119_054648/next-orly-dgraph_results.txt b/cmd/benchmark/reports/run_20251119_054648/next-orly-dgraph_results.txt deleted file mode 100644 index 8620217..0000000 --- a/cmd/benchmark/reports/run_20251119_054648/next-orly-dgraph_results.txt +++ /dev/null @@ -1,422 +0,0 @@ -Starting Nostr Relay Benchmark (Badger Backend) -Data Directory: /tmp/benchmark_next-orly-dgraph_8 -Events: 50000, Workers: 24, Duration: 1m0s -1763531409344607ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763531409344681ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763531409344706ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763531409344712ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763531409344720ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763531409344735ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763531409344740ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763531409344750ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763531409344755ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 -Loading real-world sample events from embedded data... -Loading real-world sample events (11,596 events from 6 months of Nostr)... -Loaded 11596 real-world events (already signed, zero crypto overhead) - -Event Statistics: - Total events: 11596 - Average content size: 588 bytes - Event kinds found: 25 unique - Most common kinds: - Kind 1: 7152 events - Kind 7: 1973 events - Kind 6: 934 events - Kind 10002: 337 events - Kind 0: 290 events - - -╔════════════════════════════════════════════════════════╗ -║ BADGER BACKEND BENCHMARK SUITE ║ -╚════════════════════════════════════════════════════════╝ - -=== Starting Badger benchmark === -RunPeakThroughputTest (Badger).. - -=== Peak Throughput Test === -1763531409759610🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409776086🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409776771🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409776804🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409778374🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409779152🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409784971🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409785617🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409785633🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409800163🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409801153🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409801420🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409802414🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409862218🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409893021🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409893729🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409893845🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409903047🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409903106🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531409903118⚠️ failed to process deletion for event 900e73566bb098d7ec1880ec68521ef76e066b933d4d6b71dbe99ee156c4b307: id not found in database /build/pkg/database/save-event.go:333 -1763531409903232🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409903259🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531409903268⚠️ failed to process deletion for event ecd7b942d5a473589b4a3bc34f0b3dadf0c6e0ba9325d7a47604167acc757d5c: id not found in database /build/pkg/database/save-event.go:333 -1763531409915985🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409923045🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409923074🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409924533🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409924591🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409931212🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409931262🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409931215🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409931529🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409931623🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409931683🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409931717🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409932268🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409932860🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409933379🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409934990🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409935370🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409940251🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409940354🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531409940445🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410018217🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410580488🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410581675🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410581900🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410582040🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410585617🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410585827🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410586939🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410587543🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410589137🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410589245🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410589709🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410589866🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410590173🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410591177🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410591619🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410591882🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410591940🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410593576🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410593582🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410595220🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410595270🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531410595283⚠️ failed to process deletion for event 63eae8af9f42e2d37f93b1277bcf708c94aeb8935dd83d1e8e80136c4e4f8292: id not found in database /build/pkg/database/save-event.go:333 -1763531410601931🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410602639🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410602948🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410603018🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410603032🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410604054🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410615476🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410618852🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410621310🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410622085🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410622542🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410622694🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410623081🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531410623190⚠️ failed to process deletion for event 2f5e01050c81c0d711e9f391726af47933b5fcfbe497434164069787d201e3b9: id not found in database /build/pkg/database/save-event.go:333 -1763531410625660🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410625875🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410627147🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410628773🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410628799🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410631527🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410633749🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410635043🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410635129🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410636981🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410637344🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410637661🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410637900🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410640346🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410640479🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410641582🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410642954🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410643510🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410644729🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410645234🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410646826🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410653499🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410655186🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410656858🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410657174🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410662374🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410663158🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410667648🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410667651🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410669820🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410670020🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410670837🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410670876🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410671525🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410671553🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531410671564⚠️ failed to process deletion for event e56f683d8a3ad6a1d7ed41f50bf2739179ac8f6e1418ff34e5e20903172237ea: id not found in database /build/pkg/database/save-event.go:333 -1763531410672779🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410674901🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410676001🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410681122🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410681358🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410681494🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410683894🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410685543🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410687981🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410688533🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410724866🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410724928🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531410724940⚠️ failed to process deletion for event 4b07094ff22787f584f5ceddc11ae44c66ab513d01d7529e156d6adb75323eca: id not found in database /build/pkg/database/save-event.go:333 -1763531410724987🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410770270🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410777849🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410778883🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410779911🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410780788🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410780841🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531410780854⚠️ failed to process deletion for event 59475e9f41d77977a2b2c0d9acf7c32bad368dafdeab1e8f7be8cf0fe0e00ceb: id not found in database /build/pkg/database/save-event.go:333 -1763531410781677🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410791857🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410794114🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410794283🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410796455🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410797679🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410798175🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410799065🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410802177🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410803368🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410804150🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410804338🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410804382🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410804458🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410804719🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410821062🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410833464🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410834106🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410834246🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410835105🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410836569🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410837441🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410837610🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410837763🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410840857🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410841784🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410842816🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410842931🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410843145🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410843483🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410844039🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410846135🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410846834🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410848379🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410850717🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410852878🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410853093🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531410853211⚠️ failed to process deletion for event bd502ba9dc5c173b3b82708561f35118e2ca580f9c7e5baffceccdd9f6502462: id not found in database /build/pkg/database/save-event.go:333 -1763531410852879🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410853359🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531410853372⚠️ failed to process deletion for event 961a3d9582d896fcd8755ccc634b7846e549131284740f6fec0d635d0bb072af: id not found in database /build/pkg/database/save-event.go:333 -1763531410853308🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410853791🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410855175🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410856611🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410857598🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410858251🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410859031🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410860805🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410862140🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410862321🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410862439🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410863187🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410863202🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410864904🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410868122🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410869575🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410869665🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410870058🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410870128🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410870884🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410874467🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410875395🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410891523🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410892283🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410893472🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410894764🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410895562🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410895719🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410896070🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410897173🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410897187🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410897198🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410897778🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410897979🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410898440🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410898758🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410898832🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410899952🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410900622🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410933276🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410933374🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410933901🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410934099🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410934447🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410934494🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410935849🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410935923🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410936168🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410936541🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410936556🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410936570🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410937707🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531410937742🚨 id not found in database /build/pkg/database/process-delete.go:43 -Events saved: 11594/50000 (23.2%), errors: 38406 -Duration: 4.355930627s -Events/sec: 2661.66 -Avg latency: 4.795769ms -P90 latency: 4.155613ms -P95 latency: 6.029522ms -P99 latency: 90.290502ms -Bottom 10% Avg latency: 1.212562ms -Wiping database between tests... -RunBurstPatternTest (Badger).. - -=== Burst Pattern Test === -Burst completed: 5000 events in 347.262129ms -Burst completed: 5000 events in 340.789843ms -Burst completed: 5000 events in 335.779512ms -Burst completed: 5000 events in 337.508905ms -Burst completed: 5000 events in 332.483505ms -Burst completed: 5000 events in 330.245503ms -Burst completed: 5000 events in 327.047944ms -Burst completed: 5000 events in 337.854803ms -Burst completed: 5000 events in 341.472684ms -Burst completed: 5000 events in 338.139736ms -Burst test completed: 0 events in 8.375225019s, errors: 50000 -Events/sec: 0.00 -Wiping database between tests... -RunMixedReadWriteTest (Badger).. - -=== Mixed Read/Write Test === -Pre-populating database for read tests... -Mixed test completed: 0 writes, 25000 reads in 22.648388132s -Combined ops/sec: 1103.83 -Wiping database between tests... -RunQueryTest (Badger).. - -=== Query Test === -Pre-populating database with 10000 events for query tests... -Query test completed: 392001 queries in 1m0.005057189s -Queries/sec: 6532.80 -Avg query latency: 1.635372ms -P95 query latency: 5.6029ms -P99 query latency: 9.496203ms -Wiping database between tests... -RunConcurrentQueryStoreTest (Badger).. - -=== Concurrent Query/Store Test === -Pre-populating database with 5000 events for concurrent query/store test... -Concurrent test completed: 566246 operations (566246 queries, 0 writes) in 1m0.00114177s -Operations/sec: 9437.25 -Avg latency: 45.308µs -Avg query latency: 45.308µs -Avg write latency: 0s -P95 latency: 87.115µs -P99 latency: 132.623µs - -=== Badger benchmark completed === - - -================================================================================ -BENCHMARK REPORT -================================================================================ - -Test: Peak Throughput -Duration: 4.355930627s -Total Events: 11594 -Events/sec: 2661.66 -Success Rate: 23.2% -Concurrent Workers: 24 -Memory Used: 344 MB -Avg Latency: 4.795769ms -P90 Latency: 4.155613ms -P95 Latency: 6.029522ms -P99 Latency: 90.290502ms -Bottom 10% Avg Latency: 1.212562ms ----------------------------------------- - -Test: Burst Pattern -Duration: 8.375225019s -Total Events: 0 -Events/sec: 0.00 -Success Rate: 0.0% -Concurrent Workers: 24 -Memory Used: 368 MB -Avg Latency: 0s -P90 Latency: 0s -P95 Latency: 0s -P99 Latency: 0s -Bottom 10% Avg Latency: 0s ----------------------------------------- - -Test: Mixed Read/Write -Duration: 22.648388132s -Total Events: 25000 -Events/sec: 1103.83 -Success Rate: 50.0% -Concurrent Workers: 24 -Memory Used: 335 MB -Avg Latency: 82.523µs -P90 Latency: 103.357µs -P95 Latency: 115.35µs -P99 Latency: 145.828µs -Bottom 10% Avg Latency: 129.81µs -Errors (25000): - - blocked: event already exists: 0312061d336fd22dc64b98130663835242e4479c54c7ca88b72c3b3093ef29a2 - - blocked: event already exists: 06061b630fd0881cbe7ed02114584fea59b9621c2e9479e6e6aa2be561240a90 - - blocked: event already exists: 0ce484c600cb1c0b33f1e38ddea4b38a47069615d22114a9c621a9164d9b6218 - - blocked: event already exists: 2197ff7ffc723d2fb4f7e44aeaf0ed8c2e0e2f3fb3aae29f2e33e0683ddf1a99 - - blocked: event already exists: 0ea6723d131534cf6e2209169a518c4bc598e3acad0618c2ef34df34c867cca1 - ... and 24995 more errors ----------------------------------------- - -Test: Query Performance -Duration: 1m0.005057189s -Total Events: 392001 -Events/sec: 6532.80 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 421 MB -Avg Latency: 1.635372ms -P90 Latency: 4.618756ms -P95 Latency: 5.6029ms -P99 Latency: 9.496203ms -Bottom 10% Avg Latency: 6.522705ms ----------------------------------------- - -Test: Concurrent Query/Store -Duration: 1m0.00114177s -Total Events: 566246 -Events/sec: 9437.25 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 437 MB -Avg Latency: 45.308µs -P90 Latency: 76.856µs -P95 Latency: 87.115µs -P99 Latency: 132.623µs -Bottom 10% Avg Latency: 98.925µs -Errors (50000): - - blocked: event already exists: 0312061d336fd22dc64b98130663835242e4479c54c7ca88b72c3b3093ef29a2 - - blocked: event already exists: 01e9943cf5e805283c512b9c26cf69f7e9ff412710d7543a3a52dc93ac7e8a57 - - blocked: event already exists: 1642d6770a74de7ca45169bc76dab334591bcb2191044da0b18459888164f9fc - - blocked: event already exists: 15c0a862ce4191bc51a1b668f77869c13cd81fd0af9473759a04ce2637a8860a - - blocked: event already exists: 0e0b4dfd5e4ecfb0d3acb8db48d13833edeac5163fbcba9fb94160b686c07595 - ... and 49995 more errors ----------------------------------------- - -Report saved to: /tmp/benchmark_next-orly-dgraph_8/benchmark_report.txt -AsciiDoc report saved to: /tmp/benchmark_next-orly-dgraph_8/benchmark_report.adoc - -RELAY_NAME: next-orly-dgraph -RELAY_URL: ws://next-orly-dgraph:8080 -TEST_TIMESTAMP: 2025-11-19T05:53:26+00:00 -BENCHMARK_CONFIG: - Events: 50000 - Workers: 24 - Duration: 60s diff --git a/cmd/benchmark/reports/run_20251119_054648/next-orly-neo4j_results.txt b/cmd/benchmark/reports/run_20251119_054648/next-orly-neo4j_results.txt deleted file mode 100644 index ad9c099..0000000 --- a/cmd/benchmark/reports/run_20251119_054648/next-orly-neo4j_results.txt +++ /dev/null @@ -1,422 +0,0 @@ -Starting Nostr Relay Benchmark (Badger Backend) -Data Directory: /tmp/benchmark_next-orly-neo4j_8 -Events: 50000, Workers: 24, Duration: 1m0s -1763531611066103ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763531611066178ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763531611066207ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763531611066214ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763531611066225ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763531611066244ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763531611066251ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763531611066267ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763531611066274ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 -Loading real-world sample events from embedded data... -Loading real-world sample events (11,596 events from 6 months of Nostr)... -Loaded 11596 real-world events (already signed, zero crypto overhead) - -Event Statistics: - Total events: 11596 - Average content size: 588 bytes - Event kinds found: 25 unique - Most common kinds: - Kind 1: 7152 events - Kind 7: 1973 events - Kind 6: 934 events - Kind 10002: 337 events - Kind 0: 290 events - - -╔════════════════════════════════════════════════════════╗ -║ BADGER BACKEND BENCHMARK SUITE ║ -╚════════════════════════════════════════════════════════╝ - -=== Starting Badger benchmark === -RunPeakThroughputTest (Badger).. - -=== Peak Throughput Test === -1763531611477120🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611493941🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611494126🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611494926🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611496231🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611496246🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611502279🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611503297🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611503330🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611518900🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611518891🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611519488🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611519747🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611577871🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611606029🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611606900🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611606947🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611614519🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611614565🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531611614574⚠️ failed to process deletion for event ecd7b942d5a473589b4a3bc34f0b3dadf0c6e0ba9325d7a47604167acc757d5c: id not found in database /build/pkg/database/save-event.go:333 -1763531611614525🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611614608🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531611614621⚠️ failed to process deletion for event 900e73566bb098d7ec1880ec68521ef76e066b933d4d6b71dbe99ee156c4b307: id not found in database /build/pkg/database/save-event.go:333 -1763531611624602🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611629772🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611629796🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611631851🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611631931🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611636831🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611636859🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611638048🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611638089🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611638115🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611638587🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611638716🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611639199🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611639225🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611639803🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611639863🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611640930🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611644335🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611644684🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611644898🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531611708589🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612171835🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612172653🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612172732🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612173556🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612175511🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612177118🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612177776🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612178379🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612178372🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612178397🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612179258🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612179440🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612179480🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612179957🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612180057🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612181198🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612181239🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612181692🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612182749🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612183455🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612183483🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531612183491⚠️ failed to process deletion for event 63eae8af9f42e2d37f93b1277bcf708c94aeb8935dd83d1e8e80136c4e4f8292: id not found in database /build/pkg/database/save-event.go:333 -1763531612189208🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612189347🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612189377🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612189422🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612189435🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612190775🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612199207🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612202839🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612204455🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612204751🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612204774🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531612204782⚠️ failed to process deletion for event 2f5e01050c81c0d711e9f391726af47933b5fcfbe497434164069787d201e3b9: id not found in database /build/pkg/database/save-event.go:333 -1763531612205235🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612205306🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612205344🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612206263🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612209033🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612209322🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612209353🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612210019🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612210383🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612210675🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612211567🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612211774🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612211848🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612212220🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612212273🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612213270🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612213282🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612216359🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612216384🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612217080🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612217427🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612218474🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612219554🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612221869🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612224539🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612225032🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612228378🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612230581🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612230736🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612232890🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612234376🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612234461🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612236593🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612236643🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531612236655⚠️ failed to process deletion for event e56f683d8a3ad6a1d7ed41f50bf2739179ac8f6e1418ff34e5e20903172237ea: id not found in database /build/pkg/database/save-event.go:333 -1763531612236622🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612236896🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612236930🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612242225🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612243552🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612244820🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612247851🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612248039🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612248536🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612248584🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612249053🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612251606🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612251935🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612251974🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612251979🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531612251986⚠️ failed to process deletion for event 4b07094ff22787f584f5ceddc11ae44c66ab513d01d7529e156d6adb75323eca: id not found in database /build/pkg/database/save-event.go:333 -1763531612253040🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612255159🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612261269🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612261370🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612261469🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612262573🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612262697🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612262722🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531612262731⚠️ failed to process deletion for event 59475e9f41d77977a2b2c0d9acf7c32bad368dafdeab1e8f7be8cf0fe0e00ceb: id not found in database /build/pkg/database/save-event.go:333 -1763531612294932🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612296429🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612315617🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612316570🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612317612🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612317766🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612317970🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612318694🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612321488🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612342151🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612342215🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612342415🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612342612🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612342903🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612351936🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612360967🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612361147🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612362355🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612364716🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612365603🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612365742🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612365902🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612365920🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612367122🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612367371🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612367380🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612368070🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612368460🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612368669🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612370166🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612372335🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612372509🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612373590🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612373895🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612374191🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612374269🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612374283🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531612374293⚠️ failed to process deletion for event bd502ba9dc5c173b3b82708561f35118e2ca580f9c7e5baffceccdd9f6502462: id not found in database /build/pkg/database/save-event.go:333 -1763531612374421🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612374456🚨 id not found in database /build/pkg/database/save-event.go:332 -1763531612374466⚠️ failed to process deletion for event 961a3d9582d896fcd8755ccc634b7846e549131284740f6fec0d635d0bb072af: id not found in database /build/pkg/database/save-event.go:333 -1763531612374683🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612377078🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612378475🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612379970🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612380111🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612380109🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612382815🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612382875🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612382834🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612383146🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612383524🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612384208🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612386086🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612386271🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612387633🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612388100🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612388149🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612388240🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612388288🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612388990🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612389041🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612389077🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612390273🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612391060🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612392786🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612392907🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612394095🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612394516🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612394715🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612394732🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612395297🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612395359🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612395657🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612395823🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612395851🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612396829🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612397908🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612399692🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612401330🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612401868🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612404794🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612404977🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612405122🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612405322🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612405815🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612405838🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612406058🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612418956🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612419108🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612419316🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612419579🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763531612420418🚨 id not found in database /build/pkg/database/process-delete.go:43 -Events saved: 11592/50000 (23.2%), errors: 38408 -Duration: 4.099682418s -Events/sec: 2827.54 -Avg latency: 4.203722ms -P90 latency: 3.345671ms -P95 latency: 4.568189ms -P99 latency: 88.030281ms -Bottom 10% Avg latency: 1.124184ms -Wiping database between tests... -RunBurstPatternTest (Badger).. - -=== Burst Pattern Test === -Burst completed: 5000 events in 335.33957ms -Burst completed: 5000 events in 338.195898ms -Burst completed: 5000 events in 346.791988ms -Burst completed: 5000 events in 361.72302ms -Burst completed: 5000 events in 332.900946ms -Burst completed: 5000 events in 335.52954ms -Burst completed: 5000 events in 342.175918ms -Burst completed: 5000 events in 339.522755ms -Burst completed: 5000 events in 334.46846ms -Burst completed: 5000 events in 336.071402ms -Burst test completed: 0 events in 8.409696337s, errors: 50000 -Events/sec: 0.00 -Wiping database between tests... -RunMixedReadWriteTest (Badger).. - -=== Mixed Read/Write Test === -Pre-populating database for read tests... -Mixed test completed: 0 writes, 25000 reads in 22.513827505s -Combined ops/sec: 1110.43 -Wiping database between tests... -RunQueryTest (Badger).. - -=== Query Test === -Pre-populating database with 10000 events for query tests... -Query test completed: 405671 queries in 1m0.004332664s -Queries/sec: 6760.70 -Avg query latency: 1.570056ms -P95 query latency: 5.35134ms -P99 query latency: 9.169641ms -Wiping database between tests... -RunConcurrentQueryStoreTest (Badger).. - -=== Concurrent Query/Store Test === -Pre-populating database with 5000 events for concurrent query/store test... -Concurrent test completed: 567760 operations (567760 queries, 0 writes) in 1m0.000235118s -Operations/sec: 9462.63 -Avg latency: 46.433µs -Avg query latency: 46.433µs -Avg write latency: 0s -P95 latency: 89.831µs -P99 latency: 135.768µs - -=== Badger benchmark completed === - - -================================================================================ -BENCHMARK REPORT -================================================================================ - -Test: Peak Throughput -Duration: 4.099682418s -Total Events: 11592 -Events/sec: 2827.54 -Success Rate: 23.2% -Concurrent Workers: 24 -Memory Used: 356 MB -Avg Latency: 4.203722ms -P90 Latency: 3.345671ms -P95 Latency: 4.568189ms -P99 Latency: 88.030281ms -Bottom 10% Avg Latency: 1.124184ms ----------------------------------------- - -Test: Burst Pattern -Duration: 8.409696337s -Total Events: 0 -Events/sec: 0.00 -Success Rate: 0.0% -Concurrent Workers: 24 -Memory Used: 393 MB -Avg Latency: 0s -P90 Latency: 0s -P95 Latency: 0s -P99 Latency: 0s -Bottom 10% Avg Latency: 0s ----------------------------------------- - -Test: Mixed Read/Write -Duration: 22.513827505s -Total Events: 25000 -Events/sec: 1110.43 -Success Rate: 50.0% -Concurrent Workers: 24 -Memory Used: 363 MB -Avg Latency: 79.478µs -P90 Latency: 101.042µs -P95 Latency: 112.755µs -P99 Latency: 136.991µs -Bottom 10% Avg Latency: 121.765µs -Errors (25000): - - blocked: event already exists: 238d2d2e1ddb3af636472dbf573fa52cbfc81509a9ba2f4a6902efacd5e32bbf - - blocked: event already exists: 048d7b07155b3832a76eac0b46bea764cac3597dfbc28b559698d51f915cb6d1 - - blocked: event already exists: 1ebc80bd3bb172fc38ce786e0717e9c82691cd495f0de9863c892284cbe47ca3 - - blocked: event already exists: 00a5f5f6c7f1c4e6f71ab7df2c056e238ccd9b441e59ddf119d7ab7f1d7510e0 - - blocked: event already exists: 2197ff7ffc723d2fb4f7e44aeaf0ed8c2e0e2f3fb3aae29f2e33e0683ddf1a99 - ... and 24995 more errors ----------------------------------------- - -Test: Query Performance -Duration: 1m0.004332664s -Total Events: 405671 -Events/sec: 6760.70 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 372 MB -Avg Latency: 1.570056ms -P90 Latency: 4.354101ms -P95 Latency: 5.35134ms -P99 Latency: 9.169641ms -Bottom 10% Avg Latency: 6.228096ms ----------------------------------------- - -Test: Concurrent Query/Store -Duration: 1m0.000235118s -Total Events: 567760 -Events/sec: 9462.63 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 303 MB -Avg Latency: 46.433µs -P90 Latency: 79.071µs -P95 Latency: 89.831µs -P99 Latency: 135.768µs -Bottom 10% Avg Latency: 102.136µs -Errors (50000): - - blocked: event already exists: 01e9943cf5e805283c512b9c26cf69f7e9ff412710d7543a3a52dc93ac7e8a57 - - blocked: event already exists: 0312061d336fd22dc64b98130663835242e4479c54c7ca88b72c3b3093ef29a2 - - blocked: event already exists: 05bf5bbba1a1fa85b9a5aaca7ff384d8e09a1b2441c01df5780c1bc99e377f85 - - blocked: event already exists: 0b50149a50e29b084c63f0b0d16a8d280445eb389e53b5c688f654665e9d56f5 - - blocked: event already exists: 0ea6723d131534cf6e2209169a518c4bc598e3acad0618c2ef34df34c867cca1 - ... and 49995 more errors ----------------------------------------- - -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-11-19T05:56:47+00:00 -BENCHMARK_CONFIG: - Events: 50000 - Workers: 24 - Duration: 60s diff --git a/cmd/benchmark/reports/run_20251119_054648/nostr-rs-relay_results.txt b/cmd/benchmark/reports/run_20251119_054648/nostr-rs-relay_results.txt deleted file mode 100644 index 50868cb..0000000 --- a/cmd/benchmark/reports/run_20251119_054648/nostr-rs-relay_results.txt +++ /dev/null @@ -1,422 +0,0 @@ -Starting Nostr Relay Benchmark (Badger Backend) -Data Directory: /tmp/benchmark_nostr-rs-relay_8 -Events: 50000, Workers: 24, Duration: 1m0s -1763532618524528ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763532618524580ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763532618524706ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763532618524736ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763532618524748ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763532618524776ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763532618524782ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763532618524802ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763532618524809ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 -Loading real-world sample events from embedded data... -Loading real-world sample events (11,596 events from 6 months of Nostr)... -Loaded 11596 real-world events (already signed, zero crypto overhead) - -Event Statistics: - Total events: 11596 - Average content size: 588 bytes - Event kinds found: 25 unique - Most common kinds: - Kind 1: 7152 events - Kind 7: 1973 events - Kind 6: 934 events - Kind 10002: 337 events - Kind 0: 290 events - - -╔════════════════════════════════════════════════════════╗ -║ BADGER BACKEND BENCHMARK SUITE ║ -╚════════════════════════════════════════════════════════╝ - -=== Starting Badger benchmark === -RunPeakThroughputTest (Badger).. - -=== Peak Throughput Test === -1763532618930740🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618947610🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618948005🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618948153🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618950675🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618950682🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618956383🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618956435🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618957227🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618969491🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618970468🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618971159🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532618971247🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619031025🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619056683🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619056939🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619056952🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619066084🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619066142🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532619066155⚠️ failed to process deletion for event ecd7b942d5a473589b4a3bc34f0b3dadf0c6e0ba9325d7a47604167acc757d5c: id not found in database /build/pkg/database/save-event.go:333 -1763532619066695🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619066714🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532619066722⚠️ failed to process deletion for event 900e73566bb098d7ec1880ec68521ef76e066b933d4d6b71dbe99ee156c4b307: id not found in database /build/pkg/database/save-event.go:333 -1763532619075600🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619081811🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619081988🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619084508🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619084568🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619088652🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619088683🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619088782🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619088783🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619090006🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619090001🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619090069🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619090084🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619090099🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619090832🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619091518🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619092595🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619096499🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619096548🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619096606🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619162379🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619614266🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619615621🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619615626🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619616541🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619618933🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619618974🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619620317🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619620397🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619620471🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619620484🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619621043🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619621631🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619622165🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619622167🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619622439🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619623174🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619623181🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619623220🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619624801🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619625240🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619625269🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532619625280⚠️ failed to process deletion for event 63eae8af9f42e2d37f93b1277bcf708c94aeb8935dd83d1e8e80136c4e4f8292: id not found in database /build/pkg/database/save-event.go:333 -1763532619630065🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619630165🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619630661🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619630663🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619630821🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619631497🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619640145🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619642792🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619644723🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619644791🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619645300🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619645371🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619645379🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532619645401⚠️ failed to process deletion for event 2f5e01050c81c0d711e9f391726af47933b5fcfbe497434164069787d201e3b9: id not found in database /build/pkg/database/save-event.go:333 -1763532619645510🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619646269🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619648954🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619649062🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619649394🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619649929🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619650596🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619650999🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619651453🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619652135🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619652189🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619652230🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619652643🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619652686🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619654452🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619656038🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619656545🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619657094🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619658010🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619658015🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619660069🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619661973🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619665795🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619665815🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619668940🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619671219🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619671256🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619675066🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619675407🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619675880🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619676648🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619676831🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619678445🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619678987🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619679007🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532619679017⚠️ failed to process deletion for event e56f683d8a3ad6a1d7ed41f50bf2739179ac8f6e1418ff34e5e20903172237ea: id not found in database /build/pkg/database/save-event.go:333 -1763532619680059🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619682110🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619682946🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619686593🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619686642🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619686672🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619688599🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619688980🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619689992🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619691023🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619691071🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532619691081⚠️ failed to process deletion for event 4b07094ff22787f584f5ceddc11ae44c66ab513d01d7529e156d6adb75323eca: id not found in database /build/pkg/database/save-event.go:333 -1763532619691290🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619691789🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619693914🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619698356🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619701647🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619701967🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619702011🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532619702023⚠️ failed to process deletion for event 59475e9f41d77977a2b2c0d9acf7c32bad368dafdeab1e8f7be8cf0fe0e00ceb: id not found in database /build/pkg/database/save-event.go:333 -1763532619701971🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619702353🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619767837🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619770711🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619771475🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619771496🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619771616🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619771785🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619773121🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619773706🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619774076🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619775012🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619775202🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619775616🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619776224🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619776225🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619783510🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619793083🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619793319🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619795252🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619795257🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619797760🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619798203🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619798747🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619798803🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619799361🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619799645🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619799874🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619800049🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619801225🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619801611🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619801686🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619803757🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619804436🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619805033🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619805964🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619806089🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619806114🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532619806125⚠️ failed to process deletion for event bd502ba9dc5c173b3b82708561f35118e2ca580f9c7e5baffceccdd9f6502462: id not found in database /build/pkg/database/save-event.go:333 -1763532619806587🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619806617🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532619806627⚠️ failed to process deletion for event 961a3d9582d896fcd8755ccc634b7846e549131284740f6fec0d635d0bb072af: id not found in database /build/pkg/database/save-event.go:333 -1763532619806746🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619806955🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619809241🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619809253🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619812247🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619812468🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619812745🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619814622🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619815324🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619815599🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619816082🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619816174🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619816840🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619818752🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619819942🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619820073🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619820832🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619821226🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619821604🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619822845🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619822980🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619823804🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619823916🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619824109🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619826241🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619827137🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619827419🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619827882🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619828527🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619828762🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619829430🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619829777🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619829830🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619829856🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619829867🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619830712🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619831911🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619835536🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619835629🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619839021🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619839121🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619839259🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619841819🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619842315🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619843356🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619843525🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619846344🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619859073🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619859232🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619859436🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619859611🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619859674🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532619859797🚨 id not found in database /build/pkg/database/process-delete.go:43 -Events saved: 11594/50000 (23.2%), errors: 38406 -Duration: 4.021053985s -Events/sec: 2883.32 -Avg latency: 4.044321ms -P90 latency: 3.344231ms -P95 latency: 4.602719ms -P99 latency: 79.2846ms -Bottom 10% Avg latency: 1.103637ms -Wiping database between tests... -RunBurstPatternTest (Badger).. - -=== Burst Pattern Test === -Burst completed: 5000 events in 352.280501ms -Burst completed: 5000 events in 344.717192ms -Burst completed: 5000 events in 342.785392ms -Burst completed: 5000 events in 348.707543ms -Burst completed: 5000 events in 365.85074ms -Burst completed: 5000 events in 351.601335ms -Burst completed: 5000 events in 349.046538ms -Burst completed: 5000 events in 345.187947ms -Burst completed: 5000 events in 343.795123ms -Burst completed: 5000 events in 331.851049ms -Burst test completed: 0 events in 8.481561189s, errors: 50000 -Events/sec: 0.00 -Wiping database between tests... -RunMixedReadWriteTest (Badger).. - -=== Mixed Read/Write Test === -Pre-populating database for read tests... -Mixed test completed: 0 writes, 25000 reads in 22.659489061s -Combined ops/sec: 1103.29 -Wiping database between tests... -RunQueryTest (Badger).. - -=== Query Test === -Pre-populating database with 10000 events for query tests... -Query test completed: 405016 queries in 1m0.004544583s -Queries/sec: 6749.76 -Avg query latency: 1.573632ms -P95 query latency: 5.332888ms -P99 query latency: 9.122117ms -Wiping database between tests... -RunConcurrentQueryStoreTest (Badger).. - -=== Concurrent Query/Store Test === -Pre-populating database with 5000 events for concurrent query/store test... -Concurrent test completed: 566215 operations (566215 queries, 0 writes) in 1m0.001155402s -Operations/sec: 9436.73 -Avg latency: 45.72µs -Avg query latency: 45.72µs -Avg write latency: 0s -P95 latency: 88.218µs -P99 latency: 131.26µs - -=== Badger benchmark completed === - - -================================================================================ -BENCHMARK REPORT -================================================================================ - -Test: Peak Throughput -Duration: 4.021053985s -Total Events: 11594 -Events/sec: 2883.32 -Success Rate: 23.2% -Concurrent Workers: 24 -Memory Used: 379 MB -Avg Latency: 4.044321ms -P90 Latency: 3.344231ms -P95 Latency: 4.602719ms -P99 Latency: 79.2846ms -Bottom 10% Avg Latency: 1.103637ms ----------------------------------------- - -Test: Burst Pattern -Duration: 8.481561189s -Total Events: 0 -Events/sec: 0.00 -Success Rate: 0.0% -Concurrent Workers: 24 -Memory Used: 259 MB -Avg Latency: 0s -P90 Latency: 0s -P95 Latency: 0s -P99 Latency: 0s -Bottom 10% Avg Latency: 0s ----------------------------------------- - -Test: Mixed Read/Write -Duration: 22.659489061s -Total Events: 25000 -Events/sec: 1103.29 -Success Rate: 50.0% -Concurrent Workers: 24 -Memory Used: 267 MB -Avg Latency: 82.3µs -P90 Latency: 102.856µs -P95 Latency: 114.679µs -P99 Latency: 142.963µs -Bottom 10% Avg Latency: 130.591µs -Errors (25000): - - blocked: event already exists: 238d2d2e1ddb3af636472dbf573fa52cbfc81509a9ba2f4a6902efacd5e32bbf - - blocked: event already exists: 00a5f5f6c7f1c4e6f71ab7df2c056e238ccd9b441e59ddf119d7ab7f1d7510e0 - - blocked: event already exists: 1ebc80bd3bb172fc38ce786e0717e9c82691cd495f0de9863c892284cbe47ca3 - - blocked: event already exists: 1642d6770a74de7ca45169bc76dab334591bcb2191044da0b18459888164f9fc - - blocked: event already exists: 2197ff7ffc723d2fb4f7e44aeaf0ed8c2e0e2f3fb3aae29f2e33e0683ddf1a99 - ... and 24995 more errors ----------------------------------------- - -Test: Query Performance -Duration: 1m0.004544583s -Total Events: 405016 -Events/sec: 6749.76 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 446 MB -Avg Latency: 1.573632ms -P90 Latency: 4.427874ms -P95 Latency: 5.332888ms -P99 Latency: 9.122117ms -Bottom 10% Avg Latency: 6.229587ms ----------------------------------------- - -Test: Concurrent Query/Store -Duration: 1m0.001155402s -Total Events: 566215 -Events/sec: 9436.73 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 333 MB -Avg Latency: 45.72µs -P90 Latency: 78.159µs -P95 Latency: 88.218µs -P99 Latency: 131.26µs -Bottom 10% Avg Latency: 99.957µs -Errors (50000): - - blocked: event already exists: 0ce484c600cb1c0b33f1e38ddea4b38a47069615d22114a9c621a9164d9b6218 - - blocked: event already exists: 048d7b07155b3832a76eac0b46bea764cac3597dfbc28b559698d51f915cb6d1 - - blocked: event already exists: 05bf5bbba1a1fa85b9a5aaca7ff384d8e09a1b2441c01df5780c1bc99e377f85 - - blocked: event already exists: 0e0b4dfd5e4ecfb0d3acb8db48d13833edeac5163fbcba9fb94160b686c07595 - - blocked: event already exists: 0b50149a50e29b084c63f0b0d16a8d280445eb389e53b5c688f654665e9d56f5 - ... and 49995 more errors ----------------------------------------- - -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-11-19T06:13:35+00:00 -BENCHMARK_CONFIG: - Events: 50000 - Workers: 24 - Duration: 60s diff --git a/cmd/benchmark/reports/run_20251119_054648/relayer-basic_results.txt b/cmd/benchmark/reports/run_20251119_054648/relayer-basic_results.txt deleted file mode 100644 index bfe017f..0000000 --- a/cmd/benchmark/reports/run_20251119_054648/relayer-basic_results.txt +++ /dev/null @@ -1,422 +0,0 @@ -Starting Nostr Relay Benchmark (Badger Backend) -Data Directory: /tmp/benchmark_relayer-basic_8 -Events: 50000, Workers: 24, Duration: 1m0s -1763532215281177ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763532215281256ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763532215281278ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763532215281284ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763532215281295ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763532215281311ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763532215281316ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763532215281327ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763532215281332ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 -Loading real-world sample events from embedded data... -Loading real-world sample events (11,596 events from 6 months of Nostr)... -Loaded 11596 real-world events (already signed, zero crypto overhead) - -Event Statistics: - Total events: 11596 - Average content size: 588 bytes - Event kinds found: 25 unique - Most common kinds: - Kind 1: 7152 events - Kind 7: 1973 events - Kind 6: 934 events - Kind 10002: 337 events - Kind 0: 290 events - - -╔════════════════════════════════════════════════════════╗ -║ BADGER BACKEND BENCHMARK SUITE ║ -╚════════════════════════════════════════════════════════╝ - -=== Starting Badger benchmark === -RunPeakThroughputTest (Badger).. - -=== Peak Throughput Test === -1763532215753642🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215771026🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215771047🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215771043🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215773057🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215773950🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215779106🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215779989🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215780044🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215794879🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215794911🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215795258🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215795902🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215864347🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215895247🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215897706🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215897846🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215909272🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215909338🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532215909351⚠️ failed to process deletion for event ecd7b942d5a473589b4a3bc34f0b3dadf0c6e0ba9325d7a47604167acc757d5c: id not found in database /build/pkg/database/save-event.go:333 -1763532215909277🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215909376🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532215909396⚠️ failed to process deletion for event 900e73566bb098d7ec1880ec68521ef76e066b933d4d6b71dbe99ee156c4b307: id not found in database /build/pkg/database/save-event.go:333 -1763532215921004🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215927644🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215927729🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215932204🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215932223🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215937326🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215937353🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215937533🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215937559🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215937604🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215938283🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215938525🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215938584🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215939171🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215941078🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215942075🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215942140🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215946108🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215946935🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532215947070🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216034256🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216575480🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216575680🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216576613🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216577132🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216579189🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216580190🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216581187🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216581297🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216581843🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216581932🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216582485🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216583310🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216583354🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216583797🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216584179🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216584829🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216584822🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216584849🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216586369🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216586560🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216586587🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532216586598⚠️ failed to process deletion for event 63eae8af9f42e2d37f93b1277bcf708c94aeb8935dd83d1e8e80136c4e4f8292: id not found in database /build/pkg/database/save-event.go:333 -1763532216592409🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216594068🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216594133🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216594171🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216595199🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216596193🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216604932🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216608011🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216610501🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216610709🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216610735🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532216610746⚠️ failed to process deletion for event 2f5e01050c81c0d711e9f391726af47933b5fcfbe497434164069787d201e3b9: id not found in database /build/pkg/database/save-event.go:333 -1763532216611730🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216611905🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216612710🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216612972🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216614620🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216614890🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216616830🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216617705🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216617912🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216618767🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216619811🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216619813🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216620154🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216622289🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216622299🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216622670🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216622759🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216627036🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216627071🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216627681🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216628332🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216628497🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216630956🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216634023🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216636620🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216637097🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216640322🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216640755🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216642971🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216646272🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216646356🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216646716🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216649588🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216649624🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216649707🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216651798🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216651837🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532216651846⚠️ failed to process deletion for event e56f683d8a3ad6a1d7ed41f50bf2739179ac8f6e1418ff34e5e20903172237ea: id not found in database /build/pkg/database/save-event.go:333 -1763532216652546🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216652647🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216654682🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216660436🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216660454🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216660818🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216660850🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216660892🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216664192🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216664242🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532216664233🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216664284🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216664252⚠️ failed to process deletion for event 4b07094ff22787f584f5ceddc11ae44c66ab513d01d7529e156d6adb75323eca: id not found in database /build/pkg/database/save-event.go:333 -1763532216664431🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216666902🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216671811🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216671937🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216702320🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216702414🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216705566🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216705636🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532216705653⚠️ failed to process deletion for event 59475e9f41d77977a2b2c0d9acf7c32bad368dafdeab1e8f7be8cf0fe0e00ceb: id not found in database /build/pkg/database/save-event.go:333 -1763532216736068🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216772632🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216772740🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216772872🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216775232🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216776926🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216778944🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216780479🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216781325🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216781901🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216782007🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216781924🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216782662🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216782943🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216792109🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216801957🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216802118🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216805275🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216805608🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216806675🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216806729🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216807256🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216807332🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216807702🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216808008🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216809164🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216809928🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216810178🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216810343🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216810553🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216813468🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216813917🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216815051🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216815580🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216815621🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532216815633⚠️ failed to process deletion for event 961a3d9582d896fcd8755ccc634b7846e549131284740f6fec0d635d0bb072af: id not found in database /build/pkg/database/save-event.go:333 -1763532216815855🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216815887🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532216815896⚠️ failed to process deletion for event bd502ba9dc5c173b3b82708561f35118e2ca580f9c7e5baffceccdd9f6502462: id not found in database /build/pkg/database/save-event.go:333 -1763532216817137🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216817988🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216818038🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216820280🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216820593🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216822434🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216822533🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216823260🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216825570🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216825661🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216825770🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216825766🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216828334🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216828596🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216830967🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216832985🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216834147🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216834169🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216834173🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216834249🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216835001🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216835042🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216835016🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216835898🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216835986🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216840462🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216841175🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216841614🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216842304🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216847871🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216864133🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216905124🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216905300🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216905361🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216905362🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216905440🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216906234🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216907434🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216907471🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216907464🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216908059🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216908080🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216908591🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216908908🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216909192🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216910036🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216910306🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216910950🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216931514🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216931602🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216931779🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216931793🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216932984🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532216933171🚨 id not found in database /build/pkg/database/process-delete.go:43 -Events saved: 11592/50000 (23.2%), errors: 38408 -Duration: 4.281033199s -Events/sec: 2707.76 -Avg latency: 4.657987ms -P90 latency: 4.233468ms -P95 latency: 5.603449ms -P99 latency: 68.611381ms -Bottom 10% Avg latency: 1.266467ms -Wiping database between tests... -RunBurstPatternTest (Badger).. - -=== Burst Pattern Test === -Burst completed: 5000 events in 351.189041ms -Burst completed: 5000 events in 345.793588ms -Burst completed: 5000 events in 349.58856ms -Burst completed: 5000 events in 347.409606ms -Burst completed: 5000 events in 336.805967ms -Burst completed: 5000 events in 342.539694ms -Burst completed: 5000 events in 333.331965ms -Burst completed: 5000 events in 343.768734ms -Burst completed: 5000 events in 348.390792ms -Burst completed: 5000 events in 349.455321ms -Burst test completed: 0 events in 8.454879556s, errors: 50000 -Events/sec: 0.00 -Wiping database between tests... -RunMixedReadWriteTest (Badger).. - -=== Mixed Read/Write Test === -Pre-populating database for read tests... -Mixed test completed: 0 writes, 25000 reads in 22.626268963s -Combined ops/sec: 1104.91 -Wiping database between tests... -RunQueryTest (Badger).. - -=== Query Test === -Pre-populating database with 10000 events for query tests... -Query test completed: 406188 queries in 1m0.004608218s -Queries/sec: 6769.28 -Avg query latency: 1.56602ms -P95 query latency: 5.365294ms -P99 query latency: 9.302026ms -Wiping database between tests... -RunConcurrentQueryStoreTest (Badger).. - -=== Concurrent Query/Store Test === -Pre-populating database with 5000 events for concurrent query/store test... -Concurrent test completed: 563863 operations (563863 queries, 0 writes) in 1m0.001226916s -Operations/sec: 9397.52 -Avg latency: 46.484µs -Avg query latency: 46.484µs -Avg write latency: 0s -P95 latency: 89.861µs -P99 latency: 137.252µs - -=== Badger benchmark completed === - - -================================================================================ -BENCHMARK REPORT -================================================================================ - -Test: Peak Throughput -Duration: 4.281033199s -Total Events: 11592 -Events/sec: 2707.76 -Success Rate: 23.2% -Concurrent Workers: 24 -Memory Used: 344 MB -Avg Latency: 4.657987ms -P90 Latency: 4.233468ms -P95 Latency: 5.603449ms -P99 Latency: 68.611381ms -Bottom 10% Avg Latency: 1.266467ms ----------------------------------------- - -Test: Burst Pattern -Duration: 8.454879556s -Total Events: 0 -Events/sec: 0.00 -Success Rate: 0.0% -Concurrent Workers: 24 -Memory Used: 368 MB -Avg Latency: 0s -P90 Latency: 0s -P95 Latency: 0s -P99 Latency: 0s -Bottom 10% Avg Latency: 0s ----------------------------------------- - -Test: Mixed Read/Write -Duration: 22.626268963s -Total Events: 25000 -Events/sec: 1104.91 -Success Rate: 50.0% -Concurrent Workers: 24 -Memory Used: 339 MB -Avg Latency: 81.834µs -P90 Latency: 101.664µs -P95 Latency: 112.123µs -P99 Latency: 136.991µs -Bottom 10% Avg Latency: 123.871µs -Errors (25000): - - blocked: event already exists: 06061b630fd0881cbe7ed02114584fea59b9621c2e9479e6e6aa2be561240a90 - - blocked: event already exists: 0312061d336fd22dc64b98130663835242e4479c54c7ca88b72c3b3093ef29a2 - - blocked: event already exists: 1ebc80bd3bb172fc38ce786e0717e9c82691cd495f0de9863c892284cbe47ca3 - - blocked: event already exists: 00a5f5f6c7f1c4e6f71ab7df2c056e238ccd9b441e59ddf119d7ab7f1d7510e0 - - blocked: event already exists: 2197ff7ffc723d2fb4f7e44aeaf0ed8c2e0e2f3fb3aae29f2e33e0683ddf1a99 - ... and 24995 more errors ----------------------------------------- - -Test: Query Performance -Duration: 1m0.004608218s -Total Events: 406188 -Events/sec: 6769.28 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 466 MB -Avg Latency: 1.56602ms -P90 Latency: 4.291057ms -P95 Latency: 5.365294ms -P99 Latency: 9.302026ms -Bottom 10% Avg Latency: 6.278431ms ----------------------------------------- - -Test: Concurrent Query/Store -Duration: 1m0.001226916s -Total Events: 563863 -Events/sec: 9397.52 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 347 MB -Avg Latency: 46.484µs -P90 Latency: 79.592µs -P95 Latency: 89.861µs -P99 Latency: 137.252µs -Bottom 10% Avg Latency: 102.019µs -Errors (50000): - - blocked: event already exists: 00a5f5f6c7f1c4e6f71ab7df2c056e238ccd9b441e59ddf119d7ab7f1d7510e0 - - blocked: event already exists: 0f06ba91f371d4f8647a3f9529af3b9a012988eabf9f7c2eb42b39aa86697ea9 - - blocked: event already exists: 0ea6723d131534cf6e2209169a518c4bc598e3acad0618c2ef34df34c867cca1 - - blocked: event already exists: 0b50149a50e29b084c63f0b0d16a8d280445eb389e53b5c688f654665e9d56f5 - - blocked: event already exists: 05bf5bbba1a1fa85b9a5aaca7ff384d8e09a1b2441c01df5780c1bc99e377f85 - ... and 49995 more errors ----------------------------------------- - -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-11-19T06:06:51+00:00 -BENCHMARK_CONFIG: - Events: 50000 - Workers: 24 - Duration: 60s diff --git a/cmd/benchmark/reports/run_20251119_054648/strfry_results.txt b/cmd/benchmark/reports/run_20251119_054648/strfry_results.txt deleted file mode 100644 index f439a71..0000000 --- a/cmd/benchmark/reports/run_20251119_054648/strfry_results.txt +++ /dev/null @@ -1,422 +0,0 @@ -Starting Nostr Relay Benchmark (Badger Backend) -Data Directory: /tmp/benchmark_strfry_8 -Events: 50000, Workers: 24, Duration: 1m0s -1763532417029005ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763532417029081ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763532417029106ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763532417029112ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763532417029144ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763532417029202ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763532417029209ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763532417029219ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763532417029225ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 -Loading real-world sample events from embedded data... -Loading real-world sample events (11,596 events from 6 months of Nostr)... -Loaded 11596 real-world events (already signed, zero crypto overhead) - -Event Statistics: - Total events: 11596 - Average content size: 588 bytes - Event kinds found: 25 unique - Most common kinds: - Kind 1: 7152 events - Kind 7: 1973 events - Kind 6: 934 events - Kind 10002: 337 events - Kind 0: 290 events - - -╔════════════════════════════════════════════════════════╗ -║ BADGER BACKEND BENCHMARK SUITE ║ -╚════════════════════════════════════════════════════════╝ - -=== Starting Badger benchmark === -RunPeakThroughputTest (Badger).. - -=== Peak Throughput Test === -1763532417446740🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417463442🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417463517🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417463528🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417465778🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417465773🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417471681🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417472327🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417473046🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417487367🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417488733🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417489155🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417489204🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417547895🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417576271🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417576642🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417577031🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417584020🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417584080🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532417584092⚠️ failed to process deletion for event 900e73566bb098d7ec1880ec68521ef76e066b933d4d6b71dbe99ee156c4b307: id not found in database /build/pkg/database/save-event.go:333 -1763532417584057🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417584119🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532417584130⚠️ failed to process deletion for event ecd7b942d5a473589b4a3bc34f0b3dadf0c6e0ba9325d7a47604167acc757d5c: id not found in database /build/pkg/database/save-event.go:333 -1763532417593777🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417599107🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417599108🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417601718🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417601761🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417605646🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417606054🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417606057🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417607124🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417607136🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417607268🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417607238🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417607238🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417607152🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417608114🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417609053🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417609524🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417612855🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417613254🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417613805🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532417677741🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418142727🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418142864🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418144600🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418144630🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418145646🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418146916🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418147551🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418148156🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418148197🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418148912🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418149551🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418149549🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418150165🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418150344🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418150653🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418151668🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418151756🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418151768🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418152942🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418153239🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418153258🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532418153267⚠️ failed to process deletion for event 63eae8af9f42e2d37f93b1277bcf708c94aeb8935dd83d1e8e80136c4e4f8292: id not found in database /build/pkg/database/save-event.go:333 -1763532418158828🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418159056🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418159184🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418160314🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418160324🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418161260🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418169316🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418172059🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418173558🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418174651🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418174692🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532418174703⚠️ failed to process deletion for event 2f5e01050c81c0d711e9f391726af47933b5fcfbe497434164069787d201e3b9: id not found in database /build/pkg/database/save-event.go:333 -1763532418175319🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418175322🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418175328🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418176201🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418178579🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418178687🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418179266🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418179679🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418179929🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418180514🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418180740🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418181634🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418182020🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418182137🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418182727🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418183912🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418183942🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418186474🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418186791🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418186808🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418186793🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418188620🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418189953🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418192500🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418194606🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418195626🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418199354🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418200303🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418200464🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418203342🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418204634🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418204728🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418205766🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418207111🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418207142🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418207931🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418207969🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532418207980⚠️ failed to process deletion for event e56f683d8a3ad6a1d7ed41f50bf2739179ac8f6e1418ff34e5e20903172237ea: id not found in database /build/pkg/database/save-event.go:333 -1763532418208766🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418210821🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418211495🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418215604🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418215614🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418216006🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418216035🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418219145🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418220994🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418221037🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532418221052⚠️ failed to process deletion for event 4b07094ff22787f584f5ceddc11ae44c66ab513d01d7529e156d6adb75323eca: id not found in database /build/pkg/database/save-event.go:333 -1763532418221209🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418222796🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418223147🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418227727🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418233362🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418233725🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418233725🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418233803🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532418233816⚠️ failed to process deletion for event 59475e9f41d77977a2b2c0d9acf7c32bad368dafdeab1e8f7be8cf0fe0e00ceb: id not found in database /build/pkg/database/save-event.go:333 -1763532418234917🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418234938🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418302772🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418304188🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418304225🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418307646🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418308235🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418309609🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418309963🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418310289🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418312036🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418312787🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418314158🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418315296🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418317296🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418317453🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418326901🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418336363🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418336826🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418337215🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418338156🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418338897🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418341107🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418341261🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418341288🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418341578🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418341805🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418344423🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418344476🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418344490🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418345300🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418345329🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418347344🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418349365🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418349398🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418349748🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418349778🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532418349790⚠️ failed to process deletion for event bd502ba9dc5c173b3b82708561f35118e2ca580f9c7e5baffceccdd9f6502462: id not found in database /build/pkg/database/save-event.go:333 -1763532418351994🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418352043🚨 id not found in database /build/pkg/database/save-event.go:332 -1763532418352055⚠️ failed to process deletion for event 961a3d9582d896fcd8755ccc634b7846e549131284740f6fec0d635d0bb072af: id not found in database /build/pkg/database/save-event.go:333 -1763532418354024🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418354037🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418354129🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418355732🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418357513🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418359713🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418360257🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418361239🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418361614🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418362673🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418362796🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418362959🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418363024🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418363609🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418364681🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418366172🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418366978🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418367050🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418367077🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418367056🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418368723🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418369089🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418369211🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418369213🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418369858🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418371869🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418373452🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418373544🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418373609🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418375088🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418375238🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418375309🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418375530🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418375554🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418375966🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418376137🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418376407🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418377845🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418377890🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418378015🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418378051🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418378088🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418379151🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418379686🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418390200🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418391344🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418391364🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418391484🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418392146🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418392202🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418392283🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418392401🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418393317🚨 id not found in database /build/pkg/database/process-delete.go:43 -1763532418393350🚨 id not found in database /build/pkg/database/process-delete.go:43 -Events saved: 11596/50000 (23.2%), errors: 38404 -Duration: 4.081350203s -Events/sec: 2841.22 -Avg latency: 4.088506ms -P90 latency: 3.424405ms -P95 latency: 4.517428ms -P99 latency: 75.080835ms -Bottom 10% Avg latency: 1.135387ms -Wiping database between tests... -RunBurstPatternTest (Badger).. - -=== Burst Pattern Test === -Burst completed: 5000 events in 342.084914ms -Burst completed: 5000 events in 368.596807ms -Burst completed: 5000 events in 328.015947ms -Burst completed: 5000 events in 335.615145ms -Burst completed: 5000 events in 336.465114ms -Burst completed: 5000 events in 339.72787ms -Burst completed: 5000 events in 337.178121ms -Burst completed: 5000 events in 337.603762ms -Burst completed: 5000 events in 311.194123ms -Burst completed: 5000 events in 320.093358ms -Burst test completed: 0 events in 8.36134004s, errors: 50000 -Events/sec: 0.00 -Wiping database between tests... -RunMixedReadWriteTest (Badger).. - -=== Mixed Read/Write Test === -Pre-populating database for read tests... -Mixed test completed: 0 writes, 25000 reads in 22.58702292s -Combined ops/sec: 1106.83 -Wiping database between tests... -RunQueryTest (Badger).. - -=== Query Test === -Pre-populating database with 10000 events for query tests... -Query test completed: 410409 queries in 1m0.005823994s -Queries/sec: 6839.49 -Avg query latency: 1.547004ms -P95 query latency: 5.256194ms -P99 query latency: 9.085129ms -Wiping database between tests... -RunConcurrentQueryStoreTest (Badger).. - -=== Concurrent Query/Store Test === -Pre-populating database with 5000 events for concurrent query/store test... -Concurrent test completed: 568449 operations (568449 queries, 0 writes) in 1m0.000557559s -Operations/sec: 9474.06 -Avg latency: 45.257µs -Avg query latency: 45.257µs -Avg write latency: 0s -P95 latency: 86.775µs -P99 latency: 128.615µs - -=== Badger benchmark completed === - - -================================================================================ -BENCHMARK REPORT -================================================================================ - -Test: Peak Throughput -Duration: 4.081350203s -Total Events: 11596 -Events/sec: 2841.22 -Success Rate: 23.2% -Concurrent Workers: 24 -Memory Used: 322 MB -Avg Latency: 4.088506ms -P90 Latency: 3.424405ms -P95 Latency: 4.517428ms -P99 Latency: 75.080835ms -Bottom 10% Avg Latency: 1.135387ms ----------------------------------------- - -Test: Burst Pattern -Duration: 8.36134004s -Total Events: 0 -Events/sec: 0.00 -Success Rate: 0.0% -Concurrent Workers: 24 -Memory Used: 352 MB -Avg Latency: 0s -P90 Latency: 0s -P95 Latency: 0s -P99 Latency: 0s -Bottom 10% Avg Latency: 0s ----------------------------------------- - -Test: Mixed Read/Write -Duration: 22.58702292s -Total Events: 25000 -Events/sec: 1106.83 -Success Rate: 50.0% -Concurrent Workers: 24 -Memory Used: 319 MB -Avg Latency: 81.227µs -P90 Latency: 102.275µs -P95 Latency: 113.396µs -P99 Latency: 139.054µs -Bottom 10% Avg Latency: 125.516µs -Errors (25000): - - blocked: event already exists: 11aa0b6defe3d58cef2f93c06fb194bc72241f17fb35312594d279f6c8f13d44 - - blocked: event already exists: 00a5f5f6c7f1c4e6f71ab7df2c056e238ccd9b441e59ddf119d7ab7f1d7510e0 - - blocked: event already exists: 1ebc80bd3bb172fc38ce786e0717e9c82691cd495f0de9863c892284cbe47ca3 - - blocked: event already exists: 0ce484c600cb1c0b33f1e38ddea4b38a47069615d22114a9c621a9164d9b6218 - - blocked: event already exists: 1642d6770a74de7ca45169bc76dab334591bcb2191044da0b18459888164f9fc - ... and 24995 more errors ----------------------------------------- - -Test: Query Performance -Duration: 1m0.005823994s -Total Events: 410409 -Events/sec: 6839.49 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 403 MB -Avg Latency: 1.547004ms -P90 Latency: 4.258013ms -P95 Latency: 5.256194ms -P99 Latency: 9.085129ms -Bottom 10% Avg Latency: 6.154516ms ----------------------------------------- - -Test: Concurrent Query/Store -Duration: 1m0.000557559s -Total Events: 568449 -Events/sec: 9474.06 -Success Rate: 100.0% -Concurrent Workers: 24 -Memory Used: 403 MB -Avg Latency: 45.257µs -P90 Latency: 77.187µs -P95 Latency: 86.775µs -P99 Latency: 128.615µs -Bottom 10% Avg Latency: 98.387µs -Errors (50000): - - blocked: event already exists: 0312061d336fd22dc64b98130663835242e4479c54c7ca88b72c3b3093ef29a2 - - blocked: event already exists: 06061b630fd0881cbe7ed02114584fea59b9621c2e9479e6e6aa2be561240a90 - - blocked: event already exists: 0ea6723d131534cf6e2209169a518c4bc598e3acad0618c2ef34df34c867cca1 - - blocked: event already exists: 0ce484c600cb1c0b33f1e38ddea4b38a47069615d22114a9c621a9164d9b6218 - - blocked: event already exists: 0f06ba91f371d4f8647a3f9529af3b9a012988eabf9f7c2eb42b39aa86697ea9 - ... and 49995 more errors ----------------------------------------- - -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-11-19T06:10:13+00:00 -BENCHMARK_CONFIG: - Events: 50000 - Workers: 24 - Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_055257/aggregate_report.txt b/cmd/benchmark/reports/run_20251120_055257/aggregate_report.txt deleted file mode 100644 index 995aa88..0000000 --- a/cmd/benchmark/reports/run_20251120_055257/aggregate_report.txt +++ /dev/null @@ -1,176 +0,0 @@ -================================================================ -NOSTR RELAY BENCHMARK AGGREGATE REPORT -================================================================ -Generated: 2025-11-20T06:19:54+00:00 -Benchmark Configuration: - Events per test: 50000 - Concurrent workers: 24 - Test duration: 60s - -Relays tested: 8 - -================================================================ -SUMMARY BY RELAY -================================================================ - -Relay: next-orly-badger ----------------------------------------- -Status: COMPLETED -Events/sec: 17207.24 -Events/sec: 6359.22 -Events/sec: 17207.24 -Success Rate: 100.0% -Success Rate: 100.0% -Success Rate: 100.0% -Avg Latency: 1.240424ms -Bottom 10% Avg Latency: 680.755µs -Avg Latency: 1.142716ms -P95 Latency: 1.987721ms -P95 Latency: 1.919402ms -P95 Latency: 858.138µs - -Relay: next-orly-dgraph ----------------------------------------- -Status: COMPLETED -Events/sec: 15975.41 -Events/sec: 6275.40 -Events/sec: 15975.41 -Success Rate: 100.0% -Success Rate: 100.0% -Success Rate: 100.0% -Avg Latency: 1.379901ms -Bottom 10% Avg Latency: 705.38µs -Avg Latency: 1.177806ms -P95 Latency: 2.307115ms -P95 Latency: 2.062351ms -P95 Latency: 858.252µs - -Relay: next-orly-neo4j ----------------------------------------- -Status: COMPLETED -Events/sec: 18050.59 -Events/sec: 6274.46 -Events/sec: 18050.59 -Success Rate: 100.0% -Success Rate: 100.0% -Success Rate: 100.0% -Avg Latency: 1.142811ms -Bottom 10% Avg Latency: 648.4µs -Avg Latency: 1.192885ms -P95 Latency: 1.69225ms -P95 Latency: 1.98103ms -P95 Latency: 864.535µs - -Relay: khatru-sqlite ----------------------------------------- -Status: COMPLETED -Events/sec: 16911.01 -Events/sec: 6346.70 -Events/sec: 16911.01 -Success Rate: 100.0% -Success Rate: 100.0% -Success Rate: 100.0% -Avg Latency: 1.278879ms -Bottom 10% Avg Latency: 694.3µs -Avg Latency: 1.145501ms -P95 Latency: 2.058912ms -P95 Latency: 1.860934ms -P95 Latency: 857.964µs - -Relay: khatru-badger ----------------------------------------- -Status: COMPLETED -Events/sec: 18095.48 -Events/sec: 6260.92 -Events/sec: 18095.48 -Success Rate: 100.0% -Success Rate: 100.0% -Success Rate: 100.0% -Avg Latency: 1.143282ms -Bottom 10% Avg Latency: 651.813µs -Avg Latency: 1.203274ms -P95 Latency: 1.721751ms -P95 Latency: 2.200764ms -P95 Latency: 865.67µs - -Relay: relayer-basic ----------------------------------------- -Status: COMPLETED -Events/sec: 17973.91 -Events/sec: 6364.14 -Events/sec: 17973.91 -Success Rate: 100.0% -Success Rate: 100.0% -Success Rate: 100.0% -Avg Latency: 1.159149ms -Bottom 10% Avg Latency: 666.22µs -Avg Latency: 1.075436ms -P95 Latency: 1.737633ms -P95 Latency: 1.805733ms -P95 Latency: 865.831µs - -Relay: strfry ----------------------------------------- -Status: COMPLETED -Events/sec: 17906.42 -Events/sec: 6245.55 -Events/sec: 17906.42 -Success Rate: 100.0% -Success Rate: 100.0% -Success Rate: 100.0% -Avg Latency: 1.165583ms -Bottom 10% Avg Latency: 663.03µs -Avg Latency: 1.143689ms -P95 Latency: 1.781377ms -P95 Latency: 2.088623ms -P95 Latency: 852.326µs - -Relay: nostr-rs-relay ----------------------------------------- -Status: COMPLETED -Events/sec: 18036.49 -Events/sec: 6278.12 -Events/sec: 18036.49 -Success Rate: 100.0% -Success Rate: 100.0% -Success Rate: 100.0% -Avg Latency: 1.14847ms -Bottom 10% Avg Latency: 653.417µs -Avg Latency: 1.18248ms -P95 Latency: 1.723577ms -P95 Latency: 2.000325ms -P95 Latency: 849.41µs - - -================================================================ -DETAILED RESULTS -================================================================ - -Individual relay reports are available in: - - /reports/run_20251120_055257/khatru-badger_results.txt - - /reports/run_20251120_055257/khatru-sqlite_results.txt - - /reports/run_20251120_055257/next-orly-badger_results.txt - - /reports/run_20251120_055257/next-orly-dgraph_results.txt - - /reports/run_20251120_055257/next-orly-neo4j_results.txt - - /reports/run_20251120_055257/nostr-rs-relay_results.txt - - /reports/run_20251120_055257/relayer-basic_results.txt - - /reports/run_20251120_055257/strfry_results.txt - -================================================================ -BENCHMARK COMPARISON TABLE -================================================================ - -Relay Status Peak Tput/s Avg Latency Success Rate ----- ------ ----------- ----------- ------------ -next-orly-badger OK 17207.24 1.240424ms 100.0% -next-orly-dgraph OK 15975.41 1.379901ms 100.0% -next-orly-neo4j OK 18050.59 1.142811ms 100.0% -khatru-sqlite OK 16911.01 1.278879ms 100.0% -khatru-badger OK 18095.48 1.143282ms 100.0% -relayer-basic OK 17973.91 1.159149ms 100.0% -strfry OK 17906.42 1.165583ms 100.0% -nostr-rs-relay OK 18036.49 1.14847ms 100.0% - -================================================================ -End of Report -================================================================ diff --git a/cmd/benchmark/reports/run_20251120_152640/aggregate_report.txt b/cmd/benchmark/reports/run_20251120_152640/aggregate_report.txt new file mode 100644 index 0000000..9cd42aa --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_152640/aggregate_report.txt @@ -0,0 +1,176 @@ +================================================================ +NOSTR RELAY BENCHMARK AGGREGATE REPORT +================================================================ +Generated: 2025-11-20T15:53:41+00:00 +Benchmark Configuration: + Events per test: 50000 + Concurrent workers: 24 + Test duration: 60s + +Relays tested: 8 + +================================================================ +SUMMARY BY RELAY +================================================================ + +Relay: next-orly-badger +---------------------------------------- +Status: COMPLETED +Events/sec: 17836.33 +Events/sec: 6340.29 +Events/sec: 17836.33 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.176626ms +Bottom 10% Avg Latency: 659.571µs +Avg Latency: 1.150109ms +P95 Latency: 1.79182ms +P95 Latency: 1.87572ms +P95 Latency: 870.11µs + +Relay: next-orly-dgraph +---------------------------------------- +Status: COMPLETED +Events/sec: 16687.23 +Events/sec: 6230.59 +Events/sec: 16687.23 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.299973ms +Bottom 10% Avg Latency: 703.285µs +Avg Latency: 1.216351ms +P95 Latency: 2.203343ms +P95 Latency: 2.205777ms +P95 Latency: 869.669µs + +Relay: next-orly-neo4j +---------------------------------------- +Status: COMPLETED +Events/sec: 17497.93 +Events/sec: 6254.20 +Events/sec: 17497.93 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.220061ms +Bottom 10% Avg Latency: 689.107µs +Avg Latency: 1.207729ms +P95 Latency: 1.873592ms +P95 Latency: 2.026464ms +P95 Latency: 860.711µs + +Relay: khatru-sqlite +---------------------------------------- +Status: COMPLETED +Events/sec: 15692.37 +Events/sec: 6031.64 +Events/sec: 15692.37 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.434878ms +Bottom 10% Avg Latency: 773.12µs +Avg Latency: 1.438112ms +P95 Latency: 2.364988ms +P95 Latency: 2.530373ms +P95 Latency: 869.767µs + +Relay: khatru-badger +---------------------------------------- +Status: COMPLETED +Events/sec: 15459.86 +Events/sec: 6208.94 +Events/sec: 15459.86 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.468719ms +Bottom 10% Avg Latency: 802.399µs +Avg Latency: 1.250479ms +P95 Latency: 2.396216ms +P95 Latency: 2.142422ms +P95 Latency: 869.166µs + +Relay: relayer-basic +---------------------------------------- +Status: COMPLETED +Events/sec: 15191.51 +Events/sec: 6144.49 +Events/sec: 15191.51 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.494499ms +Bottom 10% Avg Latency: 790.923µs +Avg Latency: 1.322915ms +P95 Latency: 2.461731ms +P95 Latency: 2.255818ms +P95 Latency: 888.112µs + +Relay: strfry +---------------------------------------- +Status: COMPLETED +Events/sec: 16583.98 +Events/sec: 5979.92 +Events/sec: 16583.98 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.325163ms +Bottom 10% Avg Latency: 732.389µs +Avg Latency: 1.467778ms +P95 Latency: 2.114188ms +P95 Latency: 2.793392ms +P95 Latency: 878.634µs + +Relay: nostr-rs-relay +---------------------------------------- +Status: COMPLETED +Events/sec: 15250.43 +Events/sec: 6286.54 +Events/sec: 15250.43 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.477342ms +Bottom 10% Avg Latency: 760.393µs +Avg Latency: 1.167307ms +P95 Latency: 2.527756ms +P95 Latency: 2.003086ms +P95 Latency: 868.365µs + + +================================================================ +DETAILED RESULTS +================================================================ + +Individual relay reports are available in: + - /reports/run_20251120_152640/khatru-badger_results.txt + - /reports/run_20251120_152640/khatru-sqlite_results.txt + - /reports/run_20251120_152640/next-orly-badger_results.txt + - /reports/run_20251120_152640/next-orly-dgraph_results.txt + - /reports/run_20251120_152640/next-orly-neo4j_results.txt + - /reports/run_20251120_152640/nostr-rs-relay_results.txt + - /reports/run_20251120_152640/relayer-basic_results.txt + - /reports/run_20251120_152640/strfry_results.txt + +================================================================ +BENCHMARK COMPARISON TABLE +================================================================ + +Relay Status Peak Tput/s Avg Latency Success Rate +---- ------ ----------- ----------- ------------ +next-orly-badger OK 17836.33 1.176626ms 100.0% +next-orly-dgraph OK 16687.23 1.299973ms 100.0% +next-orly-neo4j OK 17497.93 1.220061ms 100.0% +khatru-sqlite OK 15692.37 1.434878ms 100.0% +khatru-badger OK 15459.86 1.468719ms 100.0% +relayer-basic OK 15191.51 1.494499ms 100.0% +strfry OK 16583.98 1.325163ms 100.0% +nostr-rs-relay OK 15250.43 1.477342ms 100.0% + +================================================================ +End of Report +================================================================ diff --git a/cmd/benchmark/reports/run_20251120_152640/khatru-badger_results.txt b/cmd/benchmark/reports/run_20251120_152640/khatru-badger_results.txt new file mode 100644 index 0000000..b453d9b --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_152640/khatru-badger_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_khatru-badger_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763653210711898ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763653210711967ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763653210712038ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763653210712063ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763653210712074ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763653210712096ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763653210712103ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763653210712120ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763653210712127ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 15:40:10 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 15:40:10 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.234182899s +Events/sec: 15459.86 +Avg latency: 1.468719ms +P90 latency: 2.038084ms +P95 latency: 2.396216ms +P99 latency: 3.603968ms +Bottom 10% Avg latency: 802.399µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 297.444884ms +Burst completed: 5000 events in 304.488265ms +Burst completed: 5000 events in 279.56963ms +Burst completed: 5000 events in 292.82573ms +Burst completed: 5000 events in 272.991435ms +Burst completed: 5000 events in 326.534775ms +Burst completed: 5000 events in 384.727815ms +Burst completed: 5000 events in 311.186457ms +Burst completed: 5000 events in 290.311066ms +Burst completed: 5000 events in 285.474791ms +Burst test completed: 50000 events in 8.052899517s, errors: 0 +Events/sec: 6208.94 +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.439450917s +Combined ops/sec: 2045.87 +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: 408824 queries in 1m0.004827316s +Queries/sec: 6813.19 +Avg query latency: 1.638338ms +P95 query latency: 6.383173ms +P99 query latency: 10.185929ms +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: 320420 operations (270420 queries, 50000 writes) in 1m0.003847155s +Operations/sec: 5339.99 +Avg latency: 1.440536ms +Avg query latency: 1.415027ms +Avg write latency: 1.578501ms +P95 latency: 3.603977ms +P99 latency: 6.070557ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.234182899s +Total Events: 50000 +Events/sec: 15459.86 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 123 MB +Avg Latency: 1.468719ms +P90 Latency: 2.038084ms +P95 Latency: 2.396216ms +P99 Latency: 3.603968ms +Bottom 10% Avg Latency: 802.399µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.052899517s +Total Events: 50000 +Events/sec: 6208.94 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 205 MB +Avg Latency: 1.250479ms +P90 Latency: 1.830558ms +P95 Latency: 2.142422ms +P99 Latency: 3.076824ms +Bottom 10% Avg Latency: 472.17µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.439450917s +Total Events: 50000 +Events/sec: 2045.87 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 185 MB +Avg Latency: 370.175µs +P90 Latency: 782.31µs +P95 Latency: 869.166µs +P99 Latency: 1.071331ms +Bottom 10% Avg Latency: 972.715µs +---------------------------------------- + +Test: Query Performance +Duration: 1m0.004827316s +Total Events: 408824 +Events/sec: 6813.19 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 141 MB +Avg Latency: 1.638338ms +P90 Latency: 4.846916ms +P95 Latency: 6.383173ms +P99 Latency: 10.185929ms +Bottom 10% Avg Latency: 7.156294ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003847155s +Total Events: 320420 +Events/sec: 5339.99 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 161 MB +Avg Latency: 1.440536ms +P90 Latency: 2.837567ms +P95 Latency: 3.603977ms +P99 Latency: 6.070557ms +Bottom 10% Avg Latency: 4.284959ms +---------------------------------------- + +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-11-20T15:43:28+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_055257/khatru-sqlite_results.txt b/cmd/benchmark/reports/run_20251120_152640/khatru-sqlite_results.txt similarity index 57% rename from cmd/benchmark/reports/run_20251120_055257/khatru-sqlite_results.txt rename to cmd/benchmark/reports/run_20251120_152640/khatru-sqlite_results.txt index f5a7b45..4dfd957 100644 --- a/cmd/benchmark/reports/run_20251120_055257/khatru-sqlite_results.txt +++ b/cmd/benchmark/reports/run_20251120_152640/khatru-sqlite_results.txt @@ -1,15 +1,15 @@ Starting Nostr Relay Benchmark (Badger Backend) Data Directory: /tmp/benchmark_khatru-sqlite_8 Events: 50000, Workers: 24, Duration: 1m0s -1763618583847338ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763618583847420ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763618583847443ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763618583847449ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763618583847499ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763618583847582ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763618583847590ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763618583847603ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763618583847609ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 +1763653007553371ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763653007553443ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763653007553473ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763653007553480ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763653007553488ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763653007553504ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763653007553510ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763653007553522ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763653007553530ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 ╔════════════════════════════════════════════════════════╗ ║ BADGER BACKEND BENCHMARK SUITE ║ @@ -19,32 +19,32 @@ Events: 50000, Workers: 24, Duration: 1m0s RunPeakThroughputTest (Badger).. === Peak Throughput Test === -2025/11/20 06:03:03 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths -2025/11/20 06:03:03 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +2025/11/20 15:36:47 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 15:36:47 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 Events saved: 50000/50000 (100.0%), errors: 0 -Duration: 2.956654549s -Events/sec: 16911.01 -Avg latency: 1.278879ms -P90 latency: 1.759962ms -P95 latency: 2.058912ms -P99 latency: 2.984324ms -Bottom 10% Avg latency: 694.3µs +Duration: 3.186261331s +Events/sec: 15692.37 +Avg latency: 1.434878ms +P90 latency: 1.984672ms +P95 latency: 2.364988ms +P99 latency: 3.569955ms +Bottom 10% Avg latency: 773.12µs Wiping database between tests... RunBurstPatternTest (Badger).. === Burst Pattern Test === -Burst completed: 5000 events in 285.307897ms -Burst completed: 5000 events in 302.347653ms -Burst completed: 5000 events in 275.699401ms -Burst completed: 5000 events in 287.891414ms -Burst completed: 5000 events in 277.399852ms -Burst completed: 5000 events in 322.718229ms -Burst completed: 5000 events in 293.501002ms -Burst completed: 5000 events in 278.081935ms -Burst completed: 5000 events in 278.0892ms -Burst completed: 5000 events in 270.126334ms -Burst test completed: 50000 events in 7.878108141s, errors: 0 -Events/sec: 6346.70 +Burst completed: 5000 events in 344.43488ms +Burst completed: 5000 events in 426.471328ms +Burst completed: 5000 events in 310.728105ms +Burst completed: 5000 events in 315.740557ms +Burst completed: 5000 events in 293.680822ms +Burst completed: 5000 events in 343.519782ms +Burst completed: 5000 events in 375.877865ms +Burst completed: 5000 events in 294.27327ms +Burst completed: 5000 events in 302.082884ms +Burst completed: 5000 events in 275.303333ms +Burst test completed: 50000 events in 8.289618326s, errors: 0 +Events/sec: 6031.64 Wiping database between tests... RunMixedReadWriteTest (Badger).. @@ -62,8 +62,8 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Mixed test completed: 25000 writes, 25000 reads in 24.39267216s -Combined ops/sec: 2049.80 +Mixed test completed: 25000 writes, 25000 reads in 24.589006764s +Combined ops/sec: 2033.43 Wiping database between tests... RunQueryTest (Badger).. @@ -75,11 +75,11 @@ Generated 10000 events: All events are properly signed Pre-populating database with 10000 events for query tests... -Query test completed: 395438 queries in 1m0.004115415s -Queries/sec: 6590.18 -Avg query latency: 1.693836ms -P95 query latency: 6.903441ms -P99 query latency: 10.799184ms +Query test completed: 386321 queries in 1m0.004857306s +Queries/sec: 6438.16 +Avg query latency: 1.735172ms +P95 query latency: 7.105431ms +P99 query latency: 11.143036ms Wiping database between tests... RunConcurrentQueryStoreTest (Badger).. @@ -97,13 +97,13 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Concurrent test completed: 328042 operations (278042 queries, 50000 writes) in 1m0.002877808s -Operations/sec: 5467.10 -Avg latency: 1.365831ms -Avg query latency: 1.362176ms -Avg write latency: 1.386154ms -P95 latency: 3.409256ms -P99 latency: 5.369811ms +Concurrent test completed: 307546 operations (257546 queries, 50000 writes) in 1m0.004391663s +Operations/sec: 5125.39 +Avg latency: 1.529592ms +Avg query latency: 1.500743ms +Avg write latency: 1.678192ms +P95 latency: 3.924759ms +P99 latency: 6.521318ms === Badger benchmark completed === @@ -113,73 +113,73 @@ BENCHMARK REPORT ================================================================================ Test: Peak Throughput -Duration: 2.956654549s +Duration: 3.186261331s Total Events: 50000 -Events/sec: 16911.01 +Events/sec: 15692.37 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 102 MB -Avg Latency: 1.278879ms -P90 Latency: 1.759962ms -P95 Latency: 2.058912ms -P99 Latency: 2.984324ms -Bottom 10% Avg Latency: 694.3µs +Memory Used: 205 MB +Avg Latency: 1.434878ms +P90 Latency: 1.984672ms +P95 Latency: 2.364988ms +P99 Latency: 3.569955ms +Bottom 10% Avg Latency: 773.12µs ---------------------------------------- Test: Burst Pattern -Duration: 7.878108141s +Duration: 8.289618326s Total Events: 50000 -Events/sec: 6346.70 +Events/sec: 6031.64 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 256 MB -Avg Latency: 1.145501ms -P90 Latency: 1.61688ms -P95 Latency: 1.860934ms -P99 Latency: 2.617195ms -Bottom 10% Avg Latency: 440.724µs +Memory Used: 205 MB +Avg Latency: 1.438112ms +P90 Latency: 2.076818ms +P95 Latency: 2.530373ms +P99 Latency: 4.989991ms +Bottom 10% Avg Latency: 568.599µs ---------------------------------------- Test: Mixed Read/Write -Duration: 24.39267216s +Duration: 24.589006764s Total Events: 50000 -Events/sec: 2049.80 +Events/sec: 2033.43 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 177 MB -Avg Latency: 366.696µs -P90 Latency: 772.371µs -P95 Latency: 857.964µs -P99 Latency: 1.047576ms -Bottom 10% Avg Latency: 980.159µs +Memory Used: 200 MB +Avg Latency: 375.193µs +P90 Latency: 783.333µs +P95 Latency: 869.767µs +P99 Latency: 1.066383ms +Bottom 10% Avg Latency: 1.013439ms ---------------------------------------- Test: Query Performance -Duration: 1m0.004115415s -Total Events: 395438 -Events/sec: 6590.18 +Duration: 1m0.004857306s +Total Events: 386321 +Events/sec: 6438.16 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 124 MB -Avg Latency: 1.693836ms -P90 Latency: 5.169489ms -P95 Latency: 6.903441ms -P99 Latency: 10.799184ms -Bottom 10% Avg Latency: 7.636787ms +Memory Used: 127 MB +Avg Latency: 1.735172ms +P90 Latency: 5.2786ms +P95 Latency: 7.105431ms +P99 Latency: 11.143036ms +Bottom 10% Avg Latency: 7.866786ms ---------------------------------------- Test: Concurrent Query/Store -Duration: 1m0.002877808s -Total Events: 328042 -Events/sec: 5467.10 +Duration: 1m0.004391663s +Total Events: 307546 +Events/sec: 5125.39 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 117 MB -Avg Latency: 1.365831ms -P90 Latency: 2.746193ms -P95 Latency: 3.409256ms -P99 Latency: 5.369811ms -Bottom 10% Avg Latency: 3.859931ms +Memory Used: 99 MB +Avg Latency: 1.529592ms +P90 Latency: 3.079278ms +P95 Latency: 3.924759ms +P99 Latency: 6.521318ms +Bottom 10% Avg Latency: 4.582225ms ---------------------------------------- Report saved to: /tmp/benchmark_khatru-sqlite_8/benchmark_report.txt @@ -187,7 +187,7 @@ 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-11-20T06:06:21+00:00 +TEST_TIMESTAMP: 2025-11-20T15:40:05+00:00 BENCHMARK_CONFIG: Events: 50000 Workers: 24 diff --git a/cmd/benchmark/reports/run_20251120_055257/next-orly-badger_results.txt b/cmd/benchmark/reports/run_20251120_152640/next-orly-badger_results.txt similarity index 57% rename from cmd/benchmark/reports/run_20251120_055257/next-orly-badger_results.txt rename to cmd/benchmark/reports/run_20251120_152640/next-orly-badger_results.txt index a2cdcb5..686b2ed 100644 --- a/cmd/benchmark/reports/run_20251120_055257/next-orly-badger_results.txt +++ b/cmd/benchmark/reports/run_20251120_152640/next-orly-badger_results.txt @@ -1,15 +1,15 @@ Starting Nostr Relay Benchmark (Badger Backend) Data Directory: /tmp/benchmark_next-orly-badger_8 Events: 50000, Workers: 24, Duration: 1m0s -1763617977092863ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763617977092943ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763617977092970ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763617977092977ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763617977092985ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763617977093001ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763617977093007ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763617977093019ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763617977093026ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 +1763652400623108ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763652400623175ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763652400623195ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763652400623201ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763652400623212ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763652400623230ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763652400623235ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763652400623247ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763652400623253ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 ╔════════════════════════════════════════════════════════╗ ║ BADGER BACKEND BENCHMARK SUITE ║ @@ -19,33 +19,33 @@ Events: 50000, Workers: 24, Duration: 1m0s RunPeakThroughputTest (Badger).. === Peak Throughput Test === -2025/11/20 05:52:57 INFO: Extracted embedded libsecp256k1 to /tmp/orly-libsecp256k1/libsecp256k1.so -2025/11/20 05:52:57 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths -2025/11/20 05:52:57 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +2025/11/20 15:26:40 INFO: Extracted embedded libsecp256k1 to /tmp/orly-libsecp256k1/libsecp256k1.so +2025/11/20 15:26:40 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 15:26:40 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 Events saved: 50000/50000 (100.0%), errors: 0 -Duration: 2.905753281s -Events/sec: 17207.24 -Avg latency: 1.240424ms -P90 latency: 1.678725ms -P95 latency: 1.987721ms -P99 latency: 2.999992ms -Bottom 10% Avg latency: 680.755µs +Duration: 2.803267086s +Events/sec: 17836.33 +Avg latency: 1.176626ms +P90 latency: 1.565758ms +P95 latency: 1.79182ms +P99 latency: 2.567671ms +Bottom 10% Avg latency: 659.571µs Wiping database between tests... RunBurstPatternTest (Badger).. === Burst Pattern Test === -Burst completed: 5000 events in 284.828765ms -Burst completed: 5000 events in 302.028061ms -Burst completed: 5000 events in 270.908207ms -Burst completed: 5000 events in 284.981546ms -Burst completed: 5000 events in 268.367857ms -Burst completed: 5000 events in 339.898993ms -Burst completed: 5000 events in 284.918308ms -Burst completed: 5000 events in 268.931678ms -Burst completed: 5000 events in 275.363017ms -Burst completed: 5000 events in 276.370915ms -Burst test completed: 50000 events in 7.862602959s, errors: 0 -Events/sec: 6359.22 +Burst completed: 5000 events in 273.688446ms +Burst completed: 5000 events in 302.646243ms +Burst completed: 5000 events in 288.036597ms +Burst completed: 5000 events in 307.50298ms +Burst completed: 5000 events in 274.641308ms +Burst completed: 5000 events in 333.250889ms +Burst completed: 5000 events in 290.803893ms +Burst completed: 5000 events in 266.599814ms +Burst completed: 5000 events in 274.663293ms +Burst completed: 5000 events in 268.549794ms +Burst test completed: 50000 events in 7.886078444s, errors: 0 +Events/sec: 6340.29 Wiping database between tests... RunMixedReadWriteTest (Badger).. @@ -63,8 +63,8 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Mixed test completed: 25000 writes, 25000 reads in 24.450909635s -Combined ops/sec: 2044.91 +Mixed test completed: 25000 writes, 25000 reads in 24.493227686s +Combined ops/sec: 2041.38 Wiping database between tests... RunQueryTest (Badger).. @@ -76,11 +76,11 @@ Generated 10000 events: All events are properly signed Pre-populating database with 10000 events for query tests... -Query test completed: 421640 queries in 1m0.005098014s -Queries/sec: 7026.74 -Avg query latency: 1.569059ms -P95 query latency: 5.982148ms -P99 query latency: 9.486046ms +Query test completed: 413626 queries in 1m0.007599287s +Queries/sec: 6892.89 +Avg query latency: 1.605375ms +P95 query latency: 6.217976ms +P99 query latency: 9.897364ms Wiping database between tests... RunConcurrentQueryStoreTest (Badger).. @@ -98,13 +98,13 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Concurrent test completed: 325881 operations (275881 queries, 50000 writes) in 1m0.002090641s -Operations/sec: 5431.16 -Avg latency: 1.405044ms -Avg query latency: 1.37991ms -Avg write latency: 1.543729ms -P95 latency: 3.485813ms -P99 latency: 5.416742ms +Concurrent test completed: 323564 operations (273564 queries, 50000 writes) in 1m0.003158101s +Operations/sec: 5392.45 +Avg latency: 1.423293ms +Avg query latency: 1.394356ms +Avg write latency: 1.581619ms +P95 latency: 3.549982ms +P99 latency: 5.600343ms === Badger benchmark completed === @@ -114,73 +114,73 @@ BENCHMARK REPORT ================================================================================ Test: Peak Throughput -Duration: 2.905753281s +Duration: 2.803267086s Total Events: 50000 -Events/sec: 17207.24 +Events/sec: 17836.33 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 163 MB -Avg Latency: 1.240424ms -P90 Latency: 1.678725ms -P95 Latency: 1.987721ms -P99 Latency: 2.999992ms -Bottom 10% Avg Latency: 680.755µs +Memory Used: 170 MB +Avg Latency: 1.176626ms +P90 Latency: 1.565758ms +P95 Latency: 1.79182ms +P99 Latency: 2.567671ms +Bottom 10% Avg Latency: 659.571µs ---------------------------------------- Test: Burst Pattern -Duration: 7.862602959s +Duration: 7.886078444s Total Events: 50000 -Events/sec: 6359.22 +Events/sec: 6340.29 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 190 MB -Avg Latency: 1.142716ms -P90 Latency: 1.637518ms -P95 Latency: 1.919402ms -P99 Latency: 2.878332ms -Bottom 10% Avg Latency: 474.478µs +Memory Used: 209 MB +Avg Latency: 1.150109ms +P90 Latency: 1.62389ms +P95 Latency: 1.87572ms +P99 Latency: 2.697118ms +Bottom 10% Avg Latency: 460.59µs ---------------------------------------- Test: Mixed Read/Write -Duration: 24.450909635s +Duration: 24.493227686s Total Events: 50000 -Events/sec: 2044.91 +Events/sec: 2041.38 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 144 MB -Avg Latency: 369.153µs -P90 Latency: 774.06µs -P95 Latency: 858.138µs -P99 Latency: 1.053249ms -Bottom 10% Avg Latency: 986.534µs +Memory Used: 214 MB +Avg Latency: 373.118µs +P90 Latency: 783.686µs +P95 Latency: 870.11µs +P99 Latency: 1.06392ms +Bottom 10% Avg Latency: 989.173µs ---------------------------------------- Test: Query Performance -Duration: 1m0.005098014s -Total Events: 421640 -Events/sec: 7026.74 +Duration: 1m0.007599287s +Total Events: 413626 +Events/sec: 6892.89 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 93 MB -Avg Latency: 1.569059ms -P90 Latency: 4.620816ms -P95 Latency: 5.982148ms -P99 Latency: 9.486046ms -Bottom 10% Avg Latency: 6.685482ms +Memory Used: 101 MB +Avg Latency: 1.605375ms +P90 Latency: 4.744413ms +P95 Latency: 6.217976ms +P99 Latency: 9.897364ms +Bottom 10% Avg Latency: 6.953348ms ---------------------------------------- Test: Concurrent Query/Store -Duration: 1m0.002090641s -Total Events: 325881 -Events/sec: 5431.16 +Duration: 1m0.003158101s +Total Events: 323564 +Events/sec: 5392.45 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 111 MB -Avg Latency: 1.405044ms -P90 Latency: 2.782888ms -P95 Latency: 3.485813ms -P99 Latency: 5.416742ms -Bottom 10% Avg Latency: 3.929706ms +Memory Used: 106 MB +Avg Latency: 1.423293ms +P90 Latency: 2.81525ms +P95 Latency: 3.549982ms +P99 Latency: 5.600343ms +Bottom 10% Avg Latency: 4.011381ms ---------------------------------------- Report saved to: /tmp/benchmark_next-orly-badger_8/benchmark_report.txt @@ -188,7 +188,7 @@ AsciiDoc report saved to: /tmp/benchmark_next-orly-badger_8/benchmark_report.ado RELAY_NAME: next-orly-badger RELAY_URL: ws://next-orly-badger:8080 -TEST_TIMESTAMP: 2025-11-20T05:56:14+00:00 +TEST_TIMESTAMP: 2025-11-20T15:29:57+00:00 BENCHMARK_CONFIG: Events: 50000 Workers: 24 diff --git a/cmd/benchmark/reports/run_20251120_152640/next-orly-dgraph_results.txt b/cmd/benchmark/reports/run_20251120_152640/next-orly-dgraph_results.txt new file mode 100644 index 0000000..f267512 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_152640/next-orly-dgraph_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_next-orly-dgraph_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763652602763705ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763652602763773ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763652602763796ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763652602763801ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763652602763811ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763652602763824ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763652602763828ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763652602763841ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763652602763847ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 15:30:02 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 15:30:02 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 2.996302267s +Events/sec: 16687.23 +Avg latency: 1.299973ms +P90 latency: 1.872602ms +P95 latency: 2.203343ms +P99 latency: 3.221304ms +Bottom 10% Avg latency: 703.285µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 279.514933ms +Burst completed: 5000 events in 333.416463ms +Burst completed: 5000 events in 377.803965ms +Burst completed: 5000 events in 313.958626ms +Burst completed: 5000 events in 288.237124ms +Burst completed: 5000 events in 336.526138ms +Burst completed: 5000 events in 278.656719ms +Burst completed: 5000 events in 270.704289ms +Burst completed: 5000 events in 268.660351ms +Burst completed: 5000 events in 270.785192ms +Burst test completed: 50000 events in 8.024923997s, errors: 0 +Events/sec: 6230.59 +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.485015769s +Combined ops/sec: 2042.07 +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: 414358 queries in 1m0.005939033s +Queries/sec: 6905.28 +Avg query latency: 1.609497ms +P95 query latency: 6.244748ms +P99 query latency: 9.843682ms +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: 324836 operations (274836 queries, 50000 writes) in 1m0.003111101s +Operations/sec: 5413.65 +Avg latency: 1.384161ms +Avg query latency: 1.372926ms +Avg write latency: 1.445917ms +P95 latency: 3.428577ms +P99 latency: 5.394055ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 2.996302267s +Total Events: 50000 +Events/sec: 16687.23 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 144 MB +Avg Latency: 1.299973ms +P90 Latency: 1.872602ms +P95 Latency: 2.203343ms +P99 Latency: 3.221304ms +Bottom 10% Avg Latency: 703.285µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.024923997s +Total Events: 50000 +Events/sec: 6230.59 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 205 MB +Avg Latency: 1.216351ms +P90 Latency: 1.87152ms +P95 Latency: 2.205777ms +P99 Latency: 3.125661ms +Bottom 10% Avg Latency: 457.327µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.485015769s +Total Events: 50000 +Events/sec: 2042.07 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 173 MB +Avg Latency: 374.953µs +P90 Latency: 783.735µs +P95 Latency: 869.669µs +P99 Latency: 1.048389ms +Bottom 10% Avg Latency: 1.004367ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.005939033s +Total Events: 414358 +Events/sec: 6905.28 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 123 MB +Avg Latency: 1.609497ms +P90 Latency: 4.777632ms +P95 Latency: 6.244748ms +P99 Latency: 9.843682ms +Bottom 10% Avg Latency: 6.949572ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003111101s +Total Events: 324836 +Events/sec: 5413.65 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 153 MB +Avg Latency: 1.384161ms +P90 Latency: 2.768438ms +P95 Latency: 3.428577ms +P99 Latency: 5.394055ms +Bottom 10% Avg Latency: 3.893148ms +---------------------------------------- + +Report saved to: /tmp/benchmark_next-orly-dgraph_8/benchmark_report.txt +AsciiDoc report saved to: /tmp/benchmark_next-orly-dgraph_8/benchmark_report.adoc + +RELAY_NAME: next-orly-dgraph +RELAY_URL: ws://next-orly-dgraph:8080 +TEST_TIMESTAMP: 2025-11-20T15:33:20+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_055257/next-orly-neo4j_results.txt b/cmd/benchmark/reports/run_20251120_152640/next-orly-neo4j_results.txt similarity index 57% rename from cmd/benchmark/reports/run_20251120_055257/next-orly-neo4j_results.txt rename to cmd/benchmark/reports/run_20251120_152640/next-orly-neo4j_results.txt index 9637b6a..8a24140 100644 --- a/cmd/benchmark/reports/run_20251120_055257/next-orly-neo4j_results.txt +++ b/cmd/benchmark/reports/run_20251120_152640/next-orly-neo4j_results.txt @@ -1,15 +1,15 @@ Starting Nostr Relay Benchmark (Badger Backend) Data Directory: /tmp/benchmark_next-orly-neo4j_8 Events: 50000, Workers: 24, Duration: 1m0s -1763618381699297ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763618381699352ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763618381699377ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763618381699382ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763618381699391ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763618381699405ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763618381699410ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763618381699424ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763618381699429ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 +1763652805203358ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763652805203420ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763652805203442ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763652805203447ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763652805203457ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763652805203478ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763652805203483ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763652805203495ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763652805203501ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 ╔════════════════════════════════════════════════════════╗ ║ BADGER BACKEND BENCHMARK SUITE ║ @@ -19,32 +19,32 @@ Events: 50000, Workers: 24, Duration: 1m0s RunPeakThroughputTest (Badger).. === Peak Throughput Test === -2025/11/20 05:59:41 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths -2025/11/20 05:59:41 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +2025/11/20 15:33:25 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 15:33:25 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 Events saved: 50000/50000 (100.0%), errors: 0 -Duration: 2.769992527s -Events/sec: 18050.59 -Avg latency: 1.142811ms -P90 latency: 1.475809ms -P95 latency: 1.69225ms -P99 latency: 2.440594ms -Bottom 10% Avg latency: 648.4µs +Duration: 2.857480805s +Events/sec: 17497.93 +Avg latency: 1.220061ms +P90 latency: 1.596304ms +P95 latency: 1.873592ms +P99 latency: 2.782174ms +Bottom 10% Avg latency: 689.107µs Wiping database between tests... RunBurstPatternTest (Badger).. === Burst Pattern Test === -Burst completed: 5000 events in 277.842041ms -Burst completed: 5000 events in 308.098325ms -Burst completed: 5000 events in 277.741996ms -Burst completed: 5000 events in 293.998635ms -Burst completed: 5000 events in 283.052785ms -Burst completed: 5000 events in 327.151674ms -Burst completed: 5000 events in 302.694541ms -Burst completed: 5000 events in 317.306363ms -Burst completed: 5000 events in 302.657295ms -Burst completed: 5000 events in 270.224532ms -Burst test completed: 50000 events in 7.968808771s, errors: 0 -Events/sec: 6274.46 +Burst completed: 5000 events in 281.99337ms +Burst completed: 5000 events in 295.005478ms +Burst completed: 5000 events in 269.052958ms +Burst completed: 5000 events in 354.874939ms +Burst completed: 5000 events in 272.895272ms +Burst completed: 5000 events in 323.411741ms +Burst completed: 5000 events in 292.611169ms +Burst completed: 5000 events in 302.127762ms +Burst completed: 5000 events in 319.054762ms +Burst completed: 5000 events in 278.810535ms +Burst test completed: 50000 events in 7.994629013s, errors: 0 +Events/sec: 6254.20 Wiping database between tests... RunMixedReadWriteTest (Badger).. @@ -62,8 +62,8 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Mixed test completed: 25000 writes, 25000 reads in 24.488197886s -Combined ops/sec: 2041.80 +Mixed test completed: 25000 writes, 25000 reads in 24.55551402s +Combined ops/sec: 2036.20 Wiping database between tests... RunQueryTest (Badger).. @@ -75,11 +75,11 @@ Generated 10000 events: All events are properly signed Pre-populating database with 10000 events for query tests... -Query test completed: 423936 queries in 1m0.004174246s -Queries/sec: 7065.11 -Avg query latency: 1.560903ms -P95 query latency: 5.964936ms -P99 query latency: 9.506308ms +Query test completed: 409386 queries in 1m0.004731834s +Queries/sec: 6822.56 +Avg query latency: 1.626092ms +P95 query latency: 6.350996ms +P99 query latency: 10.054136ms Wiping database between tests... RunConcurrentQueryStoreTest (Badger).. @@ -97,13 +97,13 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Concurrent test completed: 322118 operations (272118 queries, 50000 writes) in 1m0.004816049s -Operations/sec: 5368.20 -Avg latency: 1.42877ms -Avg query latency: 1.406819ms -Avg write latency: 1.548233ms -P95 latency: 3.558185ms -P99 latency: 5.974717ms +Concurrent test completed: 323034 operations (273034 queries, 50000 writes) in 1m0.00211611s +Operations/sec: 5383.71 +Avg latency: 1.425098ms +Avg query latency: 1.396374ms +Avg write latency: 1.58195ms +P95 latency: 3.545999ms +P99 latency: 6.036557ms === Badger benchmark completed === @@ -113,73 +113,73 @@ BENCHMARK REPORT ================================================================================ Test: Peak Throughput -Duration: 2.769992527s +Duration: 2.857480805s Total Events: 50000 -Events/sec: 18050.59 +Events/sec: 17497.93 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 205 MB -Avg Latency: 1.142811ms -P90 Latency: 1.475809ms -P95 Latency: 1.69225ms -P99 Latency: 2.440594ms -Bottom 10% Avg Latency: 648.4µs +Memory Used: 146 MB +Avg Latency: 1.220061ms +P90 Latency: 1.596304ms +P95 Latency: 1.873592ms +P99 Latency: 2.782174ms +Bottom 10% Avg Latency: 689.107µs ---------------------------------------- Test: Burst Pattern -Duration: 7.968808771s +Duration: 7.994629013s Total Events: 50000 -Events/sec: 6274.46 +Events/sec: 6254.20 Success Rate: 100.0% Concurrent Workers: 24 Memory Used: 252 MB -Avg Latency: 1.192885ms -P90 Latency: 1.719783ms -P95 Latency: 1.98103ms -P99 Latency: 2.799408ms -Bottom 10% Avg Latency: 481.913µs +Avg Latency: 1.207729ms +P90 Latency: 1.708517ms +P95 Latency: 2.026464ms +P99 Latency: 3.279542ms +Bottom 10% Avg Latency: 485.191µs ---------------------------------------- Test: Mixed Read/Write -Duration: 24.488197886s +Duration: 24.55551402s Total Events: 50000 -Events/sec: 2041.80 +Events/sec: 2036.20 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 177 MB -Avg Latency: 372.501µs -P90 Latency: 775.366µs -P95 Latency: 864.535µs -P99 Latency: 1.063193ms -Bottom 10% Avg Latency: 1.030084ms +Memory Used: 136 MB +Avg Latency: 373.684µs +P90 Latency: 776.891µs +P95 Latency: 860.711µs +P99 Latency: 1.061864ms +Bottom 10% Avg Latency: 1.011492ms ---------------------------------------- Test: Query Performance -Duration: 1m0.004174246s -Total Events: 423936 -Events/sec: 7065.11 +Duration: 1m0.004731834s +Total Events: 409386 +Events/sec: 6822.56 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 105 MB -Avg Latency: 1.560903ms -P90 Latency: 4.593205ms -P95 Latency: 5.964936ms -P99 Latency: 9.506308ms -Bottom 10% Avg Latency: 6.687404ms +Memory Used: 116 MB +Avg Latency: 1.626092ms +P90 Latency: 4.833133ms +P95 Latency: 6.350996ms +P99 Latency: 10.054136ms +Bottom 10% Avg Latency: 7.107595ms ---------------------------------------- Test: Concurrent Query/Store -Duration: 1m0.004816049s -Total Events: 322118 -Events/sec: 5368.20 +Duration: 1m0.00211611s +Total Events: 323034 +Events/sec: 5383.71 Success Rate: 100.0% Concurrent Workers: 24 Memory Used: 90 MB -Avg Latency: 1.42877ms -P90 Latency: 2.828968ms -P95 Latency: 3.558185ms -P99 Latency: 5.974717ms -Bottom 10% Avg Latency: 4.198317ms +Avg Latency: 1.425098ms +P90 Latency: 2.805728ms +P95 Latency: 3.545999ms +P99 Latency: 6.036557ms +Bottom 10% Avg Latency: 4.162695ms ---------------------------------------- Report saved to: /tmp/benchmark_next-orly-neo4j_8/benchmark_report.txt @@ -187,7 +187,7 @@ 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-11-20T06:02:58+00:00 +TEST_TIMESTAMP: 2025-11-20T15:36:42+00:00 BENCHMARK_CONFIG: Events: 50000 Workers: 24 diff --git a/cmd/benchmark/reports/run_20251120_152640/nostr-rs-relay_results.txt b/cmd/benchmark/reports/run_20251120_152640/nostr-rs-relay_results.txt new file mode 100644 index 0000000..34fc593 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_152640/nostr-rs-relay_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_nostr-rs-relay_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763653819215784ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763653819215858ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763653819215881ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763653819215886ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763653819215898ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763653819215918ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763653819215925ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763653819215941ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763653819215947ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 15:50:19 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 15:50:19 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.278596732s +Events/sec: 15250.43 +Avg latency: 1.477342ms +P90 latency: 2.162459ms +P95 latency: 2.527756ms +P99 latency: 3.539613ms +Bottom 10% Avg latency: 760.393µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 347.551003ms +Burst completed: 5000 events in 310.553942ms +Burst completed: 5000 events in 274.417201ms +Burst completed: 5000 events in 290.829667ms +Burst completed: 5000 events in 269.849068ms +Burst completed: 5000 events in 319.02529ms +Burst completed: 5000 events in 298.378337ms +Burst completed: 5000 events in 283.345709ms +Burst completed: 5000 events in 276.76346ms +Burst completed: 5000 events in 276.349452ms +Burst test completed: 50000 events in 7.9534977s, errors: 0 +Events/sec: 6286.54 +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.492844824s +Combined ops/sec: 2041.41 +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: 387418 queries in 1m0.003606821s +Queries/sec: 6456.58 +Avg query latency: 1.742021ms +P95 query latency: 7.039881ms +P99 query latency: 11.419213ms +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: 319676 operations (269676 queries, 50000 writes) in 1m0.002980175s +Operations/sec: 5327.67 +Avg latency: 1.420802ms +Avg query latency: 1.406877ms +Avg write latency: 1.495907ms +P95 latency: 3.581021ms +P99 latency: 5.785351ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.278596732s +Total Events: 50000 +Events/sec: 15250.43 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 137 MB +Avg Latency: 1.477342ms +P90 Latency: 2.162459ms +P95 Latency: 2.527756ms +P99 Latency: 3.539613ms +Bottom 10% Avg Latency: 760.393µs +---------------------------------------- + +Test: Burst Pattern +Duration: 7.9534977s +Total Events: 50000 +Events/sec: 6286.54 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 204 MB +Avg Latency: 1.167307ms +P90 Latency: 1.706552ms +P95 Latency: 2.003086ms +P99 Latency: 2.859297ms +Bottom 10% Avg Latency: 438.858µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.492844824s +Total Events: 50000 +Events/sec: 2041.41 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 178 MB +Avg Latency: 377.851µs +P90 Latency: 785.336µs +P95 Latency: 868.365µs +P99 Latency: 1.068355ms +Bottom 10% Avg Latency: 1.036749ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.003606821s +Total Events: 387418 +Events/sec: 6456.58 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 125 MB +Avg Latency: 1.742021ms +P90 Latency: 5.212981ms +P95 Latency: 7.039881ms +P99 Latency: 11.419213ms +Bottom 10% Avg Latency: 7.926637ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.002980175s +Total Events: 319676 +Events/sec: 5327.67 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 136 MB +Avg Latency: 1.420802ms +P90 Latency: 2.833978ms +P95 Latency: 3.581021ms +P99 Latency: 5.785351ms +Bottom 10% Avg Latency: 4.147653ms +---------------------------------------- + +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-11-20T15:53:36+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_152640/relayer-basic_results.txt b/cmd/benchmark/reports/run_20251120_152640/relayer-basic_results.txt new file mode 100644 index 0000000..de6b628 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_152640/relayer-basic_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_relayer-basic_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763653413403632ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763653413403714ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763653413403774ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763653413403787ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763653413403798ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763653413403814ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763653413403819ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763653413403829ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763653413403835ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 15:43:33 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 15:43:33 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.291311068s +Events/sec: 15191.51 +Avg latency: 1.494499ms +P90 latency: 2.107626ms +P95 latency: 2.461731ms +P99 latency: 3.662388ms +Bottom 10% Avg latency: 790.923µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 344.087556ms +Burst completed: 5000 events in 311.578355ms +Burst completed: 5000 events in 276.67865ms +Burst completed: 5000 events in 295.952793ms +Burst completed: 5000 events in 314.347861ms +Burst completed: 5000 events in 365.599791ms +Burst completed: 5000 events in 312.086332ms +Burst completed: 5000 events in 299.872209ms +Burst completed: 5000 events in 328.254546ms +Burst completed: 5000 events in 283.179754ms +Burst test completed: 50000 events in 8.137375007s, errors: 0 +Events/sec: 6144.49 +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.527874554s +Combined ops/sec: 2038.50 +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: 404814 queries in 1m0.005258143s +Queries/sec: 6746.31 +Avg query latency: 1.649233ms +P95 query latency: 6.427316ms +P99 query latency: 10.348647ms +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: 321308 operations (271308 queries, 50000 writes) in 1m0.002966019s +Operations/sec: 5354.87 +Avg latency: 1.426015ms +Avg query latency: 1.403835ms +Avg write latency: 1.546366ms +P95 latency: 3.544854ms +P99 latency: 5.812454ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.291311068s +Total Events: 50000 +Events/sec: 15191.51 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 96 MB +Avg Latency: 1.494499ms +P90 Latency: 2.107626ms +P95 Latency: 2.461731ms +P99 Latency: 3.662388ms +Bottom 10% Avg Latency: 790.923µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.137375007s +Total Events: 50000 +Events/sec: 6144.49 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 204 MB +Avg Latency: 1.322915ms +P90 Latency: 1.930428ms +P95 Latency: 2.255818ms +P99 Latency: 3.262786ms +Bottom 10% Avg Latency: 503.483µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.527874554s +Total Events: 50000 +Events/sec: 2038.50 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 132 MB +Avg Latency: 383.613µs +P90 Latency: 799.103µs +P95 Latency: 888.112µs +P99 Latency: 1.115605ms +Bottom 10% Avg Latency: 1.022007ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.005258143s +Total Events: 404814 +Events/sec: 6746.31 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 125 MB +Avg Latency: 1.649233ms +P90 Latency: 4.874718ms +P95 Latency: 6.427316ms +P99 Latency: 10.348647ms +Bottom 10% Avg Latency: 7.248468ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.002966019s +Total Events: 321308 +Events/sec: 5354.87 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 89 MB +Avg Latency: 1.426015ms +P90 Latency: 2.835111ms +P95 Latency: 3.544854ms +P99 Latency: 5.812454ms +Bottom 10% Avg Latency: 4.119764ms +---------------------------------------- + +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-11-20T15:46:51+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_055257/strfry_results.txt b/cmd/benchmark/reports/run_20251120_152640/strfry_results.txt similarity index 57% rename from cmd/benchmark/reports/run_20251120_055257/strfry_results.txt rename to cmd/benchmark/reports/run_20251120_152640/strfry_results.txt index 9539447..4cd84e3 100644 --- a/cmd/benchmark/reports/run_20251120_055257/strfry_results.txt +++ b/cmd/benchmark/reports/run_20251120_152640/strfry_results.txt @@ -1,15 +1,15 @@ Starting Nostr Relay Benchmark (Badger Backend) Data Directory: /tmp/benchmark_strfry_8 Events: 50000, Workers: 24, Duration: 1m0s -1763619190218220ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763619190218285ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763619190218308ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763619190218314ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763619190218321ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763619190218340ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763619190218345ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763619190218360ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763619190218365ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 +1763653616411609ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763653616411669ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763653616411689ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763653616411694ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763653616411704ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763653616411716ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763653616411721ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763653616411737ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763653616411743ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 ╔════════════════════════════════════════════════════════╗ ║ BADGER BACKEND BENCHMARK SUITE ║ @@ -19,32 +19,32 @@ Events: 50000, Workers: 24, Duration: 1m0s RunPeakThroughputTest (Badger).. === Peak Throughput Test === -2025/11/20 06:13:10 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths -2025/11/20 06:13:10 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +2025/11/20 15:46:56 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 15:46:56 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 Events saved: 50000/50000 (100.0%), errors: 0 -Duration: 2.792294779s -Events/sec: 17906.42 -Avg latency: 1.165583ms -P90 latency: 1.530608ms -P95 latency: 1.781377ms -P99 latency: 2.624355ms -Bottom 10% Avg latency: 663.03µs +Duration: 3.014958576s +Events/sec: 16583.98 +Avg latency: 1.325163ms +P90 latency: 1.786363ms +P95 latency: 2.114188ms +P99 latency: 3.49584ms +Bottom 10% Avg latency: 732.389µs Wiping database between tests... RunBurstPatternTest (Badger).. === Burst Pattern Test === -Burst completed: 5000 events in 277.678318ms -Burst completed: 5000 events in 306.128647ms -Burst completed: 5000 events in 296.483867ms -Burst completed: 5000 events in 401.910739ms -Burst completed: 5000 events in 282.04223ms -Burst completed: 5000 events in 320.586138ms -Burst completed: 5000 events in 291.737429ms -Burst completed: 5000 events in 275.451284ms -Burst completed: 5000 events in 290.811553ms -Burst completed: 5000 events in 255.912658ms -Burst test completed: 50000 events in 8.005699907s, errors: 0 -Events/sec: 6245.55 +Burst completed: 5000 events in 278.298939ms +Burst completed: 5000 events in 313.522394ms +Burst completed: 5000 events in 294.043544ms +Burst completed: 5000 events in 309.8617ms +Burst completed: 5000 events in 328.19151ms +Burst completed: 5000 events in 383.407013ms +Burst completed: 5000 events in 529.340096ms +Burst completed: 5000 events in 322.571733ms +Burst completed: 5000 events in 303.970105ms +Burst completed: 5000 events in 289.891623ms +Burst test completed: 50000 events in 8.361315231s, errors: 0 +Events/sec: 5979.92 Wiping database between tests... RunMixedReadWriteTest (Badger).. @@ -62,8 +62,8 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Mixed test completed: 25000 writes, 25000 reads in 24.441964307s -Combined ops/sec: 2045.66 +Mixed test completed: 25000 writes, 25000 reads in 24.466759982s +Combined ops/sec: 2043.59 Wiping database between tests... RunQueryTest (Badger).. @@ -75,11 +75,11 @@ Generated 10000 events: All events are properly signed Pre-populating database with 10000 events for query tests... -Query test completed: 423574 queries in 1m0.008334214s -Queries/sec: 7058.59 -Avg query latency: 1.564339ms -P95 query latency: 5.969023ms -P99 query latency: 9.492963ms +Query test completed: 387526 queries in 1m0.00778943s +Queries/sec: 6457.93 +Avg query latency: 1.741809ms +P95 query latency: 6.972503ms +P99 query latency: 11.293675ms Wiping database between tests... RunConcurrentQueryStoreTest (Badger).. @@ -97,13 +97,13 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Concurrent test completed: 328763 operations (278763 queries, 50000 writes) in 1m0.002904523s -Operations/sec: 5479.12 -Avg latency: 1.359575ms -Avg query latency: 1.354662ms -Avg write latency: 1.386966ms -P95 latency: 3.384034ms -P99 latency: 5.281823ms +Concurrent test completed: 323401 operations (273401 queries, 50000 writes) in 1m0.003665569s +Operations/sec: 5389.69 +Avg latency: 1.417249ms +Avg query latency: 1.392804ms +Avg write latency: 1.550915ms +P95 latency: 3.520567ms +P99 latency: 5.657268ms === Badger benchmark completed === @@ -113,73 +113,73 @@ BENCHMARK REPORT ================================================================================ Test: Peak Throughput -Duration: 2.792294779s +Duration: 3.014958576s Total Events: 50000 -Events/sec: 17906.42 +Events/sec: 16583.98 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 207 MB -Avg Latency: 1.165583ms -P90 Latency: 1.530608ms -P95 Latency: 1.781377ms -P99 Latency: 2.624355ms -Bottom 10% Avg Latency: 663.03µs +Memory Used: 167 MB +Avg Latency: 1.325163ms +P90 Latency: 1.786363ms +P95 Latency: 2.114188ms +P99 Latency: 3.49584ms +Bottom 10% Avg Latency: 732.389µs ---------------------------------------- Test: Burst Pattern -Duration: 8.005699907s +Duration: 8.361315231s Total Events: 50000 -Events/sec: 6245.55 +Events/sec: 5979.92 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 250 MB -Avg Latency: 1.143689ms -P90 Latency: 1.750689ms -P95 Latency: 2.088623ms -P99 Latency: 3.274904ms -Bottom 10% Avg Latency: 423.835µs +Memory Used: 210 MB +Avg Latency: 1.467778ms +P90 Latency: 2.245087ms +P95 Latency: 2.793392ms +P99 Latency: 4.500615ms +Bottom 10% Avg Latency: 566.462µs ---------------------------------------- Test: Mixed Read/Write -Duration: 24.441964307s +Duration: 24.466759982s Total Events: 50000 -Events/sec: 2045.66 +Events/sec: 2043.59 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 215 MB -Avg Latency: 364.721µs -P90 Latency: 765.73µs -P95 Latency: 852.326µs -P99 Latency: 1.050373ms -Bottom 10% Avg Latency: 984.48µs +Memory Used: 217 MB +Avg Latency: 379.14µs +P90 Latency: 785.126µs +P95 Latency: 878.634µs +P99 Latency: 1.097992ms +Bottom 10% Avg Latency: 1.031459ms ---------------------------------------- Test: Query Performance -Duration: 1m0.008334214s -Total Events: 423574 -Events/sec: 7058.59 +Duration: 1m0.00778943s +Total Events: 387526 +Events/sec: 6457.93 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 151 MB -Avg Latency: 1.564339ms -P90 Latency: 4.611725ms -P95 Latency: 5.969023ms -P99 Latency: 9.492963ms -Bottom 10% Avg Latency: 6.681727ms +Memory Used: 136 MB +Avg Latency: 1.741809ms +P90 Latency: 5.188695ms +P95 Latency: 6.972503ms +P99 Latency: 11.293675ms +Bottom 10% Avg Latency: 7.860799ms ---------------------------------------- Test: Concurrent Query/Store -Duration: 1m0.002904523s -Total Events: 328763 -Events/sec: 5479.12 +Duration: 1m0.003665569s +Total Events: 323401 +Events/sec: 5389.69 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 108 MB -Avg Latency: 1.359575ms -P90 Latency: 2.735116ms -P95 Latency: 3.384034ms -P99 Latency: 5.281823ms -Bottom 10% Avg Latency: 3.815359ms +Memory Used: 106 MB +Avg Latency: 1.417249ms +P90 Latency: 2.811055ms +P95 Latency: 3.520567ms +P99 Latency: 5.657268ms +Bottom 10% Avg Latency: 4.052952ms ---------------------------------------- Report saved to: /tmp/benchmark_strfry_8/benchmark_report.txt @@ -187,7 +187,7 @@ AsciiDoc report saved to: /tmp/benchmark_strfry_8/benchmark_report.adoc RELAY_NAME: strfry RELAY_URL: ws://strfry:8080 -TEST_TIMESTAMP: 2025-11-20T06:16:27+00:00 +TEST_TIMESTAMP: 2025-11-20T15:50:14+00:00 BENCHMARK_CONFIG: Events: 50000 Workers: 24 diff --git a/cmd/benchmark/reports/run_20251120_055257/khatru-badger_results.txt b/cmd/benchmark/reports/run_20251120_160925/khatru-badger_results.txt similarity index 57% rename from cmd/benchmark/reports/run_20251120_055257/khatru-badger_results.txt rename to cmd/benchmark/reports/run_20251120_160925/khatru-badger_results.txt index 9363a45..a3b14c7 100644 --- a/cmd/benchmark/reports/run_20251120_055257/khatru-badger_results.txt +++ b/cmd/benchmark/reports/run_20251120_160925/khatru-badger_results.txt @@ -1,15 +1,15 @@ Starting Nostr Relay Benchmark (Badger Backend) Data Directory: /tmp/benchmark_khatru-badger_8 Events: 50000, Workers: 24, Duration: 1m0s -1763618786076815ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763618786076877ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763618786076947ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763618786076977ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763618786076987ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763618786077003ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763618786077008ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763618786077019ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763618786077024ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 +1763655776959677ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763655776959730ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763655776959750ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763655776959756ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763655776959766ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763655776959781ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763655776959786ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763655776959799ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763655776959805ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 ╔════════════════════════════════════════════════════════╗ ║ BADGER BACKEND BENCHMARK SUITE ║ @@ -19,32 +19,32 @@ Events: 50000, Workers: 24, Duration: 1m0s RunPeakThroughputTest (Badger).. === Peak Throughput Test === -2025/11/20 06:06:26 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths -2025/11/20 06:06:26 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +2025/11/20 16:22:56 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 16:22:56 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 Events saved: 50000/50000 (100.0%), errors: 0 -Duration: 2.763121055s -Events/sec: 18095.48 -Avg latency: 1.143282ms -P90 latency: 1.487084ms -P95 latency: 1.721751ms -P99 latency: 2.433718ms -Bottom 10% Avg latency: 651.813µs +Duration: 3.557122297s +Events/sec: 14056.31 +Avg latency: 1.628852ms +P90 latency: 2.412548ms +P95 latency: 2.884718ms +P99 latency: 4.67527ms +Bottom 10% Avg latency: 792.955µs Wiping database between tests... RunBurstPatternTest (Badger).. === Burst Pattern Test === -Burst completed: 5000 events in 279.242515ms -Burst completed: 5000 events in 302.441404ms -Burst completed: 5000 events in 261.238216ms -Burst completed: 5000 events in 289.601428ms -Burst completed: 5000 events in 278.55583ms -Burst completed: 5000 events in 410.332505ms -Burst completed: 5000 events in 343.055357ms -Burst completed: 5000 events in 264.436385ms -Burst completed: 5000 events in 291.690093ms -Burst completed: 5000 events in 258.542866ms -Burst test completed: 50000 events in 7.986045814s, errors: 0 -Events/sec: 6260.92 +Burst completed: 5000 events in 405.911535ms +Burst completed: 5000 events in 380.53618ms +Burst completed: 5000 events in 280.754351ms +Burst completed: 5000 events in 297.565192ms +Burst completed: 5000 events in 302.520216ms +Burst completed: 5000 events in 350.323686ms +Burst completed: 5000 events in 371.767707ms +Burst completed: 5000 events in 285.38171ms +Burst completed: 5000 events in 274.748193ms +Burst completed: 5000 events in 271.260586ms +Burst test completed: 50000 events in 8.226487654s, errors: 0 +Events/sec: 6077.93 Wiping database between tests... RunMixedReadWriteTest (Badger).. @@ -62,8 +62,8 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Mixed test completed: 25000 writes, 25000 reads in 24.456214964s -Combined ops/sec: 2044.47 +Mixed test completed: 25000 writes, 25000 reads in 24.533132193s +Combined ops/sec: 2038.06 Wiping database between tests... RunQueryTest (Badger).. @@ -75,11 +75,11 @@ Generated 10000 events: All events are properly signed Pre-populating database with 10000 events for query tests... -Query test completed: 417411 queries in 1m0.006481017s -Queries/sec: 6956.10 -Avg query latency: 1.593183ms -P95 query latency: 6.184979ms -P99 query latency: 9.84781ms +Query test completed: 394302 queries in 1m0.00447925s +Queries/sec: 6571.21 +Avg query latency: 1.70837ms +P95 query latency: 6.773469ms +P99 query latency: 10.899944ms Wiping database between tests... RunConcurrentQueryStoreTest (Badger).. @@ -97,13 +97,13 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Concurrent test completed: 325932 operations (275932 queries, 50000 writes) in 1m0.003734546s -Operations/sec: 5431.86 -Avg latency: 1.403237ms -Avg query latency: 1.376383ms -Avg write latency: 1.55144ms -P95 latency: 3.479172ms -P99 latency: 5.834682ms +Concurrent test completed: 317462 operations (267462 queries, 50000 writes) in 1m0.00322203s +Operations/sec: 5290.75 +Avg latency: 1.435958ms +Avg query latency: 1.421544ms +Avg write latency: 1.513062ms +P95 latency: 3.617935ms +P99 latency: 5.869627ms === Badger benchmark completed === @@ -113,73 +113,73 @@ BENCHMARK REPORT ================================================================================ Test: Peak Throughput -Duration: 2.763121055s +Duration: 3.557122297s Total Events: 50000 -Events/sec: 18095.48 +Events/sec: 14056.31 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 90 MB -Avg Latency: 1.143282ms -P90 Latency: 1.487084ms -P95 Latency: 1.721751ms -P99 Latency: 2.433718ms -Bottom 10% Avg Latency: 651.813µs +Memory Used: 156 MB +Avg Latency: 1.628852ms +P90 Latency: 2.412548ms +P95 Latency: 2.884718ms +P99 Latency: 4.67527ms +Bottom 10% Avg Latency: 792.955µs ---------------------------------------- Test: Burst Pattern -Duration: 7.986045814s +Duration: 8.226487654s Total Events: 50000 -Events/sec: 6260.92 +Events/sec: 6077.93 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 160 MB -Avg Latency: 1.203274ms -P90 Latency: 1.822603ms -P95 Latency: 2.200764ms -P99 Latency: 3.362057ms -Bottom 10% Avg Latency: 456.813µs +Memory Used: 205 MB +Avg Latency: 1.310069ms +P90 Latency: 2.055438ms +P95 Latency: 2.49215ms +P99 Latency: 4.005986ms +Bottom 10% Avg Latency: 461.037µs ---------------------------------------- Test: Mixed Read/Write -Duration: 24.456214964s +Duration: 24.533132193s Total Events: 50000 -Events/sec: 2044.47 +Events/sec: 2038.06 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 146 MB -Avg Latency: 371.63µs -P90 Latency: 776.991µs -P95 Latency: 865.67µs -P99 Latency: 1.069839ms -Bottom 10% Avg Latency: 1.010599ms +Memory Used: 199 MB +Avg Latency: 388.704µs +P90 Latency: 808.702µs +P95 Latency: 904.254µs +P99 Latency: 1.136966ms +Bottom 10% Avg Latency: 1.056324ms ---------------------------------------- Test: Query Performance -Duration: 1m0.006481017s -Total Events: 417411 -Events/sec: 6956.10 +Duration: 1m0.00447925s +Total Events: 394302 +Events/sec: 6571.21 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 105 MB -Avg Latency: 1.593183ms -P90 Latency: 4.714556ms -P95 Latency: 6.184979ms -P99 Latency: 9.84781ms -Bottom 10% Avg Latency: 6.905275ms +Memory Used: 115 MB +Avg Latency: 1.70837ms +P90 Latency: 5.078238ms +P95 Latency: 6.773469ms +P99 Latency: 10.899944ms +Bottom 10% Avg Latency: 7.587998ms ---------------------------------------- Test: Concurrent Query/Store -Duration: 1m0.003734546s -Total Events: 325932 -Events/sec: 5431.86 +Duration: 1m0.00322203s +Total Events: 317462 +Events/sec: 5290.75 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 117 MB -Avg Latency: 1.403237ms -P90 Latency: 2.762476ms -P95 Latency: 3.479172ms -P99 Latency: 5.834682ms -Bottom 10% Avg Latency: 4.060934ms +Memory Used: 123 MB +Avg Latency: 1.435958ms +P90 Latency: 2.91748ms +P95 Latency: 3.617935ms +P99 Latency: 5.869627ms +Bottom 10% Avg Latency: 4.184418ms ---------------------------------------- Report saved to: /tmp/benchmark_khatru-badger_8/benchmark_report.txt @@ -187,7 +187,7 @@ 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-11-20T06:09:43+00:00 +TEST_TIMESTAMP: 2025-11-20T16:26:15+00:00 BENCHMARK_CONFIG: Events: 50000 Workers: 24 diff --git a/cmd/benchmark/reports/run_20251120_160925/khatru-sqlite_results.txt b/cmd/benchmark/reports/run_20251120_160925/khatru-sqlite_results.txt new file mode 100644 index 0000000..0d0f1db --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_160925/khatru-sqlite_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_khatru-sqlite_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763655574035860ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763655574035914ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763655574035943ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763655574035949ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763655574035958ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763655574035975ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763655574035982ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763655574035992ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763655574035997ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 16:19:34 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 16:19:34 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.232222717s +Events/sec: 15469.23 +Avg latency: 1.469007ms +P90 latency: 2.035701ms +P95 latency: 2.349899ms +P99 latency: 3.271326ms +Bottom 10% Avg latency: 801.936µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 299.732401ms +Burst completed: 5000 events in 329.942997ms +Burst completed: 5000 events in 277.351209ms +Burst completed: 5000 events in 317.930408ms +Burst completed: 5000 events in 273.472906ms +Burst completed: 5000 events in 337.06975ms +Burst completed: 5000 events in 340.407772ms +Burst completed: 5000 events in 358.760144ms +Burst completed: 5000 events in 309.592493ms +Burst completed: 5000 events in 273.260581ms +Burst test completed: 50000 events in 8.125781511s, errors: 0 +Events/sec: 6153.25 +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.566923076s +Combined ops/sec: 2035.26 +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: 402485 queries in 1m0.004783968s +Queries/sec: 6707.55 +Avg query latency: 1.665358ms +P95 query latency: 6.573038ms +P99 query latency: 10.409271ms +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: 311988 operations (261988 queries, 50000 writes) in 1m0.003852034s +Operations/sec: 5199.47 +Avg latency: 1.508403ms +Avg query latency: 1.478354ms +Avg write latency: 1.665855ms +P95 latency: 3.826874ms +P99 latency: 6.740607ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.232222717s +Total Events: 50000 +Events/sec: 15469.23 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 101 MB +Avg Latency: 1.469007ms +P90 Latency: 2.035701ms +P95 Latency: 2.349899ms +P99 Latency: 3.271326ms +Bottom 10% Avg Latency: 801.936µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.125781511s +Total Events: 50000 +Events/sec: 6153.25 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 253 MB +Avg Latency: 1.339912ms +P90 Latency: 1.931472ms +P95 Latency: 2.248376ms +P99 Latency: 3.415521ms +Bottom 10% Avg Latency: 558.036µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.566923076s +Total Events: 50000 +Events/sec: 2035.26 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 183 MB +Avg Latency: 387.89µs +P90 Latency: 800.235µs +P95 Latency: 893.473µs +P99 Latency: 1.116417ms +Bottom 10% Avg Latency: 1.061513ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.004783968s +Total Events: 402485 +Events/sec: 6707.55 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 122 MB +Avg Latency: 1.665358ms +P90 Latency: 4.967519ms +P95 Latency: 6.573038ms +P99 Latency: 10.409271ms +Bottom 10% Avg Latency: 7.318028ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003852034s +Total Events: 311988 +Events/sec: 5199.47 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 123 MB +Avg Latency: 1.508403ms +P90 Latency: 3.026719ms +P95 Latency: 3.826874ms +P99 Latency: 6.740607ms +Bottom 10% Avg Latency: 4.581461ms +---------------------------------------- + +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-11-20T16:22:51+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_160925/next-orly-badger_results.txt b/cmd/benchmark/reports/run_20251120_160925/next-orly-badger_results.txt new file mode 100644 index 0000000..49aa892 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_160925/next-orly-badger_results.txt @@ -0,0 +1,195 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_next-orly-badger_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763654965967981ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763654965968059ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763654965968086ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763654965968093ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763654965968104ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763654965968128ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763654965968134ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763654965968148ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763654965968155ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 16:09:25 INFO: Extracted embedded libsecp256k1 to /tmp/orly-libsecp256k1/libsecp256k1.so +2025/11/20 16:09:25 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 16:09:25 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 2.86284713s +Events/sec: 17465.13 +Avg latency: 1.240021ms +P90 latency: 1.632975ms +P95 latency: 1.88702ms +P99 latency: 2.588648ms +Bottom 10% Avg latency: 720.664µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 283.916078ms +Burst completed: 5000 events in 308.835391ms +Burst completed: 5000 events in 271.738649ms +Burst completed: 5000 events in 294.190093ms +Burst completed: 5000 events in 270.874739ms +Burst completed: 5000 events in 353.277008ms +Burst completed: 5000 events in 291.31675ms +Burst completed: 5000 events in 260.143176ms +Burst completed: 5000 events in 278.682529ms +Burst completed: 5000 events in 270.618556ms +Burst test completed: 50000 events in 7.890214694s, errors: 0 +Events/sec: 6336.96 +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.398091289s +Combined ops/sec: 2049.34 +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: 375020 queries in 1m0.004407142s +Queries/sec: 6249.87 +Avg query latency: 1.807546ms +P95 query latency: 7.404502ms +P99 query latency: 12.127148ms +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: 310651 operations (260651 queries, 50000 writes) in 1m0.003771057s +Operations/sec: 5177.19 +Avg latency: 1.509233ms +Avg query latency: 1.487291ms +Avg write latency: 1.623615ms +P95 latency: 3.906611ms +P99 latency: 6.304613ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 2.86284713s +Total Events: 50000 +Events/sec: 17465.13 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 164 MB +Avg Latency: 1.240021ms +P90 Latency: 1.632975ms +P95 Latency: 1.88702ms +P99 Latency: 2.588648ms +Bottom 10% Avg Latency: 720.664µs +---------------------------------------- + +Test: Burst Pattern +Duration: 7.890214694s +Total Events: 50000 +Events/sec: 6336.96 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 170 MB +Avg Latency: 1.17176ms +P90 Latency: 1.637524ms +P95 Latency: 1.909102ms +P99 Latency: 2.743443ms +Bottom 10% Avg Latency: 504.67µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.398091289s +Total Events: 50000 +Events/sec: 2049.34 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 114 MB +Avg Latency: 363.633µs +P90 Latency: 765.71µs +P95 Latency: 855.742µs +P99 Latency: 1.047598ms +Bottom 10% Avg Latency: 974.416µs +---------------------------------------- + +Test: Query Performance +Duration: 1m0.004407142s +Total Events: 375020 +Events/sec: 6249.87 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 133 MB +Avg Latency: 1.807546ms +P90 Latency: 5.438031ms +P95 Latency: 7.404502ms +P99 Latency: 12.127148ms +Bottom 10% Avg Latency: 8.375567ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003771057s +Total Events: 310651 +Events/sec: 5177.19 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 127 MB +Avg Latency: 1.509233ms +P90 Latency: 3.084923ms +P95 Latency: 3.906611ms +P99 Latency: 6.304613ms +Bottom 10% Avg Latency: 4.476784ms +---------------------------------------- + +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-11-20T16:12:43+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_055257/next-orly-dgraph_results.txt b/cmd/benchmark/reports/run_20251120_160925/next-orly-dgraph_results.txt similarity index 57% rename from cmd/benchmark/reports/run_20251120_055257/next-orly-dgraph_results.txt rename to cmd/benchmark/reports/run_20251120_160925/next-orly-dgraph_results.txt index 2443ef4..c735cb9 100644 --- a/cmd/benchmark/reports/run_20251120_055257/next-orly-dgraph_results.txt +++ b/cmd/benchmark/reports/run_20251120_160925/next-orly-dgraph_results.txt @@ -1,15 +1,15 @@ Starting Nostr Relay Benchmark (Badger Backend) Data Directory: /tmp/benchmark_next-orly-dgraph_8 Events: 50000, Workers: 24, Duration: 1m0s -1763618179225019ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763618179225097ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763618179225124ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763618179225130ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763618179225139ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763618179225153ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763618179225160ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763618179225172ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763618179225178ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 +1763655168222493ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763655168222619ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763655168222661ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763655168222668ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763655168222679ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763655168222696ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763655168222702ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763655168222720ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763655168222727ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 ╔════════════════════════════════════════════════════════╗ ║ BADGER BACKEND BENCHMARK SUITE ║ @@ -19,32 +19,32 @@ Events: 50000, Workers: 24, Duration: 1m0s RunPeakThroughputTest (Badger).. === Peak Throughput Test === -2025/11/20 05:56:19 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths -2025/11/20 05:56:19 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +2025/11/20 16:12:48 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 16:12:48 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 Events saved: 50000/50000 (100.0%), errors: 0 -Duration: 3.129809148s -Events/sec: 15975.41 -Avg latency: 1.379901ms -P90 latency: 1.992677ms -P95 latency: 2.307115ms -P99 latency: 3.315241ms -Bottom 10% Avg latency: 705.38µs +Duration: 3.077632558s +Events/sec: 16246.25 +Avg latency: 1.364467ms +P90 latency: 1.883291ms +P95 latency: 2.256624ms +P99 latency: 3.300984ms +Bottom 10% Avg latency: 745.8µs Wiping database between tests... RunBurstPatternTest (Badger).. === Burst Pattern Test === -Burst completed: 5000 events in 269.998489ms -Burst completed: 5000 events in 379.862976ms -Burst completed: 5000 events in 315.530605ms -Burst completed: 5000 events in 286.315924ms -Burst completed: 5000 events in 265.701ms -Burst completed: 5000 events in 320.067398ms -Burst completed: 5000 events in 310.332948ms -Burst completed: 5000 events in 260.739129ms -Burst completed: 5000 events in 278.464314ms -Burst completed: 5000 events in 275.687097ms -Burst test completed: 50000 events in 7.967614114s, errors: 0 -Events/sec: 6275.40 +Burst completed: 5000 events in 289.470058ms +Burst completed: 5000 events in 331.754037ms +Burst completed: 5000 events in 300.084597ms +Burst completed: 5000 events in 307.645494ms +Burst completed: 5000 events in 438.270616ms +Burst completed: 5000 events in 438.889425ms +Burst completed: 5000 events in 312.922304ms +Burst completed: 5000 events in 276.60434ms +Burst completed: 5000 events in 415.149503ms +Burst completed: 5000 events in 287.798655ms +Burst test completed: 50000 events in 8.404871327s, errors: 0 +Events/sec: 5948.93 Wiping database between tests... RunMixedReadWriteTest (Badger).. @@ -62,8 +62,8 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Mixed test completed: 25000 writes, 25000 reads in 24.415571109s -Combined ops/sec: 2047.87 +Mixed test completed: 25000 writes, 25000 reads in 24.600967028s +Combined ops/sec: 2032.44 Wiping database between tests... RunQueryTest (Badger).. @@ -75,11 +75,11 @@ Generated 10000 events: All events are properly signed Pre-populating database with 10000 events for query tests... -Query test completed: 413479 queries in 1m0.00605908s -Queries/sec: 6890.62 -Avg query latency: 1.614876ms -P95 query latency: 6.238786ms -P99 query latency: 10.005161ms +Query test completed: 356380 queries in 1m0.003804202s +Queries/sec: 5939.29 +Avg query latency: 1.921866ms +P95 query latency: 7.932755ms +P99 query latency: 13.087413ms Wiping database between tests... RunConcurrentQueryStoreTest (Badger).. @@ -97,13 +97,13 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Concurrent test completed: 323428 operations (273428 queries, 50000 writes) in 1m0.003637465s -Operations/sec: 5390.14 -Avg latency: 1.392162ms -Avg query latency: 1.390979ms -Avg write latency: 1.398631ms -P95 latency: 3.456536ms -P99 latency: 5.341594ms +Concurrent test completed: 313316 operations (263316 queries, 50000 writes) in 1m0.002399217s +Operations/sec: 5221.72 +Avg latency: 1.496966ms +Avg query latency: 1.470501ms +Avg write latency: 1.636338ms +P95 latency: 3.78214ms +P99 latency: 6.576619ms === Badger benchmark completed === @@ -113,73 +113,73 @@ BENCHMARK REPORT ================================================================================ Test: Peak Throughput -Duration: 3.129809148s +Duration: 3.077632558s Total Events: 50000 -Events/sec: 15975.41 +Events/sec: 16246.25 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 136 MB -Avg Latency: 1.379901ms -P90 Latency: 1.992677ms -P95 Latency: 2.307115ms -P99 Latency: 3.315241ms -Bottom 10% Avg Latency: 705.38µs +Memory Used: 101 MB +Avg Latency: 1.364467ms +P90 Latency: 1.883291ms +P95 Latency: 2.256624ms +P99 Latency: 3.300984ms +Bottom 10% Avg Latency: 745.8µs ---------------------------------------- Test: Burst Pattern -Duration: 7.967614114s +Duration: 8.404871327s Total Events: 50000 -Events/sec: 6275.40 +Events/sec: 5948.93 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 164 MB -Avg Latency: 1.177806ms -P90 Latency: 1.743774ms -P95 Latency: 2.062351ms -P99 Latency: 3.08792ms -Bottom 10% Avg Latency: 445.91µs +Memory Used: 178 MB +Avg Latency: 1.479051ms +P90 Latency: 2.357616ms +P95 Latency: 2.873991ms +P99 Latency: 4.41552ms +Bottom 10% Avg Latency: 536.061µs ---------------------------------------- Test: Mixed Read/Write -Duration: 24.415571109s +Duration: 24.600967028s Total Events: 50000 -Events/sec: 2047.87 +Events/sec: 2032.44 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 142 MB -Avg Latency: 370.82µs -P90 Latency: 773.25µs -P95 Latency: 858.252µs -P99 Latency: 1.064304ms -Bottom 10% Avg Latency: 1.01339ms +Memory Used: 183 MB +Avg Latency: 400.294µs +P90 Latency: 824.673µs +P95 Latency: 918.06µs +P99 Latency: 1.128421ms +Bottom 10% Avg Latency: 1.06369ms ---------------------------------------- Test: Query Performance -Duration: 1m0.00605908s -Total Events: 413479 -Events/sec: 6890.62 +Duration: 1m0.003804202s +Total Events: 356380 +Events/sec: 5939.29 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 117 MB -Avg Latency: 1.614876ms -P90 Latency: 4.764101ms -P95 Latency: 6.238786ms -P99 Latency: 10.005161ms -Bottom 10% Avg Latency: 7.015286ms +Memory Used: 124 MB +Avg Latency: 1.921866ms +P90 Latency: 5.832521ms +P95 Latency: 7.932755ms +P99 Latency: 13.087413ms +Bottom 10% Avg Latency: 9.018017ms ---------------------------------------- Test: Concurrent Query/Store -Duration: 1m0.003637465s -Total Events: 323428 -Events/sec: 5390.14 +Duration: 1m0.002399217s +Total Events: 313316 +Events/sec: 5221.72 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 149 MB -Avg Latency: 1.392162ms -P90 Latency: 2.802772ms -P95 Latency: 3.456536ms -P99 Latency: 5.341594ms -Bottom 10% Avg Latency: 3.885211ms +Memory Used: 143 MB +Avg Latency: 1.496966ms +P90 Latency: 3.008265ms +P95 Latency: 3.78214ms +P99 Latency: 6.576619ms +Bottom 10% Avg Latency: 4.546974ms ---------------------------------------- Report saved to: /tmp/benchmark_next-orly-dgraph_8/benchmark_report.txt @@ -187,7 +187,7 @@ AsciiDoc report saved to: /tmp/benchmark_next-orly-dgraph_8/benchmark_report.ado RELAY_NAME: next-orly-dgraph RELAY_URL: ws://next-orly-dgraph:8080 -TEST_TIMESTAMP: 2025-11-20T05:59:36+00:00 +TEST_TIMESTAMP: 2025-11-20T16:16:06+00:00 BENCHMARK_CONFIG: Events: 50000 Workers: 24 diff --git a/cmd/benchmark/reports/run_20251120_160925/next-orly-neo4j_results.txt b/cmd/benchmark/reports/run_20251120_160925/next-orly-neo4j_results.txt new file mode 100644 index 0000000..1beaf66 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_160925/next-orly-neo4j_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_next-orly-neo4j_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763655371282183ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763655371282260ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763655371282294ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763655371282304ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763655371282313ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763655371282328ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763655371282332ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763655371282347ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763655371282352ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 16:16:11 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 16:16:11 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.322036094s +Events/sec: 15051.01 +Avg latency: 1.501127ms +P90 latency: 2.132576ms +P95 latency: 2.573527ms +P99 latency: 4.7262ms +Bottom 10% Avg latency: 773.812µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 297.948317ms +Burst completed: 5000 events in 318.841207ms +Burst completed: 5000 events in 280.549165ms +Burst completed: 5000 events in 306.213632ms +Burst completed: 5000 events in 296.343565ms +Burst completed: 5000 events in 344.885086ms +Burst completed: 5000 events in 302.324928ms +Burst completed: 5000 events in 275.70635ms +Burst completed: 5000 events in 291.656138ms +Burst completed: 5000 events in 279.144014ms +Burst test completed: 50000 events in 8.000273258s, errors: 0 +Events/sec: 6249.79 +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.493058795s +Combined ops/sec: 2041.39 +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: 379691 queries in 1m0.00424271s +Queries/sec: 6327.74 +Avg query latency: 1.786907ms +P95 query latency: 7.280158ms +P99 query latency: 11.561961ms +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: 307993 operations (257993 queries, 50000 writes) in 1m0.003271216s +Operations/sec: 5132.94 +Avg latency: 1.52949ms +Avg query latency: 1.502605ms +Avg write latency: 1.668216ms +P95 latency: 3.920904ms +P99 latency: 6.58322ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.322036094s +Total Events: 50000 +Events/sec: 15051.01 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 169 MB +Avg Latency: 1.501127ms +P90 Latency: 2.132576ms +P95 Latency: 2.573527ms +P99 Latency: 4.7262ms +Bottom 10% Avg Latency: 773.812µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.000273258s +Total Events: 50000 +Events/sec: 6249.79 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 175 MB +Avg Latency: 1.219984ms +P90 Latency: 1.785173ms +P95 Latency: 2.089965ms +P99 Latency: 2.950085ms +Bottom 10% Avg Latency: 487.01µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.493058795s +Total Events: 50000 +Events/sec: 2041.39 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 216 MB +Avg Latency: 380.334µs +P90 Latency: 796.668µs +P95 Latency: 892.09µs +P99 Latency: 1.120225ms +Bottom 10% Avg Latency: 1.010816ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.00424271s +Total Events: 379691 +Events/sec: 6327.74 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 112 MB +Avg Latency: 1.786907ms +P90 Latency: 5.418278ms +P95 Latency: 7.280158ms +P99 Latency: 11.561961ms +Bottom 10% Avg Latency: 8.118513ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003271216s +Total Events: 307993 +Events/sec: 5132.94 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 92 MB +Avg Latency: 1.52949ms +P90 Latency: 3.119146ms +P95 Latency: 3.920904ms +P99 Latency: 6.58322ms +Bottom 10% Avg Latency: 4.575079ms +---------------------------------------- + +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-11-20T16:19:28+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_160925/nostr-rs-relay_results.txt b/cmd/benchmark/reports/run_20251120_160925/nostr-rs-relay_results.txt new file mode 100644 index 0000000..91045eb --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_160925/nostr-rs-relay_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_nostr-rs-relay_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763656386931745ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763656386931817ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763656386931845ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763656386931852ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763656386931865ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763656386931881ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763656386931888ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763656386931904ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763656386931912ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 16:33:06 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 16:33:06 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.042476532s +Events/sec: 16433.98 +Avg latency: 1.35254ms +P90 latency: 1.869292ms +P95 latency: 2.195555ms +P99 latency: 3.118533ms +Bottom 10% Avg latency: 756.615µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 279.583533ms +Burst completed: 5000 events in 302.418629ms +Burst completed: 5000 events in 282.144904ms +Burst completed: 5000 events in 312.16919ms +Burst completed: 5000 events in 282.829388ms +Burst completed: 5000 events in 377.502102ms +Burst completed: 5000 events in 331.038047ms +Burst completed: 5000 events in 272.690016ms +Burst completed: 5000 events in 289.250685ms +Burst completed: 5000 events in 304.392921ms +Burst test completed: 50000 events in 8.03944091s, errors: 0 +Events/sec: 6219.34 +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.582126193s +Combined ops/sec: 2034.00 +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: 374420 queries in 1m0.004508333s +Queries/sec: 6239.86 +Avg query latency: 1.807473ms +P95 query latency: 7.370553ms +P99 query latency: 11.712034ms +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: 305067 operations (255067 queries, 50000 writes) in 1m0.003563304s +Operations/sec: 5084.15 +Avg latency: 1.548146ms +Avg query latency: 1.529466ms +Avg write latency: 1.643441ms +P95 latency: 4.045539ms +P99 latency: 6.60567ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.042476532s +Total Events: 50000 +Events/sec: 16433.98 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 160 MB +Avg Latency: 1.35254ms +P90 Latency: 1.869292ms +P95 Latency: 2.195555ms +P99 Latency: 3.118533ms +Bottom 10% Avg Latency: 756.615µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.03944091s +Total Events: 50000 +Events/sec: 6219.34 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 209 MB +Avg Latency: 1.18202ms +P90 Latency: 1.750716ms +P95 Latency: 2.092537ms +P99 Latency: 3.047477ms +Bottom 10% Avg Latency: 434.92µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.582126193s +Total Events: 50000 +Events/sec: 2034.00 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 174 MB +Avg Latency: 392.213µs +P90 Latency: 813.45µs +P95 Latency: 906.498µs +P99 Latency: 1.156113ms +Bottom 10% Avg Latency: 1.043137ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.004508333s +Total Events: 374420 +Events/sec: 6239.86 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 156 MB +Avg Latency: 1.807473ms +P90 Latency: 5.506507ms +P95 Latency: 7.370553ms +P99 Latency: 11.712034ms +Bottom 10% Avg Latency: 8.221454ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003563304s +Total Events: 305067 +Events/sec: 5084.15 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 166 MB +Avg Latency: 1.548146ms +P90 Latency: 3.172868ms +P95 Latency: 4.045539ms +P99 Latency: 6.60567ms +Bottom 10% Avg Latency: 4.666667ms +---------------------------------------- + +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-11-20T16:36:24+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_160925/relayer-basic_results.txt b/cmd/benchmark/reports/run_20251120_160925/relayer-basic_results.txt new file mode 100644 index 0000000..3154c84 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_160925/relayer-basic_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_relayer-basic_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763655980207009ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763655980207065ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763655980207089ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763655980207095ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763655980207103ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763655980207116ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763655980207120ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763655980207133ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763655980207139ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 16:26:20 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 16:26:20 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.140113498s +Events/sec: 15922.99 +Avg latency: 1.417584ms +P90 latency: 1.918927ms +P95 latency: 2.251932ms +P99 latency: 3.24845ms +Bottom 10% Avg latency: 781.19µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 295.016917ms +Burst completed: 5000 events in 302.477205ms +Burst completed: 5000 events in 296.524079ms +Burst completed: 5000 events in 316.859334ms +Burst completed: 5000 events in 283.043959ms +Burst completed: 5000 events in 599.696348ms +Burst completed: 5000 events in 348.408531ms +Burst completed: 5000 events in 328.489308ms +Burst completed: 5000 events in 346.767823ms +Burst completed: 5000 events in 266.423432ms +Burst test completed: 50000 events in 8.390681222s, errors: 0 +Events/sec: 5958.99 +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.729378008s +Combined ops/sec: 2021.89 +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: 377608 queries in 1m0.004159666s +Queries/sec: 6293.03 +Avg query latency: 1.78194ms +P95 query latency: 7.313999ms +P99 query latency: 11.571994ms +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: 300761 operations (250761 queries, 50000 writes) in 1m0.003300562s +Operations/sec: 5012.41 +Avg latency: 1.581357ms +Avg query latency: 1.557006ms +Avg write latency: 1.703485ms +P95 latency: 4.198041ms +P99 latency: 7.134837ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.140113498s +Total Events: 50000 +Events/sec: 15922.99 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 159 MB +Avg Latency: 1.417584ms +P90 Latency: 1.918927ms +P95 Latency: 2.251932ms +P99 Latency: 3.24845ms +Bottom 10% Avg Latency: 781.19µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.390681222s +Total Events: 50000 +Events/sec: 5958.99 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 210 MB +Avg Latency: 1.446634ms +P90 Latency: 2.254246ms +P95 Latency: 2.884237ms +P99 Latency: 5.436852ms +Bottom 10% Avg Latency: 520.884µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.729378008s +Total Events: 50000 +Events/sec: 2021.89 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 204 MB +Avg Latency: 382.367µs +P90 Latency: 799.193µs +P95 Latency: 904.063µs +P99 Latency: 1.193034ms +Bottom 10% Avg Latency: 1.047507ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.004159666s +Total Events: 377608 +Events/sec: 6293.03 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 117 MB +Avg Latency: 1.78194ms +P90 Latency: 5.391074ms +P95 Latency: 7.313999ms +P99 Latency: 11.571994ms +Bottom 10% Avg Latency: 8.16248ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003300562s +Total Events: 300761 +Events/sec: 5012.41 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 133 MB +Avg Latency: 1.581357ms +P90 Latency: 3.256466ms +P95 Latency: 4.198041ms +P99 Latency: 7.134837ms +Bottom 10% Avg Latency: 4.912876ms +---------------------------------------- + +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-11-20T16:29:38+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_160925/rely-sqlite_results.txt b/cmd/benchmark/reports/run_20251120_160925/rely-sqlite_results.txt new file mode 100644 index 0000000..cfc6d7d --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_160925/rely-sqlite_results.txt @@ -0,0 +1,3 @@ +RELAY: rely-sqlite +STATUS: FAILED - Relay not responding +ERROR: Connection failed diff --git a/cmd/benchmark/reports/run_20251120_160925/strfry_results.txt b/cmd/benchmark/reports/run_20251120_160925/strfry_results.txt new file mode 100644 index 0000000..c209664 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_160925/strfry_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_strfry_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763656183528413ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763656183528497ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763656183528519ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763656183528525ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763656183528536ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763656183528550ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763656183528556ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763656183528578ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763656183528584ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 16:29:43 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 16:29:43 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.202996786s +Events/sec: 15610.38 +Avg latency: 1.448999ms +P90 latency: 2.008548ms +P95 latency: 2.330532ms +P99 latency: 3.434816ms +Bottom 10% Avg latency: 777.487µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 343.057172ms +Burst completed: 5000 events in 368.804651ms +Burst completed: 5000 events in 421.980578ms +Burst completed: 5000 events in 432.299904ms +Burst completed: 5000 events in 386.556991ms +Burst completed: 5000 events in 405.196753ms +Burst completed: 5000 events in 321.87791ms +Burst completed: 5000 events in 271.42499ms +Burst completed: 5000 events in 289.817431ms +Burst completed: 5000 events in 273.783645ms +Burst test completed: 50000 events in 8.519189117s, errors: 0 +Events/sec: 5869.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.676790113s +Combined ops/sec: 2026.20 +Wiping database between tests... +RunQueryTest (Badger).. + +=== Query Test === +Generating 10000 unique synthetic events (minimum 300 bytes each)... +Generated 10000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 10000 events for query tests... +Query test completed: 385413 queries in 1m0.004991772s +Queries/sec: 6423.02 +Avg query latency: 1.750064ms +P95 query latency: 7.022112ms +P99 query latency: 11.130131ms +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: 304406 operations (254406 queries, 50000 writes) in 1m0.002847365s +Operations/sec: 5073.19 +Avg latency: 1.53117ms +Avg query latency: 1.533671ms +Avg write latency: 1.518448ms +P95 latency: 4.027706ms +P99 latency: 6.601701ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.202996786s +Total Events: 50000 +Events/sec: 15610.38 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 101 MB +Avg Latency: 1.448999ms +P90 Latency: 2.008548ms +P95 Latency: 2.330532ms +P99 Latency: 3.434816ms +Bottom 10% Avg Latency: 777.487µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.519189117s +Total Events: 50000 +Events/sec: 5869.10 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 210 MB +Avg Latency: 1.564388ms +P90 Latency: 2.434829ms +P95 Latency: 2.893144ms +P99 Latency: 4.236454ms +Bottom 10% Avg Latency: 598.315µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.676790113s +Total Events: 50000 +Events/sec: 2026.20 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 123 MB +Avg Latency: 398.546µs +P90 Latency: 824.051µs +P95 Latency: 923.8µs +P99 Latency: 1.195979ms +Bottom 10% Avg Latency: 1.080906ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.004991772s +Total Events: 385413 +Events/sec: 6423.02 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 133 MB +Avg Latency: 1.750064ms +P90 Latency: 5.273981ms +P95 Latency: 7.022112ms +P99 Latency: 11.130131ms +Bottom 10% Avg Latency: 7.835129ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.002847365s +Total Events: 304406 +Events/sec: 5073.19 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 112 MB +Avg Latency: 1.53117ms +P90 Latency: 3.181282ms +P95 Latency: 4.027706ms +P99 Latency: 6.601701ms +Bottom 10% Avg Latency: 4.654966ms +---------------------------------------- + +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-11-20T16:33:01+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_173708/rely-sqlite_results.txt b/cmd/benchmark/reports/run_20251120_173708/rely-sqlite_results.txt new file mode 100644 index 0000000..cfc6d7d --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_173708/rely-sqlite_results.txt @@ -0,0 +1,3 @@ +RELAY: rely-sqlite +STATUS: FAILED - Relay not responding +ERROR: Connection failed diff --git a/cmd/benchmark/reports/run_20251120_190939/next-orly-badger_results.txt b/cmd/benchmark/reports/run_20251120_190939/next-orly-badger_results.txt new file mode 100644 index 0000000..2d36b86 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_190939/next-orly-badger_results.txt @@ -0,0 +1,77 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_next-orly-badger_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763665982729511ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763665982729576ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763665982729601ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763665982729608ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763665982729620ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763665982729639ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763665982729646ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763665982729664ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763665982729670ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 19:13:02 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 19:13:02 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.002317183s +Events/sec: 16653.80 +Avg latency: 1.333202ms +P90 latency: 1.77034ms +P95 latency: 2.040484ms +P99 latency: 2.890994ms +Bottom 10% Avg latency: 755.546µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 288.855321ms +Burst completed: 5000 events in 312.543723ms +Burst completed: 5000 events in 287.863452ms +Burst completed: 5000 events in 340.503526ms +Burst completed: 5000 events in 311.944621ms +Burst completed: 5000 events in 338.563592ms +Burst completed: 5000 events in 306.545393ms +Burst completed: 5000 events in 280.038154ms +Burst completed: 5000 events in 311.22972ms +Burst completed: 5000 events in 292.735765ms +Burst test completed: 50000 events in 8.076105474s, errors: 0 +Events/sec: 6191.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.581344169s +Combined ops/sec: 2034.06 +Wiping database between tests... +RunQueryTest (Badger).. + +=== Query Test === +Generating 10000 unique synthetic events (minimum 300 bytes each)... +Generated 10000 events: + Average content size: 313 bytes + All events are unique (incremental timestamps) + All events are properly signed + +Pre-populating database with 10000 events for query tests... diff --git a/cmd/benchmark/reports/run_20251120_190939/rely-sqlite_results.txt b/cmd/benchmark/reports/run_20251120_190939/rely-sqlite_results.txt new file mode 100644 index 0000000..d830e19 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_190939/rely-sqlite_results.txt @@ -0,0 +1,195 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_rely-sqlite_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763665779574803ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763665779574872ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763665779574900ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763665779574905ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763665779574913ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763665779574927ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763665779574932ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763665779574942ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763665779574947ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 19:09:39 INFO: Extracted embedded libsecp256k1 to /tmp/orly-libsecp256k1/libsecp256k1.so +2025/11/20 19:09:39 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 19:09:39 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.135436732s +Events/sec: 15946.74 +Avg latency: 1.397968ms +P90 latency: 1.930996ms +P95 latency: 2.304287ms +P99 latency: 3.616715ms +Bottom 10% Avg latency: 755.721µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 303.872847ms +Burst completed: 5000 events in 315.659456ms +Burst completed: 5000 events in 267.06077ms +Burst completed: 5000 events in 307.361928ms +Burst completed: 5000 events in 322.693287ms +Burst completed: 5000 events in 469.035773ms +Burst completed: 5000 events in 312.67366ms +Burst completed: 5000 events in 283.102039ms +Burst completed: 5000 events in 384.589076ms +Burst completed: 5000 events in 420.423539ms +Burst test completed: 50000 events in 8.393863388s, errors: 0 +Events/sec: 5956.73 +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.674556399s +Combined ops/sec: 2026.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: 375290 queries in 1m0.008468905s +Queries/sec: 6253.95 +Avg query latency: 1.790209ms +P95 query latency: 7.345664ms +P99 query latency: 11.918719ms +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: 314061 operations (264061 queries, 50000 writes) in 1m0.003708095s +Operations/sec: 5234.03 +Avg latency: 1.477392ms +Avg query latency: 1.464385ms +Avg write latency: 1.546088ms +P95 latency: 3.780257ms +P99 latency: 5.913557ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.135436732s +Total Events: 50000 +Events/sec: 15946.74 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 96 MB +Avg Latency: 1.397968ms +P90 Latency: 1.930996ms +P95 Latency: 2.304287ms +P99 Latency: 3.616715ms +Bottom 10% Avg Latency: 755.721µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.393863388s +Total Events: 50000 +Events/sec: 5956.73 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 196 MB +Avg Latency: 1.477472ms +P90 Latency: 2.319807ms +P95 Latency: 2.825169ms +P99 Latency: 4.502502ms +Bottom 10% Avg Latency: 595.131µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.674556399s +Total Events: 50000 +Events/sec: 2026.38 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 142 MB +Avg Latency: 387.12µs +P90 Latency: 808.479µs +P95 Latency: 902.999µs +P99 Latency: 1.121415ms +Bottom 10% Avg Latency: 1.032694ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.008468905s +Total Events: 375290 +Events/sec: 6253.95 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 114 MB +Avg Latency: 1.790209ms +P90 Latency: 5.42081ms +P95 Latency: 7.345664ms +P99 Latency: 11.918719ms +Bottom 10% Avg Latency: 8.275871ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003708095s +Total Events: 314061 +Events/sec: 5234.03 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 137 MB +Avg Latency: 1.477392ms +P90 Latency: 2.984261ms +P95 Latency: 3.780257ms +P99 Latency: 5.913557ms +Bottom 10% Avg Latency: 4.281848ms +---------------------------------------- + +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-11-20T19:12:57+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_200202/aggregate_report.txt b/cmd/benchmark/reports/run_20251120_200202/aggregate_report.txt new file mode 100644 index 0000000..27febb6 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_200202/aggregate_report.txt @@ -0,0 +1,194 @@ +================================================================ +NOSTR RELAY BENCHMARK AGGREGATE REPORT +================================================================ +Generated: 2025-11-20T20:32:25+00:00 +Benchmark Configuration: + Events per test: 50000 + Concurrent workers: 24 + Test duration: 60s + +Relays tested: 9 + +================================================================ +SUMMARY BY RELAY +================================================================ + +Relay: rely-sqlite +---------------------------------------- +Status: COMPLETED +Events/sec: 17507.10 +Events/sec: 6243.12 +Events/sec: 17507.10 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.223582ms +Bottom 10% Avg Latency: 698.877µs +Avg Latency: 1.178662ms +P95 Latency: 1.87223ms +P95 Latency: 2.046981ms +P95 Latency: 883.507µs + +Relay: next-orly-badger +---------------------------------------- +Status: COMPLETED +Events/sec: 16840.34 +Events/sec: 6128.23 +Events/sec: 16840.34 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.297596ms +Bottom 10% Avg Latency: 722.094µs +Avg Latency: 1.265918ms +P95 Latency: 2.027536ms +P95 Latency: 2.302166ms +P95 Latency: 894.834µs + +Relay: next-orly-dgraph +---------------------------------------- +Status: COMPLETED +Events/sec: 16563.45 +Events/sec: 6132.86 +Events/sec: 16563.45 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.32589ms +Bottom 10% Avg Latency: 726.176µs +Avg Latency: 1.340819ms +P95 Latency: 2.152481ms +P95 Latency: 2.37338ms +P95 Latency: 904.165µs + +Relay: next-orly-neo4j +---------------------------------------- +Status: COMPLETED +Events/sec: 14622.22 +Events/sec: 6182.48 +Events/sec: 14622.22 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.559545ms +Bottom 10% Avg Latency: 795.698µs +Avg Latency: 1.269605ms +P95 Latency: 2.658118ms +P95 Latency: 2.293256ms +P95 Latency: 867.888µs + +Relay: khatru-sqlite +---------------------------------------- +Status: COMPLETED +Events/sec: 16872.81 +Events/sec: 6219.91 +Events/sec: 16872.81 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.294206ms +Bottom 10% Avg Latency: 724.237µs +Avg Latency: 1.28288ms +P95 Latency: 2.011193ms +P95 Latency: 2.16732ms +P95 Latency: 868.521µs + +Relay: khatru-badger +---------------------------------------- +Status: COMPLETED +Events/sec: 15204.92 +Events/sec: 6277.98 +Events/sec: 15204.92 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.485679ms +Bottom 10% Avg Latency: 768.979µs +Avg Latency: 1.216531ms +P95 Latency: 2.501619ms +P95 Latency: 2.028348ms +P95 Latency: 862.271µs + +Relay: relayer-basic +---------------------------------------- +Status: COMPLETED +Events/sec: 17272.97 +Events/sec: 6207.90 +Events/sec: 17272.97 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.255956ms +Bottom 10% Avg Latency: 712.498µs +Avg Latency: 1.21703ms +P95 Latency: 1.909735ms +P95 Latency: 2.233521ms +P95 Latency: 871.278µs + +Relay: strfry +---------------------------------------- +Status: COMPLETED +Events/sec: 15745.79 +Events/sec: 6264.53 +Events/sec: 15745.79 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.415908ms +Bottom 10% Avg Latency: 739.523µs +Avg Latency: 1.153768ms +P95 Latency: 2.340716ms +P95 Latency: 2.007502ms +P95 Latency: 855.87µs + +Relay: nostr-rs-relay +---------------------------------------- +Status: COMPLETED +Events/sec: 17638.66 +Events/sec: 6241.74 +Events/sec: 17638.66 +Success Rate: 100.0% +Success Rate: 100.0% +Success Rate: 100.0% +Avg Latency: 1.18563ms +Bottom 10% Avg Latency: 646.954µs +Avg Latency: 1.182584ms +P95 Latency: 1.847889ms +P95 Latency: 2.120267ms +P95 Latency: 866.51µs + + +================================================================ +DETAILED RESULTS +================================================================ + +Individual relay reports are available in: + - /reports/run_20251120_200202/khatru-badger_results.txt + - /reports/run_20251120_200202/khatru-sqlite_results.txt + - /reports/run_20251120_200202/next-orly-badger_results.txt + - /reports/run_20251120_200202/next-orly-dgraph_results.txt + - /reports/run_20251120_200202/next-orly-neo4j_results.txt + - /reports/run_20251120_200202/nostr-rs-relay_results.txt + - /reports/run_20251120_200202/relayer-basic_results.txt + - /reports/run_20251120_200202/rely-sqlite_results.txt + - /reports/run_20251120_200202/strfry_results.txt + +================================================================ +BENCHMARK COMPARISON TABLE +================================================================ + +Relay Status Peak Tput/s Avg Latency Success Rate +---- ------ ----------- ----------- ------------ +rely-sqlite OK 17507.10 1.223582ms 100.0% +next-orly-badger OK 16840.34 1.297596ms 100.0% +next-orly-dgraph OK 16563.45 1.32589ms 100.0% +next-orly-neo4j OK 14622.22 1.559545ms 100.0% +khatru-sqlite OK 16872.81 1.294206ms 100.0% +khatru-badger OK 15204.92 1.485679ms 100.0% +relayer-basic OK 17272.97 1.255956ms 100.0% +strfry OK 15745.79 1.415908ms 100.0% +nostr-rs-relay OK 17638.66 1.18563ms 100.0% + +================================================================ +End of Report +================================================================ diff --git a/cmd/benchmark/reports/run_20251120_200202/khatru-badger_results.txt b/cmd/benchmark/reports/run_20251120_200202/khatru-badger_results.txt new file mode 100644 index 0000000..cfdd854 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_200202/khatru-badger_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_khatru-badger_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763669935332908ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763669935332973ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763669935332998ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763669935333005ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763669935333040ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763669935333094ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763669935333104ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763669935333122ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763669935333128ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 20:18:55 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 20:18:55 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.288409868s +Events/sec: 15204.92 +Avg latency: 1.485679ms +P90 latency: 2.12405ms +P95 latency: 2.501619ms +P99 latency: 3.714496ms +Bottom 10% Avg latency: 768.979µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 324.753031ms +Burst completed: 5000 events in 291.367672ms +Burst completed: 5000 events in 301.649121ms +Burst completed: 5000 events in 328.41364ms +Burst completed: 5000 events in 281.252591ms +Burst completed: 5000 events in 328.008049ms +Burst completed: 5000 events in 310.281138ms +Burst completed: 5000 events in 260.825936ms +Burst completed: 5000 events in 270.80417ms +Burst completed: 5000 events in 258.334978ms +Burst test completed: 50000 events in 7.964347994s, errors: 0 +Events/sec: 6277.98 +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.423948265s +Combined ops/sec: 2047.17 +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: 415254 queries in 1m0.003601442s +Queries/sec: 6920.48 +Avg query latency: 1.603002ms +P95 query latency: 6.256605ms +P99 query latency: 9.899737ms +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: 325890 operations (275890 queries, 50000 writes) in 1m0.003099307s +Operations/sec: 5431.22 +Avg latency: 1.378137ms +Avg query latency: 1.366065ms +Avg write latency: 1.44475ms +P95 latency: 3.427873ms +P99 latency: 5.340723ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.288409868s +Total Events: 50000 +Events/sec: 15204.92 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 126 MB +Avg Latency: 1.485679ms +P90 Latency: 2.12405ms +P95 Latency: 2.501619ms +P99 Latency: 3.714496ms +Bottom 10% Avg Latency: 768.979µs +---------------------------------------- + +Test: Burst Pattern +Duration: 7.964347994s +Total Events: 50000 +Events/sec: 6277.98 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 161 MB +Avg Latency: 1.216531ms +P90 Latency: 1.748877ms +P95 Latency: 2.028348ms +P99 Latency: 2.847978ms +Bottom 10% Avg Latency: 540.737µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.423948265s +Total Events: 50000 +Events/sec: 2047.17 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 132 MB +Avg Latency: 369.523µs +P90 Latency: 775.926µs +P95 Latency: 862.271µs +P99 Latency: 1.05139ms +Bottom 10% Avg Latency: 976.651µs +---------------------------------------- + +Test: Query Performance +Duration: 1m0.003601442s +Total Events: 415254 +Events/sec: 6920.48 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 118 MB +Avg Latency: 1.603002ms +P90 Latency: 4.760818ms +P95 Latency: 6.256605ms +P99 Latency: 9.899737ms +Bottom 10% Avg Latency: 6.959951ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003099307s +Total Events: 325890 +Events/sec: 5431.22 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 139 MB +Avg Latency: 1.378137ms +P90 Latency: 2.762527ms +P95 Latency: 3.427873ms +P99 Latency: 5.340723ms +Bottom 10% Avg Latency: 3.863556ms +---------------------------------------- + +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-11-20T20:22:13+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_200202/khatru-sqlite_results.txt b/cmd/benchmark/reports/run_20251120_200202/khatru-sqlite_results.txt new file mode 100644 index 0000000..97f5671 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_200202/khatru-sqlite_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_khatru-sqlite_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763669732839163ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763669732839345ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763669732839423ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763669732839433ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763669732839447ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763669732839469ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763669732839476ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763669732839496ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763669732839504ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 20:15:32 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 20:15:32 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 2.963346692s +Events/sec: 16872.81 +Avg latency: 1.294206ms +P90 latency: 1.715271ms +P95 latency: 2.011193ms +P99 latency: 3.190375ms +Bottom 10% Avg latency: 724.237µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 291.855294ms +Burst completed: 5000 events in 316.021528ms +Burst completed: 5000 events in 282.131412ms +Burst completed: 5000 events in 299.105944ms +Burst completed: 5000 events in 267.419607ms +Burst completed: 5000 events in 325.020614ms +Burst completed: 5000 events in 305.340591ms +Burst completed: 5000 events in 271.0695ms +Burst completed: 5000 events in 390.24426ms +Burst completed: 5000 events in 284.381622ms +Burst test completed: 50000 events in 8.038707278s, errors: 0 +Events/sec: 6219.91 +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.489286115s +Combined ops/sec: 2041.71 +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: 420505 queries in 1m0.003538635s +Queries/sec: 7008.00 +Avg query latency: 1.572366ms +P95 query latency: 6.018765ms +P99 query latency: 9.565009ms +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: 323946 operations (273946 queries, 50000 writes) in 1m0.003027777s +Operations/sec: 5398.83 +Avg latency: 1.414998ms +Avg query latency: 1.390113ms +Avg write latency: 1.551346ms +P95 latency: 3.512421ms +P99 latency: 5.637893ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 2.963346692s +Total Events: 50000 +Events/sec: 16872.81 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 205 MB +Avg Latency: 1.294206ms +P90 Latency: 1.715271ms +P95 Latency: 2.011193ms +P99 Latency: 3.190375ms +Bottom 10% Avg Latency: 724.237µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.038707278s +Total Events: 50000 +Events/sec: 6219.91 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 208 MB +Avg Latency: 1.28288ms +P90 Latency: 1.849315ms +P95 Latency: 2.16732ms +P99 Latency: 3.046622ms +Bottom 10% Avg Latency: 581.238µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.489286115s +Total Events: 50000 +Events/sec: 2041.71 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 199 MB +Avg Latency: 372.036µs +P90 Latency: 778.229µs +P95 Latency: 868.521µs +P99 Latency: 1.078812ms +Bottom 10% Avg Latency: 1.036235ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.003538635s +Total Events: 420505 +Events/sec: 7008.00 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 124 MB +Avg Latency: 1.572366ms +P90 Latency: 4.639693ms +P95 Latency: 6.018765ms +P99 Latency: 9.565009ms +Bottom 10% Avg Latency: 6.728349ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003027777s +Total Events: 323946 +Events/sec: 5398.83 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 104 MB +Avg Latency: 1.414998ms +P90 Latency: 2.807811ms +P95 Latency: 3.512421ms +P99 Latency: 5.637893ms +Bottom 10% Avg Latency: 4.028549ms +---------------------------------------- + +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-11-20T20:18:50+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_200202/next-orly-badger_results.txt b/cmd/benchmark/reports/run_20251120_200202/next-orly-badger_results.txt new file mode 100644 index 0000000..a7805ed --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_200202/next-orly-badger_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_next-orly-badger_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763669124600787ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763669124600839ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763669124600865ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763669124600871ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763669124600882ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763669124600896ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763669124600900ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763669124600913ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763669124600919ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 20:05:24 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 20:05:24 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 2.969061628s +Events/sec: 16840.34 +Avg latency: 1.297596ms +P90 latency: 1.734511ms +P95 latency: 2.027536ms +P99 latency: 2.961433ms +Bottom 10% Avg latency: 722.094µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 276.383103ms +Burst completed: 5000 events in 347.587541ms +Burst completed: 5000 events in 381.7012ms +Burst completed: 5000 events in 339.439731ms +Burst completed: 5000 events in 292.19598ms +Burst completed: 5000 events in 338.289935ms +Burst completed: 5000 events in 335.224221ms +Burst completed: 5000 events in 271.373815ms +Burst completed: 5000 events in 290.588853ms +Burst completed: 5000 events in 278.611302ms +Burst test completed: 50000 events in 8.15896297s, errors: 0 +Events/sec: 6128.23 +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.531766787s +Combined ops/sec: 2038.17 +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: 406469 queries in 1m0.004230933s +Queries/sec: 6774.01 +Avg query latency: 1.643787ms +P95 query latency: 6.491386ms +P99 query latency: 10.300562ms +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: 321891 operations (271891 queries, 50000 writes) in 1m0.003425476s +Operations/sec: 5364.54 +Avg latency: 1.412817ms +Avg query latency: 1.395014ms +Avg write latency: 1.509627ms +P95 latency: 3.531794ms +P99 latency: 5.566648ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 2.969061628s +Total Events: 50000 +Events/sec: 16840.34 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 163 MB +Avg Latency: 1.297596ms +P90 Latency: 1.734511ms +P95 Latency: 2.027536ms +P99 Latency: 2.961433ms +Bottom 10% Avg Latency: 722.094µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.15896297s +Total Events: 50000 +Events/sec: 6128.23 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 204 MB +Avg Latency: 1.265918ms +P90 Latency: 1.967513ms +P95 Latency: 2.302166ms +P99 Latency: 3.178464ms +Bottom 10% Avg Latency: 442.546µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.531766787s +Total Events: 50000 +Events/sec: 2038.17 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 140 MB +Avg Latency: 385.858µs +P90 Latency: 804.273µs +P95 Latency: 894.834µs +P99 Latency: 1.119529ms +Bottom 10% Avg Latency: 1.040121ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.004230933s +Total Events: 406469 +Events/sec: 6774.01 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 120 MB +Avg Latency: 1.643787ms +P90 Latency: 4.902634ms +P95 Latency: 6.491386ms +P99 Latency: 10.300562ms +Bottom 10% Avg Latency: 7.252457ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003425476s +Total Events: 321891 +Events/sec: 5364.54 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 120 MB +Avg Latency: 1.412817ms +P90 Latency: 2.823412ms +P95 Latency: 3.531794ms +P99 Latency: 5.566648ms +Bottom 10% Avg Latency: 4.024306ms +---------------------------------------- + +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-11-20T20:08:42+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_200202/next-orly-dgraph_results.txt b/cmd/benchmark/reports/run_20251120_200202/next-orly-dgraph_results.txt new file mode 100644 index 0000000..8902daa --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_200202/next-orly-dgraph_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_next-orly-dgraph_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763669327215819ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763669327215873ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763669327215897ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763669327215903ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763669327215913ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763669327215942ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763669327215950ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763669327215962ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763669327215968ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 20:08:47 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 20:08:47 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.018694521s +Events/sec: 16563.45 +Avg latency: 1.32589ms +P90 latency: 1.831543ms +P95 latency: 2.152481ms +P99 latency: 3.113153ms +Bottom 10% Avg latency: 726.176µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 292.171946ms +Burst completed: 5000 events in 318.508865ms +Burst completed: 5000 events in 366.003137ms +Burst completed: 5000 events in 299.686978ms +Burst completed: 5000 events in 285.823742ms +Burst completed: 5000 events in 329.930802ms +Burst completed: 5000 events in 297.041485ms +Burst completed: 5000 events in 268.707865ms +Burst completed: 5000 events in 397.413434ms +Burst completed: 5000 events in 290.662828ms +Burst test completed: 50000 events in 8.152801342s, errors: 0 +Events/sec: 6132.86 +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.646214936s +Combined ops/sec: 2028.71 +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: 403337 queries in 1m0.003445945s +Queries/sec: 6721.90 +Avg query latency: 1.650663ms +P95 query latency: 6.533977ms +P99 query latency: 10.449883ms +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: 319133 operations (269133 queries, 50000 writes) in 1m0.003897433s +Operations/sec: 5318.54 +Avg latency: 1.45724ms +Avg query latency: 1.423521ms +Avg write latency: 1.638735ms +P95 latency: 3.643619ms +P99 latency: 5.821572ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.018694521s +Total Events: 50000 +Events/sec: 16563.45 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 101 MB +Avg Latency: 1.32589ms +P90 Latency: 1.831543ms +P95 Latency: 2.152481ms +P99 Latency: 3.113153ms +Bottom 10% Avg Latency: 726.176µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.152801342s +Total Events: 50000 +Events/sec: 6132.86 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 251 MB +Avg Latency: 1.340819ms +P90 Latency: 1.980055ms +P95 Latency: 2.37338ms +P99 Latency: 3.737908ms +Bottom 10% Avg Latency: 567.81µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.646214936s +Total Events: 50000 +Events/sec: 2028.71 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 174 MB +Avg Latency: 387.51µs +P90 Latency: 813.774µs +P95 Latency: 904.165µs +P99 Latency: 1.114634ms +Bottom 10% Avg Latency: 1.027038ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.003445945s +Total Events: 403337 +Events/sec: 6721.90 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 148 MB +Avg Latency: 1.650663ms +P90 Latency: 4.924325ms +P95 Latency: 6.533977ms +P99 Latency: 10.449883ms +Bottom 10% Avg Latency: 7.309323ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003897433s +Total Events: 319133 +Events/sec: 5318.54 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 131 MB +Avg Latency: 1.45724ms +P90 Latency: 2.888865ms +P95 Latency: 3.643619ms +P99 Latency: 5.821572ms +Bottom 10% Avg Latency: 4.174905ms +---------------------------------------- + +Report saved to: /tmp/benchmark_next-orly-dgraph_8/benchmark_report.txt +AsciiDoc report saved to: /tmp/benchmark_next-orly-dgraph_8/benchmark_report.adoc + +RELAY_NAME: next-orly-dgraph +RELAY_URL: ws://next-orly-dgraph:8080 +TEST_TIMESTAMP: 2025-11-20T20:12:04+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_200202/next-orly-neo4j_results.txt b/cmd/benchmark/reports/run_20251120_200202/next-orly-neo4j_results.txt new file mode 100644 index 0000000..87fa0e6 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_200202/next-orly-neo4j_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_next-orly-neo4j_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763669529971033ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763669529971109ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763669529971132ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763669529971137ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763669529971148ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763669529971161ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763669529971166ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763669529971175ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763669529971181ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 20:12:09 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 20:12:09 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.41945316s +Events/sec: 14622.22 +Avg latency: 1.559545ms +P90 latency: 2.247167ms +P95 latency: 2.658118ms +P99 latency: 3.995878ms +Bottom 10% Avg latency: 795.698µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 295.869274ms +Burst completed: 5000 events in 462.260099ms +Burst completed: 5000 events in 296.659792ms +Burst completed: 5000 events in 291.58686ms +Burst completed: 5000 events in 283.019359ms +Burst completed: 5000 events in 333.11738ms +Burst completed: 5000 events in 297.160854ms +Burst completed: 5000 events in 262.623572ms +Burst completed: 5000 events in 287.679452ms +Burst completed: 5000 events in 272.330641ms +Burst test completed: 50000 events in 8.087375023s, errors: 0 +Events/sec: 6182.48 +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.430407247s +Combined ops/sec: 2046.63 +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: 404255 queries in 1m0.00592055s +Queries/sec: 6736.92 +Avg query latency: 1.650794ms +P95 query latency: 6.53105ms +P99 query latency: 10.385042ms +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: 314542 operations (264542 queries, 50000 writes) in 1m0.002714905s +Operations/sec: 5242.13 +Avg latency: 1.461702ms +Avg query latency: 1.440494ms +Avg write latency: 1.573909ms +P95 latency: 3.707878ms +P99 latency: 6.186047ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.41945316s +Total Events: 50000 +Events/sec: 14622.22 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 101 MB +Avg Latency: 1.559545ms +P90 Latency: 2.247167ms +P95 Latency: 2.658118ms +P99 Latency: 3.995878ms +Bottom 10% Avg Latency: 795.698µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.087375023s +Total Events: 50000 +Events/sec: 6182.48 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 204 MB +Avg Latency: 1.269605ms +P90 Latency: 1.879279ms +P95 Latency: 2.293256ms +P99 Latency: 3.759611ms +Bottom 10% Avg Latency: 515.108µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.430407247s +Total Events: 50000 +Events/sec: 2046.63 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 178 MB +Avg Latency: 363.59µs +P90 Latency: 771.255µs +P95 Latency: 867.888µs +P99 Latency: 1.099979ms +Bottom 10% Avg Latency: 996.877µs +---------------------------------------- + +Test: Query Performance +Duration: 1m0.00592055s +Total Events: 404255 +Events/sec: 6736.92 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 129 MB +Avg Latency: 1.650794ms +P90 Latency: 4.922944ms +P95 Latency: 6.53105ms +P99 Latency: 10.385042ms +Bottom 10% Avg Latency: 7.275184ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.002714905s +Total Events: 314542 +Events/sec: 5242.13 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 132 MB +Avg Latency: 1.461702ms +P90 Latency: 2.939737ms +P95 Latency: 3.707878ms +P99 Latency: 6.186047ms +Bottom 10% Avg Latency: 4.332858ms +---------------------------------------- + +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-11-20T20:15:27+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_055257/nostr-rs-relay_results.txt b/cmd/benchmark/reports/run_20251120_200202/nostr-rs-relay_results.txt similarity index 58% rename from cmd/benchmark/reports/run_20251120_055257/nostr-rs-relay_results.txt rename to cmd/benchmark/reports/run_20251120_200202/nostr-rs-relay_results.txt index 09fab85..3d1ac03 100644 --- a/cmd/benchmark/reports/run_20251120_055257/nostr-rs-relay_results.txt +++ b/cmd/benchmark/reports/run_20251120_200202/nostr-rs-relay_results.txt @@ -1,15 +1,15 @@ Starting Nostr Relay Benchmark (Badger Backend) Data Directory: /tmp/benchmark_nostr-rs-relay_8 Events: 50000, Workers: 24, Duration: 1m0s -1763619392357418ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763619392357482ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763619392357506ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763619392357513ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763619392357524ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763619392357540ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763619392357546ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763619392357561ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763619392357568ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 +1763670543093453ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763670543093533ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763670543093555ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763670543093560ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763670543093572ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763670543093586ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763670543093591ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763670543093614ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763670543093619ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 ╔════════════════════════════════════════════════════════╗ ║ BADGER BACKEND BENCHMARK SUITE ║ @@ -19,32 +19,32 @@ Events: 50000, Workers: 24, Duration: 1m0s RunPeakThroughputTest (Badger).. === Peak Throughput Test === -2025/11/20 06:16:32 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths -2025/11/20 06:16:32 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +2025/11/20 20:29:03 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 20:29:03 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 Events saved: 50000/50000 (100.0%), errors: 0 -Duration: 2.772157487s -Events/sec: 18036.49 -Avg latency: 1.14847ms -P90 latency: 1.494791ms -P95 latency: 1.723577ms -P99 latency: 2.482173ms -Bottom 10% Avg latency: 653.417µs +Duration: 2.834683217s +Events/sec: 17638.66 +Avg latency: 1.18563ms +P90 latency: 1.576272ms +P95 latency: 1.847889ms +P99 latency: 2.69928ms +Bottom 10% Avg latency: 646.954µs Wiping database between tests... RunBurstPatternTest (Badger).. === Burst Pattern Test === -Burst completed: 5000 events in 268.738605ms -Burst completed: 5000 events in 303.337341ms -Burst completed: 5000 events in 271.31493ms -Burst completed: 5000 events in 306.45637ms -Burst completed: 5000 events in 277.933503ms -Burst completed: 5000 events in 329.682206ms -Burst completed: 5000 events in 299.558536ms -Burst completed: 5000 events in 308.438271ms -Burst completed: 5000 events in 325.963716ms -Burst completed: 5000 events in 268.183599ms -Burst test completed: 50000 events in 7.964171204s, errors: 0 -Events/sec: 6278.12 +Burst completed: 5000 events in 288.243162ms +Burst completed: 5000 events in 295.639176ms +Burst completed: 5000 events in 266.183046ms +Burst completed: 5000 events in 289.772997ms +Burst completed: 5000 events in 346.857517ms +Burst completed: 5000 events in 392.30016ms +Burst completed: 5000 events in 316.952072ms +Burst completed: 5000 events in 278.495452ms +Burst completed: 5000 events in 269.495766ms +Burst completed: 5000 events in 259.647834ms +Burst test completed: 50000 events in 8.010584112s, errors: 0 +Events/sec: 6241.74 Wiping database between tests... RunMixedReadWriteTest (Badger).. @@ -62,8 +62,8 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Mixed test completed: 25000 writes, 25000 reads in 24.476816258s -Combined ops/sec: 2042.75 +Mixed test completed: 25000 writes, 25000 reads in 24.436170149s +Combined ops/sec: 2046.15 Wiping database between tests... RunQueryTest (Badger).. @@ -75,11 +75,11 @@ Generated 10000 events: All events are properly signed Pre-populating database with 10000 events for query tests... -Query test completed: 418186 queries in 1m0.003766058s -Queries/sec: 6969.33 -Avg query latency: 1.58101ms -P95 query latency: 6.141965ms -P99 query latency: 9.665876ms +Query test completed: 420104 queries in 1m0.004812476s +Queries/sec: 7001.17 +Avg query latency: 1.581786ms +P95 query latency: 6.095087ms +P99 query latency: 9.681457ms Wiping database between tests... RunConcurrentQueryStoreTest (Badger).. @@ -97,13 +97,13 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Concurrent test completed: 324142 operations (274142 queries, 50000 writes) in 1m0.003303897s -Operations/sec: 5402.07 -Avg latency: 1.412001ms -Avg query latency: 1.390798ms -Avg write latency: 1.528256ms -P95 latency: 3.493684ms -P99 latency: 5.810191ms +Concurrent test completed: 308305 operations (258305 queries, 50000 writes) in 1m0.003332271s +Operations/sec: 5138.13 +Avg latency: 1.532137ms +Avg query latency: 1.49713ms +Avg write latency: 1.712984ms +P95 latency: 3.933782ms +P99 latency: 6.685993ms === Badger benchmark completed === @@ -113,73 +113,73 @@ BENCHMARK REPORT ================================================================================ Test: Peak Throughput -Duration: 2.772157487s +Duration: 2.834683217s Total Events: 50000 -Events/sec: 18036.49 +Events/sec: 17638.66 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 151 MB -Avg Latency: 1.14847ms -P90 Latency: 1.494791ms -P95 Latency: 1.723577ms -P99 Latency: 2.482173ms -Bottom 10% Avg Latency: 653.417µs +Memory Used: 88 MB +Avg Latency: 1.18563ms +P90 Latency: 1.576272ms +P95 Latency: 1.847889ms +P99 Latency: 2.69928ms +Bottom 10% Avg Latency: 646.954µs ---------------------------------------- Test: Burst Pattern -Duration: 7.964171204s +Duration: 8.010584112s Total Events: 50000 -Events/sec: 6278.12 +Events/sec: 6241.74 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 210 MB -Avg Latency: 1.18248ms -P90 Latency: 1.718126ms -P95 Latency: 2.000325ms -P99 Latency: 2.834856ms -Bottom 10% Avg Latency: 480.184µs +Memory Used: 150 MB +Avg Latency: 1.182584ms +P90 Latency: 1.77976ms +P95 Latency: 2.120267ms +P99 Latency: 3.024349ms +Bottom 10% Avg Latency: 448.582µs ---------------------------------------- Test: Mixed Read/Write -Duration: 24.476816258s +Duration: 24.436170149s Total Events: 50000 -Events/sec: 2042.75 +Events/sec: 2046.15 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 197 MB -Avg Latency: 360.712µs -P90 Latency: 757.895µs -P95 Latency: 849.41µs -P99 Latency: 1.066494ms -Bottom 10% Avg Latency: 991.825µs +Memory Used: 135 MB +Avg Latency: 369.8µs +P90 Latency: 773.463µs +P95 Latency: 866.51µs +P99 Latency: 1.074516ms +Bottom 10% Avg Latency: 1.00298ms ---------------------------------------- Test: Query Performance -Duration: 1m0.003766058s -Total Events: 418186 -Events/sec: 6969.33 +Duration: 1m0.004812476s +Total Events: 420104 +Events/sec: 7001.17 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 139 MB -Avg Latency: 1.58101ms -P90 Latency: 4.686218ms -P95 Latency: 6.141965ms -P99 Latency: 9.665876ms -Bottom 10% Avg Latency: 6.835975ms +Memory Used: 151 MB +Avg Latency: 1.581786ms +P90 Latency: 4.688809ms +P95 Latency: 6.095087ms +P99 Latency: 9.681457ms +Bottom 10% Avg Latency: 6.825004ms ---------------------------------------- Test: Concurrent Query/Store -Duration: 1m0.003303897s -Total Events: 324142 -Events/sec: 5402.07 +Duration: 1m0.003332271s +Total Events: 308305 +Events/sec: 5138.13 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 93 MB -Avg Latency: 1.412001ms -P90 Latency: 2.782417ms -P95 Latency: 3.493684ms -P99 Latency: 5.810191ms -Bottom 10% Avg Latency: 4.069703ms +Memory Used: 98 MB +Avg Latency: 1.532137ms +P90 Latency: 3.100785ms +P95 Latency: 3.933782ms +P99 Latency: 6.685993ms +Bottom 10% Avg Latency: 4.60825ms ---------------------------------------- Report saved to: /tmp/benchmark_nostr-rs-relay_8/benchmark_report.txt @@ -187,7 +187,7 @@ 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-11-20T06:19:49+00:00 +TEST_TIMESTAMP: 2025-11-20T20:32:20+00:00 BENCHMARK_CONFIG: Events: 50000 Workers: 24 diff --git a/cmd/benchmark/reports/run_20251120_055257/relayer-basic_results.txt b/cmd/benchmark/reports/run_20251120_200202/relayer-basic_results.txt similarity index 57% rename from cmd/benchmark/reports/run_20251120_055257/relayer-basic_results.txt rename to cmd/benchmark/reports/run_20251120_200202/relayer-basic_results.txt index bf9227b..c9ea3ba 100644 --- a/cmd/benchmark/reports/run_20251120_055257/relayer-basic_results.txt +++ b/cmd/benchmark/reports/run_20251120_200202/relayer-basic_results.txt @@ -1,15 +1,15 @@ Starting Nostr Relay Benchmark (Badger Backend) Data Directory: /tmp/benchmark_relayer-basic_8 Events: 50000, Workers: 24, Duration: 1m0s -1763618988175240ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 -1763618988175308ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 -1763618988175330ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 -1763618988175335ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 -1763618988175344ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 -1763618988175357ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 -1763618988175362ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 -1763618988175372ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 -1763618988175378ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 +1763670138131829ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763670138131898ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763670138131920ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763670138131925ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763670138131932ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763670138131949ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763670138131956ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763670138131970ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763670138131976ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 ╔════════════════════════════════════════════════════════╗ ║ BADGER BACKEND BENCHMARK SUITE ║ @@ -19,32 +19,32 @@ Events: 50000, Workers: 24, Duration: 1m0s RunPeakThroughputTest (Badger).. === Peak Throughput Test === -2025/11/20 06:09:48 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths -2025/11/20 06:09:48 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +2025/11/20 20:22:18 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 20:22:18 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 Events saved: 50000/50000 (100.0%), errors: 0 -Duration: 2.781810292s -Events/sec: 17973.91 -Avg latency: 1.159149ms -P90 latency: 1.490872ms -P95 latency: 1.737633ms -P99 latency: 2.771573ms -Bottom 10% Avg latency: 666.22µs +Duration: 2.894695787s +Events/sec: 17272.97 +Avg latency: 1.255956ms +P90 latency: 1.664187ms +P95 latency: 1.909735ms +P99 latency: 2.638381ms +Bottom 10% Avg latency: 712.498µs Wiping database between tests... RunBurstPatternTest (Badger).. === Burst Pattern Test === -Burst completed: 5000 events in 271.703938ms -Burst completed: 5000 events in 317.584424ms -Burst completed: 5000 events in 272.548659ms -Burst completed: 5000 events in 289.808915ms -Burst completed: 5000 events in 275.401318ms -Burst completed: 5000 events in 318.927487ms -Burst completed: 5000 events in 295.454518ms -Burst completed: 5000 events in 256.688206ms -Burst completed: 5000 events in 286.811644ms -Burst completed: 5000 events in 264.309727ms -Burst test completed: 50000 events in 7.856524268s, errors: 0 -Events/sec: 6364.14 +Burst completed: 5000 events in 283.945575ms +Burst completed: 5000 events in 292.547115ms +Burst completed: 5000 events in 265.116118ms +Burst completed: 5000 events in 293.14728ms +Burst completed: 5000 events in 279.669829ms +Burst completed: 5000 events in 336.159523ms +Burst completed: 5000 events in 425.381146ms +Burst completed: 5000 events in 307.31666ms +Burst completed: 5000 events in 282.776535ms +Burst completed: 5000 events in 280.815353ms +Burst test completed: 50000 events in 8.054248885s, errors: 0 +Events/sec: 6207.90 Wiping database between tests... RunMixedReadWriteTest (Badger).. @@ -62,8 +62,8 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Mixed test completed: 25000 writes, 25000 reads in 24.510988729s -Combined ops/sec: 2039.90 +Mixed test completed: 25000 writes, 25000 reads in 24.441579305s +Combined ops/sec: 2045.69 Wiping database between tests... RunQueryTest (Badger).. @@ -75,11 +75,11 @@ Generated 10000 events: All events are properly signed Pre-populating database with 10000 events for query tests... -Query test completed: 418829 queries in 1m0.003072978s -Queries/sec: 6980.13 -Avg query latency: 1.589663ms -P95 query latency: 6.123164ms -P99 query latency: 9.772382ms +Query test completed: 415731 queries in 1m0.004450095s +Queries/sec: 6928.34 +Avg query latency: 1.605783ms +P95 query latency: 6.196926ms +P99 query latency: 9.937346ms Wiping database between tests... RunConcurrentQueryStoreTest (Badger).. @@ -97,13 +97,13 @@ Generated 50000 events: All events are unique (incremental timestamps) All events are properly signed -Concurrent test completed: 325492 operations (275492 queries, 50000 writes) in 1m0.002664568s -Operations/sec: 5424.63 -Avg latency: 1.392378ms -Avg query latency: 1.377366ms -Avg write latency: 1.475091ms -P95 latency: 3.499432ms -P99 latency: 5.584828ms +Concurrent test completed: 322255 operations (272255 queries, 50000 writes) in 1m0.003382114s +Operations/sec: 5370.61 +Avg latency: 1.423539ms +Avg query latency: 1.403109ms +Avg write latency: 1.534783ms +P95 latency: 3.538928ms +P99 latency: 5.905702ms === Badger benchmark completed === @@ -113,73 +113,73 @@ BENCHMARK REPORT ================================================================================ Test: Peak Throughput -Duration: 2.781810292s +Duration: 2.894695787s Total Events: 50000 -Events/sec: 17973.91 +Events/sec: 17272.97 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 103 MB -Avg Latency: 1.159149ms -P90 Latency: 1.490872ms -P95 Latency: 1.737633ms -P99 Latency: 2.771573ms -Bottom 10% Avg Latency: 666.22µs +Memory Used: 207 MB +Avg Latency: 1.255956ms +P90 Latency: 1.664187ms +P95 Latency: 1.909735ms +P99 Latency: 2.638381ms +Bottom 10% Avg Latency: 712.498µs ---------------------------------------- Test: Burst Pattern -Duration: 7.856524268s +Duration: 8.054248885s Total Events: 50000 -Events/sec: 6364.14 +Events/sec: 6207.90 Success Rate: 100.0% Concurrent Workers: 24 Memory Used: 205 MB -Avg Latency: 1.075436ms -P90 Latency: 1.553ms -P95 Latency: 1.805733ms -P99 Latency: 2.664269ms -Bottom 10% Avg Latency: 425.324µs +Avg Latency: 1.21703ms +P90 Latency: 1.859279ms +P95 Latency: 2.233521ms +P99 Latency: 3.436661ms +Bottom 10% Avg Latency: 441.188µs ---------------------------------------- Test: Mixed Read/Write -Duration: 24.510988729s +Duration: 24.441579305s Total Events: 50000 -Events/sec: 2039.90 +Events/sec: 2045.69 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 215 MB -Avg Latency: 374.563µs -P90 Latency: 783.484µs -P95 Latency: 865.831µs -P99 Latency: 1.062355ms -Bottom 10% Avg Latency: 997.615µs +Memory Used: 177 MB +Avg Latency: 375.675µs +P90 Latency: 782.189µs +P95 Latency: 871.278µs +P99 Latency: 1.106456ms +Bottom 10% Avg Latency: 1.039345ms ---------------------------------------- Test: Query Performance -Duration: 1m0.003072978s -Total Events: 418829 -Events/sec: 6980.13 +Duration: 1m0.004450095s +Total Events: 415731 +Events/sec: 6928.34 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 128 MB -Avg Latency: 1.589663ms -P90 Latency: 4.685383ms -P95 Latency: 6.123164ms -P99 Latency: 9.772382ms -Bottom 10% Avg Latency: 6.841908ms +Memory Used: 114 MB +Avg Latency: 1.605783ms +P90 Latency: 4.727348ms +P95 Latency: 6.196926ms +P99 Latency: 9.937346ms +Bottom 10% Avg Latency: 6.948373ms ---------------------------------------- Test: Concurrent Query/Store -Duration: 1m0.002664568s -Total Events: 325492 -Events/sec: 5424.63 +Duration: 1m0.003382114s +Total Events: 322255 +Events/sec: 5370.61 Success Rate: 100.0% Concurrent Workers: 24 -Memory Used: 90 MB -Avg Latency: 1.392378ms -P90 Latency: 2.772957ms -P95 Latency: 3.499432ms -P99 Latency: 5.584828ms -Bottom 10% Avg Latency: 3.959973ms +Memory Used: 110 MB +Avg Latency: 1.423539ms +P90 Latency: 2.827222ms +P95 Latency: 3.538928ms +P99 Latency: 5.905702ms +Bottom 10% Avg Latency: 4.165578ms ---------------------------------------- Report saved to: /tmp/benchmark_relayer-basic_8/benchmark_report.txt @@ -187,7 +187,7 @@ 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-11-20T06:13:05+00:00 +TEST_TIMESTAMP: 2025-11-20T20:25:35+00:00 BENCHMARK_CONFIG: Events: 50000 Workers: 24 diff --git a/cmd/benchmark/reports/run_20251120_200202/rely-sqlite_results.txt b/cmd/benchmark/reports/run_20251120_200202/rely-sqlite_results.txt new file mode 100644 index 0000000..d1634f4 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_200202/rely-sqlite_results.txt @@ -0,0 +1,195 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_rely-sqlite_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763668922245115ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763668922245170ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763668922245193ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763668922245198ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763668922245208ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763668922245221ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763668922245225ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763668922245237ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763668922245243ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 20:02:02 INFO: Extracted embedded libsecp256k1 to /tmp/orly-libsecp256k1/libsecp256k1.so +2025/11/20 20:02:02 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 20:02:02 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 2.855983841s +Events/sec: 17507.10 +Avg latency: 1.223582ms +P90 latency: 1.623281ms +P95 latency: 1.87223ms +P99 latency: 2.707616ms +Bottom 10% Avg latency: 698.877µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 288.827022ms +Burst completed: 5000 events in 321.067294ms +Burst completed: 5000 events in 312.273754ms +Burst completed: 5000 events in 293.093481ms +Burst completed: 5000 events in 286.553497ms +Burst completed: 5000 events in 357.201577ms +Burst completed: 5000 events in 306.752475ms +Burst completed: 5000 events in 262.736838ms +Burst completed: 5000 events in 292.763913ms +Burst completed: 5000 events in 280.351571ms +Burst test completed: 50000 events in 8.008812743s, errors: 0 +Events/sec: 6243.12 +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.537090509s +Combined ops/sec: 2037.73 +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: 405957 queries in 1m0.005924644s +Queries/sec: 6765.28 +Avg query latency: 1.641153ms +P95 query latency: 6.470517ms +P99 query latency: 10.153469ms +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: 318529 operations (268529 queries, 50000 writes) in 1m0.003008545s +Operations/sec: 5308.55 +Avg latency: 1.451707ms +Avg query latency: 1.426735ms +Avg write latency: 1.585823ms +P95 latency: 3.701027ms +P99 latency: 5.870958ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 2.855983841s +Total Events: 50000 +Events/sec: 17507.10 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 162 MB +Avg Latency: 1.223582ms +P90 Latency: 1.623281ms +P95 Latency: 1.87223ms +P99 Latency: 2.707616ms +Bottom 10% Avg Latency: 698.877µs +---------------------------------------- + +Test: Burst Pattern +Duration: 8.008812743s +Total Events: 50000 +Events/sec: 6243.12 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 155 MB +Avg Latency: 1.178662ms +P90 Latency: 1.750812ms +P95 Latency: 2.046981ms +P99 Latency: 2.905169ms +Bottom 10% Avg Latency: 438.058µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.537090509s +Total Events: 50000 +Events/sec: 2037.73 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 143 MB +Avg Latency: 380.772µs +P90 Latency: 793.938µs +P95 Latency: 883.507µs +P99 Latency: 1.103633ms +Bottom 10% Avg Latency: 1.040974ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.005924644s +Total Events: 405957 +Events/sec: 6765.28 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 105 MB +Avg Latency: 1.641153ms +P90 Latency: 4.911473ms +P95 Latency: 6.470517ms +P99 Latency: 10.153469ms +Bottom 10% Avg Latency: 7.198928ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003008545s +Total Events: 318529 +Events/sec: 5308.55 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 109 MB +Avg Latency: 1.451707ms +P90 Latency: 2.895473ms +P95 Latency: 3.701027ms +P99 Latency: 5.870958ms +Bottom 10% Avg Latency: 4.211348ms +---------------------------------------- + +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-11-20T20:05:19+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/reports/run_20251120_200202/strfry_results.txt b/cmd/benchmark/reports/run_20251120_200202/strfry_results.txt new file mode 100644 index 0000000..eedfe31 --- /dev/null +++ b/cmd/benchmark/reports/run_20251120_200202/strfry_results.txt @@ -0,0 +1,194 @@ +Starting Nostr Relay Benchmark (Badger Backend) +Data Directory: /tmp/benchmark_strfry_8 +Events: 50000, Workers: 24, Duration: 1m0s +1763670340478661ℹ️ migrating to version 1... /build/pkg/database/migrations.go:66 +1763670340478739ℹ️ migrating to version 2... /build/pkg/database/migrations.go:73 +1763670340478771ℹ️ migrating to version 3... /build/pkg/database/migrations.go:80 +1763670340478778ℹ️ cleaning up ephemeral events (kinds 20000-29999)... /build/pkg/database/migrations.go:287 +1763670340478786ℹ️ cleaned up 0 ephemeral events from database /build/pkg/database/migrations.go:332 +1763670340478806ℹ️ migrating to version 4... /build/pkg/database/migrations.go:87 +1763670340478813ℹ️ converting events to optimized inline storage (Reiser4 optimization)... /build/pkg/database/migrations.go:340 +1763670340478835ℹ️ found 0 events to convert (0 regular, 0 replaceable, 0 addressable) /build/pkg/database/migrations.go:429 +1763670340478843ℹ️ migration complete: converted 0 events to optimized inline storage, deleted 0 old keys /build/pkg/database/migrations.go:538 + +╔════════════════════════════════════════════════════════╗ +║ BADGER BACKEND BENCHMARK SUITE ║ +╚════════════════════════════════════════════════════════╝ + +=== Starting Badger benchmark === +RunPeakThroughputTest (Badger).. + +=== Peak Throughput Test === +2025/11/20 20:25:40 WARN: Failed to load embedded library from /tmp/orly-libsecp256k1/libsecp256k1.so: Error relocating /tmp/orly-libsecp256k1/libsecp256k1.so: __fprintf_chk: symbol not found, falling back to system paths +2025/11/20 20:25:40 INFO: Successfully loaded libsecp256k1 v5.0.0 from system path: libsecp256k1.so.2 +Events saved: 50000/50000 (100.0%), errors: 0 +Duration: 3.175451317s +Events/sec: 15745.79 +Avg latency: 1.415908ms +P90 latency: 2.004386ms +P95 latency: 2.340716ms +P99 latency: 3.348014ms +Bottom 10% Avg latency: 739.523µs +Wiping database between tests... +RunBurstPatternTest (Badger).. + +=== Burst Pattern Test === +Burst completed: 5000 events in 301.102872ms +Burst completed: 5000 events in 294.117464ms +Burst completed: 5000 events in 273.073371ms +Burst completed: 5000 events in 301.704249ms +Burst completed: 5000 events in 299.9922ms +Burst completed: 5000 events in 339.238559ms +Burst completed: 5000 events in 312.837356ms +Burst completed: 5000 events in 280.591707ms +Burst completed: 5000 events in 277.848886ms +Burst completed: 5000 events in 295.019415ms +Burst test completed: 50000 events in 7.9814445s, errors: 0 +Events/sec: 6264.53 +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.456792977s +Combined ops/sec: 2044.42 +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: 419503 queries in 1m0.005474925s +Queries/sec: 6991.08 +Avg query latency: 1.585509ms +P95 query latency: 6.132577ms +P99 query latency: 9.715848ms +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: 327824 operations (277824 queries, 50000 writes) in 1m0.003814409s +Operations/sec: 5463.39 +Avg latency: 1.370145ms +Avg query latency: 1.364611ms +Avg write latency: 1.400897ms +P95 latency: 3.384594ms +P99 latency: 5.290584ms + +=== Badger benchmark completed === + + +================================================================================ +BENCHMARK REPORT +================================================================================ + +Test: Peak Throughput +Duration: 3.175451317s +Total Events: 50000 +Events/sec: 15745.79 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 205 MB +Avg Latency: 1.415908ms +P90 Latency: 2.004386ms +P95 Latency: 2.340716ms +P99 Latency: 3.348014ms +Bottom 10% Avg Latency: 739.523µs +---------------------------------------- + +Test: Burst Pattern +Duration: 7.9814445s +Total Events: 50000 +Events/sec: 6264.53 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 205 MB +Avg Latency: 1.153768ms +P90 Latency: 1.713633ms +P95 Latency: 2.007502ms +P99 Latency: 2.81005ms +Bottom 10% Avg Latency: 410.391µs +---------------------------------------- + +Test: Mixed Read/Write +Duration: 24.456792977s +Total Events: 50000 +Events/sec: 2044.42 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 144 MB +Avg Latency: 365.739µs +P90 Latency: 766.479µs +P95 Latency: 855.87µs +P99 Latency: 1.053084ms +Bottom 10% Avg Latency: 1.00241ms +---------------------------------------- + +Test: Query Performance +Duration: 1m0.005474925s +Total Events: 419503 +Events/sec: 6991.08 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 101 MB +Avg Latency: 1.585509ms +P90 Latency: 4.683097ms +P95 Latency: 6.132577ms +P99 Latency: 9.715848ms +Bottom 10% Avg Latency: 6.848119ms +---------------------------------------- + +Test: Concurrent Query/Store +Duration: 1m0.003814409s +Total Events: 327824 +Events/sec: 5463.39 +Success Rate: 100.0% +Concurrent Workers: 24 +Memory Used: 143 MB +Avg Latency: 1.370145ms +P90 Latency: 2.759625ms +P95 Latency: 3.384594ms +P99 Latency: 5.290584ms +Bottom 10% Avg Latency: 3.84975ms +---------------------------------------- + +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-11-20T20:28:58+00:00 +BENCHMARK_CONFIG: + Events: 50000 + Workers: 24 + Duration: 60s diff --git a/cmd/benchmark/run-benchmark.sh b/cmd/benchmark/run-benchmark.sh index 58b8095..4342a09 100755 --- a/cmd/benchmark/run-benchmark.sh +++ b/cmd/benchmark/run-benchmark.sh @@ -42,12 +42,12 @@ if [ -d "data/neo4j" ]; then rm -rf data/neo4j/* fi -mkdir -p data/{next-orly-badger,next-orly-dgraph,next-orly-neo4j,dgraph-zero,dgraph-alpha,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,postgres} -chmod 777 data/{next-orly-badger,next-orly-dgraph,next-orly-neo4j,dgraph-zero,dgraph-alpha,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,postgres} +mkdir -p data/{next-orly-badger,next-orly-dgraph,next-orly-neo4j,dgraph-zero,dgraph-alpha,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,rely-sqlite,postgres} +chmod 777 data/{next-orly-badger,next-orly-dgraph,next-orly-neo4j,dgraph-zero,dgraph-alpha,neo4j,neo4j-logs,khatru-sqlite,khatru-badger,relayer-basic,strfry,nostr-rs-relay,rely-sqlite,postgres} echo "Building fresh Docker images..." # Force rebuild to pick up latest code changes -$DOCKER_COMPOSE build --no-cache benchmark-runner next-orly-badger next-orly-dgraph next-orly-neo4j +$DOCKER_COMPOSE build --no-cache benchmark-runner next-orly-badger next-orly-dgraph next-orly-neo4j rely-sqlite echo "" echo "Starting benchmark suite..." diff --git a/go.mod b/go.mod index e548faf..aeb753d 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,16 @@ require ( require ( github.com/BurntSushi/toml v1.5.0 // indirect + github.com/ImVexed/fasturl v0.0.0-20230304231329-4e41488060f3 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect + github.com/bytedance/sonic v1.13.1 // indirect + github.com/bytedance/sonic/loader v0.2.4 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/cloudwego/base64x v0.1.5 // indirect + github.com/coder/websocket v1.8.12 // indirect + github.com/decred/dcrd/crypto/blake256 v1.1.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/dgraph-io/ristretto/v2 v2.3.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/felixge/fgprof v0.9.5 // indirect @@ -41,14 +50,27 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/google/flatbuffers v25.9.23+incompatible // indirect github.com/google/pprof v0.0.0-20251007162407-5df77e3f7d1d // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect - github.com/pkg/errors v0.8.1 // indirect + github.com/mailru/easyjson v0.9.0 // indirect + github.com/mattn/go-sqlite3 v1.14.32 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/nbd-wtf/go-nostr v0.52.0 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/templexxx/cpu v0.1.1 // indirect + github.com/tidwall/gjson v1.18.0 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.1 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/vertex-lab/nostr-sqlite v0.3.2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect + golang.org/x/arch v0.15.0 // indirect golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 // indirect golang.org/x/mod v0.29.0 // indirect golang.org/x/sync v0.17.0 // indirect diff --git a/go.sum b/go.sum index 9d8c47d..ba3d198 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,20 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/ImVexed/fasturl v0.0.0-20230304231329-4e41488060f3 h1:ClzzXMDDuUbWfNNZqGeYq4PnYOlwlOVIvSyNaIy0ykg= +github.com/ImVexed/fasturl v0.0.0-20230304231329-4e41488060f3/go.mod h1:we0YA5CsBbH5+/NUzC/AlMmxaDtWlXeNsqrwXjTzmzA= github.com/adrg/xdg v0.5.3 h1:xRnxJXne7+oWDatRhR1JLnvuccuIeCoBu2rtuLqQB78= github.com/adrg/xdg v0.5.3/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ= +github.com/btcsuite/btcd v0.24.2 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/bytedance/sonic v1.13.1 h1:Jyd5CIvdFnkOWuKXr+wm4Nyk2h0yAFsr8ucJgEasO3g= +github.com/bytedance/sonic v1.13.1/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= +github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -17,9 +29,18 @@ github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObk github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= +github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo= +github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8= +github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= github.com/dgraph-io/badger/v4 v4.8.0 h1:JYph1ChBijCw8SLeybvPINizbDKWZ5n/GYbz2yhN/bs= github.com/dgraph-io/badger/v4 v4.8.0/go.mod h1:U6on6e8k/RTbUWxqKR0MvugJuVmkxSNc79ap4917h4w= github.com/dgraph-io/dgo/v230 v230.0.1 h1:kR7gI7/ZZv0jtG6dnedNgNOCxe1cbSG8ekF+pNfReks= @@ -30,6 +51,7 @@ github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da h1:aIftn67I1fkbMa5 github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= github.com/ebitengine/purego v0.9.1 h1:a/k2f2HQU3Pi399RPW1MOaZyhKJL9w/xFpKAg4q1s0A= github.com/ebitengine/purego v0.9.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -67,6 +89,7 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/pprof v0.0.0-20251007162407-5df77e3f7d1d h1:KJIErDwbSHjnp/SGzE5ed8Aol7JsKiI5X7yWKAtzhM0= @@ -77,28 +100,46 @@ github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aN github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.1 h1:bcSGx7UbpBqMChDtsF28Lw6v/G94LPrrbMbdC3JH2co= github.com/klauspost/compress v1.18.1/go.mod h1:ZQFFVG+MdnR0P+l6wpXgIL4NTtwiKIdBnrBd8Nrxr+0= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= +github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= +github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuErjs= +github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/nbd-wtf/go-nostr v0.52.0 h1:9gtz0VOUPOb0PC2kugr2WJAxThlCSSM62t5VC3tvk1g= +github.com/nbd-wtf/go-nostr v0.52.0/go.mod h1:4avYoc9mDGZ9wHsvCOhHH9vPzKucCfuYBtJUSpHTfNk= github.com/neo4j/neo4j-go-driver/v5 v5.28.4 h1:7toxehVcYkZbyxV4W3Ib9VcnyRBQPucF+VwNNmtSXi4= github.com/neo4j/neo4j-go-driver/v5 v5.28.4/go.mod h1:Vff8OwT7QpLm7L2yYr85XNWe9Rbqlbeb9asNXJTHO4k= github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.7.0 h1:hnbDkaNWPCLMO9wGLdBFTIZvzDrDfBM2072E1S9gJkA= github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -110,8 +151,13 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/templexxx/cpu v0.0.1/go.mod h1:w7Tb+7qgcAlIyX4NhLuDKt78AHA5SzPmq0Wj6HiEnnk= @@ -119,6 +165,17 @@ github.com/templexxx/cpu v0.1.1 h1:isxHaxBXpYFWnk2DReuKkigaZyrjs2+9ypIdGP4h+HI= github.com/templexxx/cpu v0.1.1/go.mod h1:w7Tb+7qgcAlIyX4NhLuDKt78AHA5SzPmq0Wj6HiEnnk= github.com/templexxx/xhex v0.0.0-20200614015412-aed53437177b h1:XeDLE6c9mzHpdv3Wb1+pWBaWv/BlHK0ZYIu/KaL6eHg= github.com/templexxx/xhex v0.0.0-20200614015412-aed53437177b/go.mod h1:7rwmCH0wC2fQvNEvPZ3sKXukhyCTyiaZ5VTZMQYpZKQ= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/vertex-lab/nostr-sqlite v0.3.2 h1:8nZYYIwiKnWLA446qA/wL/Gy+bU0kuaxdLfUyfeTt/E= +github.com/vertex-lab/nostr-sqlite v0.3.2/go.mod h1:5bw1wMgJhSdrumsZAWxqy+P0u1g+q02PnlGQn15dnSM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go-simpler.org/env v0.12.0 h1:kt/lBts0J1kjWJAnB740goNdvwNxt5emhYngL0Fzufs= @@ -137,6 +194,8 @@ go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJr go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +golang.org/x/arch v0.15.0 h1:QtOrQd0bTUnhNVNndMpLHNWrDmYzZ2KDqSrEymqInZw= +golang.org/x/arch v0.15.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -241,3 +300,4 @@ lol.mleku.dev v1.0.5 h1:irwfwz+Scv74G/2OXmv05YFKOzUNOVZ735EAkYgjgM8= lol.mleku.dev v1.0.5/go.mod h1:JlsqP0CZDLKRyd85XGcy79+ydSRqmFkrPzYFMYxQ+zs= lukechampine.com/frand v1.5.1 h1:fg0eRtdmGFIxhP5zQJzM1lFDbD6CUfu/f+7WgAZd5/w= lukechampine.com/frand v1.5.1/go.mod h1:4VstaWc2plN4Mjr10chUD46RAVGWhpkZ5Nja8+Azp0Q= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=