Skip to content

Commit ed7f57c

Browse files
starknet_committer: add number of modifications to BlockMeasurement and impl set function
1 parent f353436 commit ed7f57c

File tree

5 files changed

+80
-2
lines changed

5 files changed

+80
-2
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: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ pub trait CommitBlockTrait: Send {
2929
) -> BlockCommitmentResult<FilledForest> {
3030
let (mut storage_tries_indices, mut contracts_trie_indices, mut classes_trie_indices) =
3131
get_all_modified_indices(&input.state_diff);
32+
let n_contracts_trie_modifications = contracts_trie_indices.len();
3233
let forest_sorted_indices = ForestSortedIndices {
3334
storage_tries_sorted_indices: storage_tries_indices
3435
.iter_mut()
@@ -39,6 +40,14 @@ pub trait CommitBlockTrait: Send {
3940
};
4041
let actual_storage_updates = input.state_diff.actual_storage_updates();
4142
let actual_classes_updates = input.state_diff.actual_classes_updates();
43+
// Record the number of modifications.
44+
let n_storage_tries_modifications =
45+
actual_storage_updates.values().map(|value| value.len()).sum();
46+
measurements.set_number_of_modifications(
47+
n_storage_tries_modifications,
48+
n_contracts_trie_modifications,
49+
actual_classes_updates.len(),
50+
);
4251
// Reads - fetch_nodes.
4352

4453
measurements.start_measurement(Action::Read);

crates/starknet_committer/src/block_committer/measurements_util.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@ pub trait MeasurementsTrait {
6161
action: Action,
6262
entries_count: usize,
6363
) -> Result<u128, MeasurementNotStartedError>;
64+
65+
fn set_number_of_modifications(
66+
&mut self,
67+
n_storage_tries_modifications: usize,
68+
n_contracts_trie_modifications: usize,
69+
n_classes_trie_modifications: usize,
70+
);
6471
}
6572

6673
pub struct NoMeasurements;
@@ -75,6 +82,14 @@ impl MeasurementsTrait for NoMeasurements {
7582
) -> Result<u128, MeasurementNotStartedError> {
7683
Err(MeasurementNotStartedError)
7784
}
85+
86+
fn set_number_of_modifications(
87+
&mut self,
88+
_n_storage_tries_modifications: usize,
89+
_n_contracts_trie_modifications: usize,
90+
_n_classes_trie_modifications: usize,
91+
) {
92+
}
7893
}
7994

8095
#[derive(Default, Clone)]
@@ -85,11 +100,19 @@ pub struct BlockDurations {
85100
pub write: u128, // Duration of a write phase (milliseconds).
86101
}
87102

103+
#[derive(Default, Clone, Debug, PartialEq, Eq)]
104+
pub struct BlockModificationsCounts {
105+
pub storage_tries: usize,
106+
pub contracts_trie: usize,
107+
pub classes_trie: usize,
108+
}
109+
88110
#[derive(Default, Clone)]
89111
pub struct BlockMeasurement {
90112
pub n_writes: usize,
91113
pub n_reads: usize,
92114
pub durations: BlockDurations,
115+
pub modifications_counts: BlockModificationsCounts,
93116
}
94117

95118
impl BlockMeasurement {
@@ -138,4 +161,17 @@ impl MeasurementsTrait for SingleBlockMeasurements {
138161
self.block_measurement.update_after_action(&action, entries_count, duration_in_millis);
139162
Ok(duration_in_millis)
140163
}
164+
165+
fn set_number_of_modifications(
166+
&mut self,
167+
n_storage_tries_modifications: usize,
168+
n_contracts_trie_modifications: usize,
169+
n_classes_trie_modifications: usize,
170+
) {
171+
self.block_measurement.modifications_counts = BlockModificationsCounts {
172+
storage_tries: n_storage_tries_modifications,
173+
contracts_trie: n_contracts_trie_modifications,
174+
classes_trie: n_classes_trie_modifications,
175+
};
176+
}
141177
}

crates/starknet_committer_cli/src/utils.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,19 @@ impl MeasurementsTrait for BenchmarkMeasurements {
7575
}
7676
Ok(duration_in_millis)
7777
}
78+
79+
fn set_number_of_modifications(
80+
&mut self,
81+
n_storage_tries_modifications: usize,
82+
n_contracts_trie_modifications: usize,
83+
n_classes_trie_modifications: usize,
84+
) {
85+
self.current_measurement.set_number_of_modifications(
86+
n_storage_tries_modifications,
87+
n_contracts_trie_modifications,
88+
n_classes_trie_modifications,
89+
);
90+
}
7891
}
7992

8093
impl BenchmarkMeasurements {
@@ -185,6 +198,9 @@ impl BenchmarkMeasurements {
185198
"read_duration_millis",
186199
"compute_duration_millis",
187200
"write_duration_millis",
201+
"n_storage_tries_modifications",
202+
"n_contracts_trie_modifications",
203+
"n_classes_trie_modifications",
188204
],
189205
self.storage_stat_columns.clone(),
190206
]
@@ -206,6 +222,9 @@ impl BenchmarkMeasurements {
206222
measurement.durations.read.to_string(),
207223
measurement.durations.compute.to_string(),
208224
measurement.durations.write.to_string(),
225+
measurement.modifications_counts.storage_tries.to_string(),
226+
measurement.modifications_counts.contracts_trie.to_string(),
227+
measurement.modifications_counts.classes_trie.to_string(),
209228
];
210229
if i == n_results - 1 {
211230
record

crates/starknet_committer_cli/src/utils_test.rs

Lines changed: 15 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,10 @@ 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(N_MODIFICATIONS, N_MODIFICATIONS, N_MODIFICATIONS);
1521
measurements.start_measurement(Action::EndToEnd);
1622
measurements.start_measurement(Action::Read);
1723
sleep(Duration::from_millis(READ_DURATION)).await;
@@ -54,6 +60,14 @@ fn assert_block_measurement(measurements: &BenchmarkMeasurements, number_of_bloc
5460
assert_eq!(measurement.n_writes, N_WRITE_ENTRIES);
5561
assert_eq!(measurement.n_reads, N_READ_ENTRIES);
5662
assert_eq!(*db_entry_count, N_WRITE_ENTRIES * i);
63+
assert_eq!(
64+
measurement.modifications_counts,
65+
BlockModificationsCounts {
66+
storage_tries: N_MODIFICATIONS,
67+
contracts_trie: N_MODIFICATIONS,
68+
classes_trie: N_MODIFICATIONS
69+
}
70+
);
5771
}
5872
}
5973

0 commit comments

Comments
 (0)