diff --git a/mempool/src/core_mempool/mempool.rs b/mempool/src/core_mempool/mempool.rs index 172555eeea836..6c1925f5a12e0 100644 --- a/mempool/src/core_mempool/mempool.rs +++ b/mempool/src/core_mempool/mempool.rs @@ -8,7 +8,7 @@ use crate::{ core_mempool::{ index::TxnPointer, transaction::{InsertionInfo, MempoolTransaction, TimelineState}, - transaction_store::TransactionStore, + transaction_store::{sender_bucket, TransactionStore}, }, counters, logging::{LogEntry, LogSchema, TxnsLog}, @@ -319,6 +319,14 @@ impl Mempool { let now = aptos_infallible::duration_since_epoch().as_millis() as u64; if status.code == MempoolStatusCode::Accepted { + counters::SENDER_BUCKET_FREQUENCIES + .with_label_values(&[sender_bucket( + &sender, + self.transactions.num_sender_buckets(), + ) + .to_string() + .as_str()]) + .inc(); if let Some(ready_time_at_sender) = ready_time_at_sender { let bucket = self.transactions.get_bucket(ranking_score, &sender); counters::core_mempool_txn_commit_latency( diff --git a/mempool/src/core_mempool/transaction_store.rs b/mempool/src/core_mempool/transaction_store.rs index f69379d5ce806..6f7b1d6547b71 100644 --- a/mempool/src/core_mempool/transaction_store.rs +++ b/mempool/src/core_mempool/transaction_store.rs @@ -216,6 +216,10 @@ impl TransactionStore { self.sequence_numbers.get(address) } + pub(crate) fn num_sender_buckets(&self) -> MempoolSenderBucket { + self.num_sender_buckets + } + /// Insert transaction into TransactionStore. Performs validation checks and updates indexes. pub(crate) fn insert(&mut self, txn: MempoolTransaction) -> MempoolStatus { let address = txn.get_sender(); diff --git a/mempool/src/counters.rs b/mempool/src/counters.rs index 757721f238211..f88c6e06cc7be 100644 --- a/mempool/src/counters.rs +++ b/mempool/src/counters.rs @@ -141,6 +141,15 @@ pub fn core_mempool_index_size(label: &'static str, size: usize) { .set(size as i64) } +pub static SENDER_BUCKET_FREQUENCIES: Lazy = Lazy::new(|| { + register_int_gauge_vec!( + "aptos_core_mempool_sender_bucket_frequencies", + "Frequency of each sender bucket in core mempool", + &["sender_bucket"] + ) + .unwrap() +}); + /// Counter tracking size of each bucket in timeline index static CORE_MEMPOOL_TIMELINE_INDEX_SIZE: Lazy = Lazy::new(|| { register_int_gauge_vec!(