2个版本
0.1.1 | 2020年5月17日 |
---|---|
0.1.0 | 2020年5月17日 |
#500 in 操作系统
54KB
1.5K SLoC
taskstats-rs
此crate提供了Linux 任务统计接口的高级封装。
目前仅在Taskstats
结构体中公开了有限的信息,但可以轻松添加新字段以供未来版本使用。如果您觉得taskstats
结构体中的其他字段对您有用,请随时提交PR添加它们。
示例
查询任务的聚合taskstats
let mut conn = TaskstatsConnection::new()?;
let stats = conn.get_pid_stats(1)?;
// ...
监听已退出任务的taskstats
let conn = TaskstatsConnection::new()?;
let cpu_mask = CString::new("0-7\0".to_owned()).unwrap().into_boxed_c_str();
let mut listener = TaskstatsListener::register(conn, cpu_mask)?;
loop {
let (pid, stats) = listener.get_next()?;
// ...
}
开发
raw.rs
文件在src
、src/netlink
和src/genetlink
中生成,然后手动调整以适应需求。
注意
此crate仅公开pid/任务统计信息,但不公开tgid/进程,因为内核并没有传递很多有用的tgid信息。建议您依赖于pid统计信息,并手动对进程进行汇总。
依赖
~2.5MB
~53K SLoC