From 3e8f78c1fa5c1b3e6b123caf8cbd279cd7e933d0 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Fri, 8 Dec 2023 13:21:34 +0000 Subject: [PATCH] virtual_file metrics: expose max size of the fd cache And also leave a comment on how to determine current size. Kind of follow-up to #6066 refs https://github.com/neondatabase/cloud/issues/8351 refs https://github.com/neondatabase/neon/issues/5479 --- pageserver/src/metrics.rs | 19 +++++++++++++++++++ pageserver/src/virtual_file.rs | 1 + 2 files changed, 20 insertions(+) diff --git a/pageserver/src/metrics.rs b/pageserver/src/metrics.rs index dc7f89cf3a..63fa858d55 100644 --- a/pageserver/src/metrics.rs +++ b/pageserver/src/metrics.rs @@ -891,6 +891,25 @@ pub(crate) static STORAGE_IO_SIZE: Lazy = Lazy::new(|| { ) .expect("failed to define a metric") }); + +pub(crate) mod virtual_file_descriptor_cache { + use super::*; + + pub(crate) static SIZE_MAX: Lazy = Lazy::new(|| { + register_uint_gauge!( + "pageserver_virtual_file_descriptor_cache_size_max", + "Maximum number of open file descriptors in the cache." + ).unwrap() + }); + + // SIZE_CURRENT: derive it like so: + // ``` + // sum (pageserver_io_operations_seconds_count{operation=~"^(open|open-after-replace)$") + // -ignoring(operation) + // sum(pageserver_io_operations_seconds_count{operation=~"^(close|close-by-replace)$"} + // ``` +} + #[derive(Debug)] struct GlobalAndPerTimelineHistogram { global: Histogram, diff --git a/pageserver/src/virtual_file.rs b/pageserver/src/virtual_file.rs index ada7313ba7..9af0de546d 100644 --- a/pageserver/src/virtual_file.rs +++ b/pageserver/src/virtual_file.rs @@ -701,6 +701,7 @@ pub fn init(num_slots: usize) { if OPEN_FILES.set(OpenFiles::new(num_slots)).is_err() { panic!("virtual_file::init called twice"); } + crate::metrics::virtual_file_descriptor_cache::SIZE_MAX.set(num_slots as u64); } const TEST_MAX_FILE_DESCRIPTORS: usize = 10;