Benchmarks and metrics collection for launch blog post
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 30/100
- Issue type
- Documentation
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- go, sqlite
- Domain
- backend, documentation, observability, performance
Research direction
Begin after Phase 2, using the observability work in #7 and health data from #16; review the API layer, go.mod, and SQLite-related measurements described in the issue. Run the benchmarks against mainnet data for one real namespace and document storage, performance, resource, simplicity, and reliability results in the launch blog post.
Written by the indexing model from the issue text.
Description
Summary
Once apex is functional end-to-end, collect concrete benchmarks and operational data for a single namespace to support a launch blog post. The post should tell the story of why apex exists, what problems it solves, and back it up with real numbers.
Data to collect
Storage
- Total celestia-node disk usage for the same height range (full node)
- Total apex disk usage for a single namespace over the same range
- Storage reduction ratio (e.g., "400GB → 2GB = 200x reduction")
- DB file size growth rate per day/week
- Breakdown: headers vs blob data vs indexes
Performance
- Backfill throughput: heights/sec, blobs/sec during historical sync
blob.Getlatency: apex (SQLite lookup) vs celestia-node (namespace scan)blob.GetAlllatency at various heights (sparse vs dense namespace)blob.Subscribeend-to-end latency: new block on celestia → blob delivered to consumer- Time to full sync from a given start height
Resource footprint
- Memory usage: idle, during backfill, during streaming
- CPU usage: idle, during backfill, during streaming
- Peak memory during heaviest operation
- Compare against celestia-node light/full node memory profile
Simplicity
- Lines of code: apex total vs celestia-node
- Dependencies: count of direct deps in go.mod (core module, excluding submit/)
- Binary size
- Config file: apex YAML vs celestia-node setup ceremony (init, keys, trusted hash, etc.)
- Time from
git cloneto serving blobs (setup friction)
Reliability
- Uptime over test period
- Sync gap recovery time
- Graceful restart time (shutdown → serving again)
Blog post outline
- The problem — celestia-node stores everything, rollups need almost nothing. Hundreds of GB for a few namespaces worth 10-20GB.
- What we tried / issues we hit — reference the celestia-node issues discovered during research:
- 8-second blob retrieval times (celestia-node#4453)
- BadgerDB corruption on ungraceful shutdown (celestia-node#3881)
- Non-contiguous subscriptions (celestia-node#3578)
- No namespace-scoped storage despite 3+ year roadmap item (celestia-node#2033)
- Subscription buffer overflow with silent disconnect
- <10% resource utilization during sync (celestia-node#4108)
- The approach — lightweight namespace indexer, SQLite, pluggable fetcher, drop-in API compatibility
- The numbers — storage, performance, memory, simplicity benchmarks from above
- What's next — Fiber support, gRPC, tx submission, multi-account
When
After Phase 2 is complete (API layer working, can serve ev-node). Benchmarks should be run against mainnet data with a real namespace.
Related
- #7 — Observability (metrics infrastructure needed to collect this data)
- #16 — Health endpoints (uptime, sync state data source)
- Dominant language
- Go
- Stars
- 4
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from evstack/apex
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
bug group: validation priority: low
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
codecheckers/chekhov#51 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100