[][src]Crate psi

Linux Pressure Stall Information (PSI) support for Rust.

About

The Linux Pressure Stall Information (PSI) feature provides real-time pressure information for CPU, IO and memory. psi is a rust library for reading PSI and monitoring for pressure thresholds on Linux 4.20+.

Example

use crate::psi::*;

fn example() -> Result<()> {
    let all: AllPsiStats = PsiKind::Memory.read_psi()?;
    if all.some.avg10 > 0.1f32 {
        // do something
    }
    let full: Psi = PsiKind::Memory.read_psi_line(PsiLine::Full)?;
    if full.avg60 > 0.1f32 {
        // do something else
    }
    Ok(())
}

Monitor Example

use std::time::Duration;
use crate::psi::*;

fn example() -> Result<()> {
    let mut monitor = PsiMonitor::new()?;
    let oom_id = monitor.add_trigger(
        Trigger::new_builder()
            .memory()
            .full()
            .stall(Duration::from_millis(100))
            .window(Duration::from_millis(500))
            .build(),
    )?;

    loop {
        let psi_event: PsiEvent = monitor.wait_single()?;
        // react to psi_event
    }
}

TODO

  • cgroup2 support

Re-exports

pub use crate::psi::AllPsiStats;
pub use crate::psi::Psi;
pub use crate::psi::PsiKind;
pub use crate::psi::PsiLine;
pub use error::PsiError;
pub use error::Result;
pub use monitor::PsiEvent;
pub use monitor::PsiMonitor;
pub use monitor::TriggerId;
pub use trigger::Trigger;

Modules

error
monitor
psi
trigger