reth_trie_parallel/
metrics.rs
1use 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}