[][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 psi::*;

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
}

Monitor Example

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

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