diff --git a/pageserver/src/metrics.rs b/pageserver/src/metrics.rs index a5644eb7de..fa8cd504d0 100644 --- a/pageserver/src/metrics.rs +++ b/pageserver/src/metrics.rs @@ -674,6 +674,15 @@ pub static WALRECEIVER_CANDIDATES_ADDED: Lazy = pub static WALRECEIVER_CANDIDATES_REMOVED: Lazy = Lazy::new(|| WALRECEIVER_CANDIDATES_EVENTS.with_label_values(&["remove"])); +pub static LAYER_GET_VALUE_RECONSTRUCT_DATA_SPAWN_BLOCKING_STARTED_COUNT: Lazy = + Lazy::new(|| { + register_int_counter!( + "pageserver_layer_get_value_reconstruct_data_spawn_blocking_started_count", + "Number of spawn_blocking calls made in Layer::get_value_reconstruct_data" + ) + .expect("failed to define a metric") + }); + pub static LAYER_GET_VALUE_RECONSTRUCT_DATA_SPAWN_BLOCKING_QUEUE_DELAY: Lazy = Lazy::new( || { register_histogram!( diff --git a/pageserver/src/tenant/storage_layer.rs b/pageserver/src/tenant/storage_layer.rs index f17d139681..39fd4aae75 100644 --- a/pageserver/src/tenant/storage_layer.rs +++ b/pageserver/src/tenant/storage_layer.rs @@ -412,6 +412,7 @@ pub trait Layer: std::fmt::Debug + Send + Sync + 'static { ctx, )) } else { + crate::metrics::LAYER_GET_VALUE_RECONSTRUCT_DATA_SPAWN_BLOCKING_STARTED_COUNT.inc(); tokio::task::spawn_blocking(move || { crate::metrics::LAYER_GET_VALUE_RECONSTRUCT_DATA_SPAWN_BLOCKING_QUEUE_DELAY .observe(start.elapsed().as_secs_f64());