# What this is? This is a document containing all the metrics requested to EL client teams to implement or provide to benchmark their implementations within BloatNet. This collects not only where the metrics/datapoints are. But also the desired final format and hopefully spec. # Syncing - Healing phase duration (if snapsync is supported) - Overall sync duration - Start-End DB size - R/W performance for all ops. - For each block * Best/Worst/Avg Read time * Best/Worst/Avg Write time ## Comments ### [Geth]: - Healing duration: ❌ Logs - Overall sync duration: ❌ Logs - Start-End DB size: ❌ Stop the node + `geth db inspect` - R/W perf: :white_check_mark: **Geth should just be the standard. Is impressive how much data it reports.** In `Geth: Multiple` - `System/IOWait` - `System/Disk read ops` - `System/Disk reads` - `System/Disk write ops` - `System/Disk writes` - `Database/ All of them` In `Geth: Dual` - `Storage/ All of them` - `Clean cache hit rate` - `Clean cache hits` - `Clean cache write rate` - `Clean cache reads` - `Clean cache miss rate` - `Clean cache misses` - `Dirty cache read rate` - `Clean cache writes` - `Dirty cache hit rate` - `Dirty cache hit depth` - `Dirty cache write rate` - `Dirty cache reads` - `Dirty cache miss rate` - `Dirty cache misses` - `Fast sync bloom misses` - `Dirty cache writes` - `Trie prefetcher account loads` - `Trie prefetcher account duplicate loads` - `Trie prefetcher account skips` - `Trie prefetcher account wastes` - `Trie prefetcher storage loads` - `Trie prefetcher storage duplicate loads` - `Trie prefetcher storage skips` - `Trie prefetcher storage wastes` ### [Nethermind]: - Healing duration: ❌ Logs - Overall sync duration: In `Nethermind-imported`: - `Sync/ All of them` - Start-End DB size: In `Nethermind-imported`: - `Database/ All of them` - Perf: 🤷 **Not exactly what we want. Better than nothing**. See Geth as example. In `Nethermind-imported`: - `Data/ All of them` ### [Besu]: - Healing duration: ❌ - Overall sync duration: :white_check_mark: In `Besu Full`: - `Fast Sync/ All of them` In `Besu Full (Performance)` - `Snap Sync/ All of them` - Start-End DB size: ❌ - I/O or R/W perf: 🤷 **Not exactly what we want. Better than nothing**. See Geth as example. In `Besu Full`: - `I/O Usage Read / Write` In `Besu Full (Performance)` - `Flat database and Preload caches/ All of them` ### [Erigon]: :construction: In [perfnet2-Erigon-Teku](https://grafana.observability.ethpandaops.io/d/b42a61d7-02b1-416c-8ab4-b9c864356174-v2/erigon-internals-v2?orgId=1&from=now-12h&to=now&timezone=browser&var-quantile=0.97&var-instance=perf-devnet-2-teku-erigon-1&var-nodo=$__all&refresh=30s) - Overall sync duration: `Blocks Execution/Time` in initial cycle - Start-End DB size: `Database/DB Size and Table Sizes` - R/W perf: `Commit Speed`, `Commit`, `DB Pages Ops/sec`, `Read/Write syscall/sec`, `Disk bytes/sec`. ### [Reth] :white_check_mark: - Overall sync duration: In `Reth-overview`: - `Overview/ Sync progress` - `Overview/ ` - Start-End DB size: In `Nethermind-imported`: - `Database/ All of them` - Perf: 🤷 **Not exactly what we want. Better than nothing**. See Geth as example. In `Nethermind-imported`: - `Data/ All of them` # Compaction - Compaction start/end time. - Compaction count. - IO perf when and when not in compaction. - R/W performance for all ops. - For each block * Best/Worst/Avg Read time * Best/Worst/Avg Write time ## Comments ### [Geth] :white_check_mark: - R/W perf: :white_check_mark: **Geth should just be the standard. Is impressive how much data it reports.** In `Geth: Multiple` - `System/IOWait` - `System/Disk read ops` - `System/Disk reads` - `System/Disk write ops` - `System/Disk writes` - `Database/ All of them` In `Geth: Dual` - `Storage/ All of them` - `Clean cache hit rate` - `Clean cache hits` - `Clean cache write rate` - `Clean cache reads` - `Clean cache miss rate` - `Clean cache misses` - `Dirty cache read rate` - `Clean cache writes` - `Dirty cache hit rate` - `Dirty cache hit depth` - `Dirty cache write rate` - `Dirty cache reads` - `Dirty cache miss rate` - `Dirty cache misses` - `Fast sync bloom misses` - `Dirty cache writes` - `Trie prefetcher account loads` - `Trie prefetcher account duplicate loads` - `Trie prefetcher account skips` - `Trie prefetcher account wastes` - `Trie prefetcher storage loads` - `Trie prefetcher storage duplicate loads` - `Trie prefetcher storage skips` - `Trie prefetcher storage wastes ` In `Geth: Single` - `Database/ All of them` ### [Nethermind] - Compaction start/end time: :x: - Compaction count: :x: - IO perf when and when not in compaction: 🤷 **Not exactly what we want. Better than nothing**. See Geth as example. In `Nethermind-imported`: - `Pruning/ All of them except timing` - `Data/ All of them` - R/W performance for all ops. :x: ### [Besu] :construction: Claimed they have the metrics and need to expose the feature. - Compaction start/end time: :white_check_mark: - Compaction count: :white_check_mark: In `Besu Full (Performance)` - `RocksDB metrics/ All of them` - IO perf when and when not in compaction: 🤷 **Not exactly what we want. Better than nothing**. See Geth as example. In `Besu Full`: - `I/O Usage Read / Write` - R/W performance for all ops. :x: We can obtain more data from node exporter. But not done. ### [Erigon] :white_check_mark: : In [perfnet2-Erigon-Teku](https://grafana.observability.ethpandaops.io/d/b42a61d7-02b1-416c-8ab4-b9c864356174-v2/erigon-internals-v2?orgId=1&from=now-12h&to=now&timezone=browser&var-quantile=0.97&var-instance=perf-devnet-2-teku-erigon-1&var-nodo=$__all&refresh=30s) - Prune start/end time: `Prune, seconds` - IO perf when and when not in prunning: `State: Collate/Prune/Merge/Commitment`, `State: running collate/merge/prune` - R/W perf: `Commit Speed`, `Commit`, `DB Pages Ops/sec`, `Read/Write syscall/sec`, `Disk bytes/sec`. ### [Reth] Doesn't apply :white_check_mark: