Skip to content
This repository was archived by the owner on Jan 22, 2025. It is now read-only.

Commit 476124d

Browse files
AcctIdx: report disk bucket stats (#20120)
1 parent f7eebad commit 476124d

File tree

2 files changed

+99
-9
lines changed

2 files changed

+99
-9
lines changed

bucket_map/src/bucket_storage.rs

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ impl BucketStorage {
251251
capacity_pow2: u8,
252252
stats: &mut Arc<BucketStats>,
253253
) -> (MmapMut, PathBuf) {
254-
let mut m0 = Measure::start("");
254+
let mut measure_new_file = Measure::start("measure_new_file");
255255
let capacity = 1u64 << capacity_pow2;
256256
let r = thread_rng().gen_range(0, drives.len());
257257
let drive = &drives[r];
@@ -280,16 +280,22 @@ impl BucketStorage {
280280
.unwrap();
281281
data.write_all(&[0]).unwrap();
282282
data.seek(SeekFrom::Start(0)).unwrap();
283-
m0.stop();
284-
let mut m1 = Measure::start("");
283+
measure_new_file.stop();
284+
let mut measure_flush = Measure::start("measure_flush");
285285
data.flush().unwrap(); // can we skip this?
286-
m1.stop();
287-
let mut m2 = Measure::start("");
286+
measure_flush.stop();
287+
let mut measure_mmap = Measure::start("measure_mmap");
288288
let res = (unsafe { MmapMut::map_mut(&data).unwrap() }, file);
289-
m2.stop();
290-
stats.new_file_us.fetch_add(m0.as_us(), Ordering::Relaxed);
291-
stats.flush_file_us.fetch_add(m0.as_us(), Ordering::Relaxed);
292-
stats.mmap_us.fetch_add(m0.as_us(), Ordering::Relaxed);
289+
measure_mmap.stop();
290+
stats
291+
.new_file_us
292+
.fetch_add(measure_new_file.as_us(), Ordering::Relaxed);
293+
stats
294+
.flush_file_us
295+
.fetch_add(measure_flush.as_us(), Ordering::Relaxed);
296+
stats
297+
.mmap_us
298+
.fetch_add(measure_mmap.as_us(), Ordering::Relaxed);
293299
res
294300
}
295301

runtime/src/bucket_map_holder_stats.rs

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ impl BucketMapHolderStats {
9696
max = std::cmp::max(max, d);
9797
}
9898

99+
let disk = storage.disk.as_ref();
100+
99101
datapoint_info!(
100102
"accounts_index",
101103
(
@@ -181,6 +183,88 @@ impl BucketMapHolderStats {
181183
self.flush_remove_us.swap(0, Ordering::Relaxed),
182184
i64
183185
),
186+
(
187+
"disk_index_resizes",
188+
disk.map(|disk| disk.stats.index.resizes.swap(0, Ordering::Relaxed))
189+
.unwrap_or_default(),
190+
i64
191+
),
192+
(
193+
"disk_index_max_size",
194+
disk.map(|disk| {
195+
let mut lock = disk.stats.index.max_size.lock().unwrap();
196+
let value = *lock;
197+
*lock = 0;
198+
value
199+
})
200+
.unwrap_or_default(),
201+
i64
202+
),
203+
(
204+
"disk_index_new_file_us",
205+
disk.map(|disk| disk.stats.index.new_file_us.swap(0, Ordering::Relaxed))
206+
.unwrap_or_default(),
207+
i64
208+
),
209+
(
210+
"disk_index_resize_us",
211+
disk.map(|disk| disk.stats.index.resize_us.swap(0, Ordering::Relaxed))
212+
.unwrap_or_default(),
213+
i64
214+
),
215+
(
216+
"disk_index_flush_file_us",
217+
disk.map(|disk| disk.stats.index.flush_file_us.swap(0, Ordering::Relaxed))
218+
.unwrap_or_default(),
219+
i64
220+
),
221+
(
222+
"disk_index_flush_mmap_us",
223+
disk.map(|disk| disk.stats.index.mmap_us.swap(0, Ordering::Relaxed))
224+
.unwrap_or_default(),
225+
i64
226+
),
227+
(
228+
"disk_data_resizes",
229+
disk.map(|disk| disk.stats.data.resizes.swap(0, Ordering::Relaxed))
230+
.unwrap_or_default(),
231+
i64
232+
),
233+
(
234+
"disk_data_max_size",
235+
disk.map(|disk| {
236+
let mut lock = disk.stats.data.max_size.lock().unwrap();
237+
let value = *lock;
238+
*lock = 0;
239+
value
240+
})
241+
.unwrap_or_default(),
242+
i64
243+
),
244+
(
245+
"disk_data_new_file_us",
246+
disk.map(|disk| disk.stats.data.new_file_us.swap(0, Ordering::Relaxed))
247+
.unwrap_or_default(),
248+
i64
249+
),
250+
(
251+
"disk_data_resize_us",
252+
disk.map(|disk| disk.stats.data.resize_us.swap(0, Ordering::Relaxed))
253+
.unwrap_or_default(),
254+
i64
255+
),
256+
(
257+
"disk_data_flush_file_us",
258+
disk.map(|disk| disk.stats.data.flush_file_us.swap(0, Ordering::Relaxed))
259+
.unwrap_or_default(),
260+
i64
261+
),
262+
(
263+
"disk_data_flush_mmap_us",
264+
disk.map(|disk| disk.stats.data.mmap_us.swap(0, Ordering::Relaxed))
265+
.unwrap_or_default(),
266+
i64
267+
),
184268
(
185269
"flush_entries_updated_on_disk",
186270
self.flush_entries_updated_on_disk

0 commit comments

Comments
 (0)