Skip to content

Commit 87774bf

Browse files
starknet_committer: add number of modifications to BlockMeasurement and impl set function
1 parent 3f611bf commit 87774bf

File tree

5 files changed

+71
-3
lines changed

5 files changed

+71
-3
lines changed

crates/apollo_committer/src/committer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ impl ComponentStarter for ApolloCommitter {
449449
}
450450
}
451451

452-
fn update_metrics(BlockMeasurement { n_reads, n_writes, durations }: &BlockMeasurement) {
452+
fn update_metrics(BlockMeasurement { n_reads, n_writes, durations, .. }: &BlockMeasurement) {
453453
READ_DURATION_PER_BLOCK.set_lossy(durations.read);
454454
READ_DURATION_PER_BLOCK_HIST.record_lossy(durations.read);
455455
READ_DB_ENTRIES_PER_BLOCK.set_lossy(*n_reads);

crates/starknet_committer/src/block_committer/commit.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ use tracing::{info, warn};
77

88
use crate::block_committer::errors::BlockCommitmentError;
99
use crate::block_committer::input::{contract_address_into_node_index, Input, StateDiff};
10-
use crate::block_committer::measurements_util::{Action, MeasurementsTrait};
10+
use crate::block_committer::measurements_util::{
11+
Action,
12+
BlockModificationsCounts,
13+
MeasurementsTrait,
14+
};
1115
use crate::db::forest_trait::ForestReader;
1216
use crate::forest::filled_forest::FilledForest;
1317
use crate::forest::forest_errors::ForestError;
@@ -29,6 +33,7 @@ pub trait CommitBlockTrait: Send {
2933
) -> BlockCommitmentResult<FilledForest> {
3034
let (mut storage_tries_indices, mut contracts_trie_indices, mut classes_trie_indices) =
3135
get_all_modified_indices(&input.state_diff);
36+
let n_contracts_trie_modifications = contracts_trie_indices.len();
3237
let forest_sorted_indices = ForestSortedIndices {
3338
storage_tries_sorted_indices: storage_tries_indices
3439
.iter_mut()
@@ -39,6 +44,14 @@ pub trait CommitBlockTrait: Send {
3944
};
4045
let actual_storage_updates = input.state_diff.actual_storage_updates();
4146
let actual_classes_updates = input.state_diff.actual_classes_updates();
47+
// Record the number of modifications.
48+
let n_storage_tries_modifications =
49+
actual_storage_updates.values().map(|value| value.len()).sum();
50+
measurements.set_number_of_modifications(BlockModificationsCounts {
51+
storage_tries: n_storage_tries_modifications,
52+
contracts_trie: n_contracts_trie_modifications,
53+
classes_trie: actual_classes_updates.len(),
54+
});
4255
// Reads - fetch_nodes.
4356

4457
measurements.start_measurement(Action::Read);

crates/starknet_committer/src/block_committer/measurements_util.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ pub trait MeasurementsTrait {
6161
action: Action,
6262
entries_count: usize,
6363
) -> Result<u128, MeasurementNotStartedError>;
64+
65+
fn set_number_of_modifications(&mut self, block_modifications_counts: BlockModificationsCounts);
6466
}
6567

6668
pub struct NoMeasurements;
@@ -75,6 +77,12 @@ impl MeasurementsTrait for NoMeasurements {
7577
) -> Result<u128, MeasurementNotStartedError> {
7678
Err(MeasurementNotStartedError)
7779
}
80+
81+
fn set_number_of_modifications(
82+
&mut self,
83+
_block_modifications_counts: BlockModificationsCounts,
84+
) {
85+
}
7886
}
7987

8088
#[derive(Default, Clone)]
@@ -85,11 +93,19 @@ pub struct BlockDurations {
8593
pub write: u128, // Duration of a write phase (milliseconds).
8694
}
8795

96+
#[derive(Default, Clone, Debug, PartialEq, Eq)]
97+
pub struct BlockModificationsCounts {
98+
pub storage_tries: usize,
99+
pub contracts_trie: usize,
100+
pub classes_trie: usize,
101+
}
102+
88103
#[derive(Default, Clone)]
89104
pub struct BlockMeasurement {
90105
pub n_writes: usize,
91106
pub n_reads: usize,
92107
pub durations: BlockDurations,
108+
pub modifications_counts: BlockModificationsCounts,
93109
}
94110

95111
impl BlockMeasurement {
@@ -138,4 +154,11 @@ impl MeasurementsTrait for SingleBlockMeasurements {
138154
self.block_measurement.update_after_action(&action, entries_count, duration_in_millis);
139155
Ok(duration_in_millis)
140156
}
157+
158+
fn set_number_of_modifications(
159+
&mut self,
160+
block_modifications_counts: BlockModificationsCounts,
161+
) {
162+
self.block_measurement.modifications_counts = block_modifications_counts;
163+
}
141164
}

crates/starknet_committer_cli/src/utils.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use starknet_api::hash::HashOutput;
88
use starknet_committer::block_committer::measurements_util::{
99
Action,
1010
BlockMeasurement,
11+
BlockModificationsCounts,
1112
MeasurementNotStartedError,
1213
MeasurementsTrait,
1314
SingleBlockMeasurements,
@@ -75,6 +76,13 @@ impl MeasurementsTrait for BenchmarkMeasurements {
7576
}
7677
Ok(duration_in_millis)
7778
}
79+
80+
fn set_number_of_modifications(
81+
&mut self,
82+
block_modifications_counts: BlockModificationsCounts,
83+
) {
84+
self.current_measurement.set_number_of_modifications(block_modifications_counts);
85+
}
7886
}
7987

8088
impl BenchmarkMeasurements {
@@ -185,6 +193,9 @@ impl BenchmarkMeasurements {
185193
"read_duration_millis",
186194
"compute_duration_millis",
187195
"write_duration_millis",
196+
"n_storage_tries_modifications",
197+
"n_contracts_trie_modifications",
198+
"n_classes_trie_modifications",
188199
],
189200
self.storage_stat_columns.clone(),
190201
]
@@ -206,6 +217,9 @@ impl BenchmarkMeasurements {
206217
measurement.durations.read.to_string(),
207218
measurement.durations.compute.to_string(),
208219
measurement.durations.write.to_string(),
220+
measurement.modifications_counts.storage_tries.to_string(),
221+
measurement.modifications_counts.contracts_trie.to_string(),
222+
measurement.modifications_counts.classes_trie.to_string(),
209223
];
210224
if i == n_results - 1 {
211225
record

crates/starknet_committer_cli/src/utils_test.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
use std::time::Duration;
22

3-
use starknet_committer::block_committer::measurements_util::{Action, MeasurementsTrait};
3+
use starknet_committer::block_committer::measurements_util::{
4+
Action,
5+
BlockModificationsCounts,
6+
MeasurementsTrait,
7+
};
48
use tokio::time::sleep;
59

610
use crate::utils::BenchmarkMeasurements;
@@ -10,8 +14,14 @@ const COMPUTE_DURATION: u64 = 100;
1014
const WRITE_DURATION: u64 = 100;
1115
const N_READ_ENTRIES: usize = 100;
1216
const N_WRITE_ENTRIES: usize = 100;
17+
const N_MODIFICATIONS: usize = 100;
1318

1419
async fn measure_block(measurements: &mut BenchmarkMeasurements) {
20+
measurements.set_number_of_modifications(BlockModificationsCounts {
21+
storage_tries: N_MODIFICATIONS,
22+
contracts_trie: N_MODIFICATIONS,
23+
classes_trie: N_MODIFICATIONS,
24+
});
1525
measurements.start_measurement(Action::EndToEnd);
1626
measurements.start_measurement(Action::Read);
1727
sleep(Duration::from_millis(READ_DURATION)).await;
@@ -54,6 +64,14 @@ fn assert_block_measurement(measurements: &BenchmarkMeasurements, number_of_bloc
5464
assert_eq!(measurement.n_writes, N_WRITE_ENTRIES);
5565
assert_eq!(measurement.n_reads, N_READ_ENTRIES);
5666
assert_eq!(*db_entry_count, N_WRITE_ENTRIES * i);
67+
assert_eq!(
68+
measurement.modifications_counts,
69+
BlockModificationsCounts {
70+
storage_tries: N_MODIFICATIONS,
71+
contracts_trie: N_MODIFICATIONS,
72+
classes_trie: N_MODIFICATIONS
73+
}
74+
);
5775
}
5876
}
5977

0 commit comments

Comments
 (0)