parallel_processor/memory_fs/
stats.rs

1use 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}