3个版本

0.1.2 2019年10月17日
0.1.1 2019年8月31日
0.1.0 2019年8月31日

#663 in Unix API

MPL-2.0 许可证

22KB
557

PSI (压力停滞信息)

用于处理Linux 4.20+上的PSI的实用程序。

Documentation Build Status Crate

用法

[dependencies]
psi = "0.1"

许可证

版权所有 © Chris Manning

本项目采用MPL-2.0许可证


lib.rs:

Linux压力停滞信息(PSI)对Rust的支持。

关于

Linux的压力停滞信息(PSI)功能为CPU、IO和内存提供实时压力信息。psi是一个用于读取PSI并在Linux 4.20+上监控压力阈值的Rust库。

示例

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(())
}

监控示例

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

待办事项

  • cgroup2支持

依赖

~115KB