parallel_processor/memory_fs/
stats.rs1use std::sync::atomic::{AtomicU64, Ordering};
2
3static MAX_DISK_USAGE: AtomicU64 = AtomicU64::new(0);
4static MAX_FILES_USAGE: AtomicU64 = AtomicU64::new(0);
5static CURRENT_DISK_USAGE: AtomicU64 = AtomicU64::new(0);
6static CURRENT_FILES_USAGE: AtomicU64 = AtomicU64::new(0);
7
8pub struct MemoryFsStats {
9 pub max_disk_usage: u64,
10 pub max_files_usage: u64,
11 pub current_disk_usage: u64,
12 pub current_files_usage: u64,
13}
14
15pub fn reset() {
16 MAX_DISK_USAGE.store(
17 CURRENT_DISK_USAGE.load(Ordering::Relaxed),
18 Ordering::Relaxed,
19 );
20 MAX_FILES_USAGE.store(
21 CURRENT_FILES_USAGE.load(Ordering::Relaxed),
22 Ordering::Relaxed,
23 );
24}
25
26pub fn get_stats() -> MemoryFsStats {
27 MemoryFsStats {
28 max_disk_usage: MAX_DISK_USAGE.load(Ordering::Relaxed),
29 max_files_usage: MAX_FILES_USAGE.load(Ordering::Relaxed),
30 current_disk_usage: CURRENT_DISK_USAGE.load(Ordering::Relaxed),
31 current_files_usage: CURRENT_FILES_USAGE.load(Ordering::Relaxed),
32 }
33}
34
35pub fn add_files_usage(usage: u64) {
36 let current = CURRENT_FILES_USAGE.fetch_add(usage, Ordering::Relaxed) + usage;
37 MAX_FILES_USAGE.fetch_max(current, Ordering::Relaxed);
38}
39
40pub fn decrease_files_usage(usage: u64) {
41 CURRENT_FILES_USAGE.fetch_sub(usage, Ordering::Relaxed);
42}
43
44pub fn add_disk_usage(usage: u64) {
45 let current = CURRENT_DISK_USAGE.fetch_add(usage, Ordering::Relaxed) + usage;
46 MAX_DISK_USAGE.fetch_max(current, Ordering::Relaxed);
47}
48
49pub fn decrease_disk_usage(usage: u64) {
50 CURRENT_DISK_USAGE.fetch_sub(usage, Ordering::Relaxed);
51}