Skip to main content

process_probe/
process_probe.rs

1use anyhow::Result;
2use gpu_histop::backend::create_backend;
3use gpu_histop::config::BackendChoice;
4
5fn main() -> Result<()> {
6    let mut backend = create_backend(BackendChoice::Auto)?;
7
8    for sample in backend.sample()? {
9        println!(
10            "GPU {}: {} process(es)",
11            sample.gpu_id,
12            sample.processes.len()
13        );
14        for process in sample.processes {
15            let user = process.user.as_deref().unwrap_or("?");
16            let command = process.command.as_deref().unwrap_or("?");
17            let memory = process
18                .used_gpu_memory_bytes
19                .map(|bytes| format!("{:.1} GiB", bytes as f64 / 1024.0 / 1024.0 / 1024.0))
20                .unwrap_or_else(|| "n/a".to_owned());
21            println!(
22                "  {:<7} pid={:<8} user={:<12} mem={:<8} {}",
23                process.kind_label(),
24                process.pid,
25                user,
26                memory,
27                command
28            );
29        }
30    }
31
32    Ok(())
33}