From 296c51d1f30fa21b931ab888eb47085f1ddf3e82 Mon Sep 17 00:00:00 2001 From: Croxx Date: Mon, 10 Jul 2023 14:06:49 +0800 Subject: [PATCH] chore: remove old metrics, reclaim drop indices first (#60) Signed-off-by: MrCroxx --- foyer-storage/src/reclaimer.rs | 8 +-- foyer/src/lib.rs | 2 - foyer/src/metrics.rs | 109 --------------------------------- 3 files changed, 4 insertions(+), 115 deletions(-) delete mode 100644 foyer/src/metrics.rs diff --git a/foyer-storage/src/reclaimer.rs b/foyer-storage/src/reclaimer.rs index 71318eec..d77cda22 100644 --- a/foyer-storage/src/reclaimer.rs +++ b/foyer-storage/src/reclaimer.rs @@ -188,7 +188,10 @@ where let region = self.region_manager.region(&task.region_id); - // keep region totally exclusive while reclamation + // step 1: drop indices + let _indices = self.indices.take_region(&task.region_id); + + // after drop indices and acquire exclusive lock, no writers or readers are supposed to access the region let guard = region.exclusive(false, false, false).await; tracing::trace!( @@ -199,9 +202,6 @@ where guard.physical_readers() ); - // step 1: drop indices - let _indices = self.indices.take_region(&task.region_id); - // step 2: do reinsertion // TODO(MrCroxx): do reinsertion diff --git a/foyer/src/lib.rs b/foyer/src/lib.rs index 494f718a..0392500f 100644 --- a/foyer/src/lib.rs +++ b/foyer/src/lib.rs @@ -15,8 +15,6 @@ #![feature(trait_alias)] #![feature(pattern)] -mod metrics; - pub trait Weight { fn weight(&self) -> usize; } diff --git a/foyer/src/metrics.rs b/foyer/src/metrics.rs deleted file mode 100644 index 09f92107..00000000 --- a/foyer/src/metrics.rs +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2023 MrCroxx -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -use prometheus::{ - register_counter_vec_with_registry, register_gauge_with_registry, - register_histogram_vec_with_registry, register_int_counter_with_registry, Counter, CounterVec, - Gauge, Histogram, HistogramVec, IntCounter, Registry, -}; - -pub struct Metrics { - pub latency_insert: Histogram, - pub latency_get: Histogram, - pub latency_remove: Histogram, - - pub latency_store: Histogram, - pub latency_load: Histogram, - pub latency_delete: Histogram, - - pub bytes_store: Counter, - pub bytes_load: Counter, - pub bytes_delete: Counter, - - pub cache_data_size: Gauge, - - pub miss: IntCounter, - - _latency: HistogramVec, - _bytes: CounterVec, -} - -impl Default for Metrics { - fn default() -> Self { - Self::new(Registry::new()) - } -} - -impl Metrics { - pub fn new(registry: Registry) -> Self { - let latency = register_histogram_vec_with_registry!( - "foyer_latency", - "foyer latency", - &["op"], - vec![ - 0.0001, 0.001, 0.005, 0.01, 0.02, 0.03, 0.04, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, - 1.0 - ], - registry - ) - .unwrap(); - - let bytes = - register_counter_vec_with_registry!("foyer_bytes", "foyer bytes", &["op"], registry) - .unwrap(); - - let latency_insert = latency.with_label_values(&["insert"]); - let latency_get = latency.with_label_values(&["get"]); - let latency_remove = latency.with_label_values(&["remove"]); - - let latency_store = latency.with_label_values(&["store"]); - let latency_load = latency.with_label_values(&["load"]); - let latency_delete = latency.with_label_values(&["delete"]); - - let bytes_store = bytes.with_label_values(&["store"]); - let bytes_load = bytes.with_label_values(&["load"]); - let bytes_delete = bytes.with_label_values(&["delete"]); - - let miss = - register_int_counter_with_registry!("foyer_cache_miss", "foyer cache miss", registry) - .unwrap(); - let cache_data_size = register_gauge_with_registry!( - "foyer_cache_data_size", - "foyer cache data size", - registry - ) - .unwrap(); - - Self { - latency_insert, - latency_get, - latency_remove, - - latency_store, - latency_load, - latency_delete, - - bytes_store, - bytes_load, - bytes_delete, - - cache_data_size, - - miss, - - _latency: latency, - _bytes: bytes, - } - } -}