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::new_with_labels(&[("type", "root")]),
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.record(stats);
32    }
33}
34
35#[derive(Metrics)]
37#[metrics(scope = "trie_parallel")]
38pub struct ParallelTrieMetrics {
39    pub precomputed_storage_roots: Histogram,
41    pub missed_leaves: Histogram,
43}
44
45impl ParallelTrieMetrics {
46    pub fn record(&self, stats: ParallelTrieStats) {
48        self.precomputed_storage_roots.record(stats.precomputed_storage_roots() as f64);
49        self.missed_leaves.record(stats.missed_leaves() as f64);
50    }
51}