reth_trie_parallel/
metrics.rs1use crate::stats::ParallelTrieStats;
2use metrics::Histogram;
3use reth_metrics::Metrics;
4use reth_trie::metrics::{TrieRootMetrics, TrieType};
5
6#[derive(Debug)]
8pub struct ParallelStateRootMetrics {
9 pub state_trie: TrieRootMetrics,
11 pub parallel: ParallelTrieMetrics,
13 pub storage_trie: TrieRootMetrics,
15}
16
17impl Default for ParallelStateRootMetrics {
18 fn default() -> Self {
19 Self {
20 state_trie: TrieRootMetrics::new(TrieType::State),
21 parallel: ParallelTrieMetrics::default(),
22 storage_trie: TrieRootMetrics::new(TrieType::Storage),
23 }
24 }
25}
26
27impl ParallelStateRootMetrics {
28 pub fn record_state_trie(&self, stats: ParallelTrieStats) {
30 self.state_trie.record(stats.trie_stats());
31 self.parallel.precomputed_storage_roots.record(stats.precomputed_storage_roots() as f64);
32 self.parallel.missed_leaves.record(stats.missed_leaves() as f64);
33 }
34}
35
36#[derive(Metrics)]
38#[metrics(scope = "trie_parallel")]
39pub struct ParallelTrieMetrics {
40 pub precomputed_storage_roots: Histogram,
42 pub missed_leaves: Histogram,
44}