# 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: