pub struct CpuCollector {
pid: Option<i32>,
prev: Option<Snapshot>,
cpu_source: CpuSource,
cfs_quota: CfsQuota,
effective_cores: f64,
carried_forward: HashSet<i32>,
aggregate_cpu_steal: bool,
}Fields§
§pid: Option<i32>Root PID of the process tree to track. None = system-only metrics.
prev: Option<Snapshot>§cpu_source: CpuSourceDetected CPU accounting source for system-level utilization.
cfs_quota: CfsQuotaCFS quota limit (None = unlimited).
effective_cores: f64Effective number of cores for this environment. Respects CFS quota: min(physical_cores, quota_cores).
carried_forward: HashSet<i32>PIDs whose prev entries were carried forward from the previous
interval (their /proc/PID/stat read failed). Limited to one
hop so dead PIDs don’t accumulate and inflate the exited correction.
aggregate_cpu_steal: boolUse aggregated value or per-CPU value. Comes from CLI arg or config.
Implementations§
Source§impl CpuCollector
impl CpuCollector
pub fn new(pid: Option<i32>, aggregate_cpu_steal: bool) -> Self
Sourcepub fn set_tracked_pid(&mut self, pid: Option<i32>)
pub fn set_tracked_pid(&mut self, pid: Option<i32>)
Set the root PID for process-tree metrics (called after shell-wrapper spawn).
pub fn collect(&mut self) -> Result<CpuMetrics, Box<dyn Error>>
fn read_process_count(&self) -> u32
fn is_pid_directory(entry: &DirEntry) -> bool
fn read_process_ticks(&self) -> HashMap<i32, (u64, u64)>
fn read_process_io( &self, proc_ticks: &HashMap<i32, (u64, u64)>, ) -> HashMap<i32, (u64, u64)>
fn read_process_memory( &self, proc_ticks: &HashMap<i32, (u64, u64)>, ) -> (Option<u64>, Option<u64>)
fn build_first_metrics( &self, curr: &Snapshot, process_count: u32, process_pss_mib: Option<u64>, process_rss_mib: Option<u64>, ) -> CpuMetrics
fn build_subsequent_metrics_with_deltas( &self, prev: &Snapshot, curr: &mut Snapshot, process_count: u32, tps: f64, process_pss_mib: Option<u64>, process_rss_mib: Option<u64>, ) -> CpuMetrics
fn calculate_system_cpu_deltas( &self, prev: &Snapshot, curr: &Snapshot, tps: f64, ) -> (f64, f64)
fn calculate_per_core_utilization( &self, prev: &Snapshot, curr: &Snapshot, ) -> Vec<f64>
fn calculate_cgroup_usage( &self, prev: &Snapshot, curr: &Snapshot, elapsed: f64, ) -> (Option<f64>, Option<f64>)
fn calculate_exited_child_ticks( &self, prev: &Snapshot, curr: &Snapshot, ) -> (u64, u64)
fn calculate_process_utime_delta( &self, prev: &Snapshot, curr: &Snapshot, exited_utime: u64, tps: f64, ) -> Option<f64>
fn calculate_process_stime_delta( &self, prev: &Snapshot, curr: &Snapshot, exited_stime: u64, tps: f64, ) -> Option<f64>
fn calculate_steal_time_secs( &self, prev: &Snapshot, curr: &Snapshot, tps: f64, ) -> f64
fn calculate_steal_time_pct(&self, prev: &Snapshot, curr: &Snapshot) -> f64
fn calculate_per_core_steal_pct( &self, prev: &Snapshot, curr: &Snapshot, ) -> Vec<f64>
fn calculate_process_cores_used_with_caps( &self, process_utime_secs: &Option<f64>, process_stime_secs: &Option<f64>, prev: &Snapshot, curr: &Snapshot, elapsed: f64, n_cores: usize, ) -> Option<f64>
fn calculate_disk_read_delta( &self, prev: &Snapshot, curr: &Snapshot, ) -> Option<u64>
fn calculate_disk_write_delta( &self, prev: &Snapshot, curr: &Snapshot, ) -> Option<u64>
fn carry_forward_entries(&mut self, curr: &mut Snapshot)
Auto Trait Implementations§
impl Freeze for CpuCollector
impl RefUnwindSafe for CpuCollector
impl Send for CpuCollector
impl Sync for CpuCollector
impl Unpin for CpuCollector
impl UnsafeUnpin for CpuCollector
impl UnwindSafe for CpuCollector
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more