Command line tool for recording process or system performance data.
Install with cargo:
cargo install precordprecord -p 1203 -o result.svgprecord -h-c / --category- categories for recording, possible values:cpu- CPU usage of processmem- Memory usage of processalloc- Allocation of processgpu- GPU usage of processvram- VRAM usage of processfps- Frame rate of processnet_in/net_out- Network recv/send of processdisk_read/disk_write- Disk read/write of processkobject- Kernel object count of processthread- Thread count of processsys_cpu- CPU usage of systemsys_cpu_freq- CPU frequency of systemsys_cpu_temp- CPU temperature of systemsys_gpu- GPU usage of systemsys_power- Power usage of systemsys_npu_power- Power usage of npu
-p / --process- ID of processes--name- Name of processes-o / --output- Specify the output file, possible extensions:.svg.html.json.csv
-i / --interval- Interval for recording-n- Count for recording--time- Time limit for recording, e.g.,--time 1h30m59s-r / --recurse-children- Flag to recurse child processes--skip- Number of skip records--gpu-calc- Gpu calculation, possible values:maxsum
--interactive- Interactive mode--auto-save- Interval of auto saving
Type : during recording will enter the command mode, and press Esc will back to recording. The supported commands are:
w- Write(Save) outputq- Exitwq- Combination ofwandqtime- modify time limit for recording
thread-list <PID>- List threads and cpu usage
A library for retrieving process and system performance data.
use precord_core::{Features, GpuCalculation, System};
use std::thread;
use std::time::Duration;
fn main() {
let mut system = System::new(Features::PROCESS || Features::GPU, [1203]).unwrap();
thread::sleep(Duration::from_secs(1));
system.update();
if let Some(cpu_usage) = system.process_cpu_usage(1203) {
println!("Process({}) %CPU: {:.2}%", 1203, cpu_usage)
}
#[cfg(target_os = "windows")]
if let Some(gpu_usage) = system.process_gpu_usage(1203, GpuCalculation::Max) {
println!("Process({}) %GPU: {:.2}%", 1203, gpu_usage)
}
if let Some(sys_gpu_usage) = system.system_gpu_usage(GpuCalculation::Max) {
println!("System %GPU: {:.2}%", sys_gpu_usage);
}
}| macOS | Windows | Linux | |
|---|---|---|---|
| cpu | ✅ | ✅ | ✅ |
| mem | ✅ | ✅ | ✅ |
| alloc | ✅ | ||
| gpu | ✅ | ||
| vram | ✅ | ||
| fps | ✅ | ✅ | |
| net_in/net_out | ✅ | ✅ | |
| disk_read/disk_write | ✅ | ||
| kobject | ✅ | ✅ | |
| thread | ✅ | ✅ | |
| sys_cpu | ✅ | ✅ | ✅ |
| sys_cpu_freq | ✅ | ✅ | ✅ |
| sys_cpu_temp | ✅ | ✅ | |
| sys_gpu | ✅ | ✅ | |
| sys_power | ✅ | ✅ | |
| sys_npu_power | ✅ |
| macOS | Windows | Linux | |
|---|---|---|---|
| cpu | |||
| mem | |||
| alloc | |||
| gpu | |||
| vram | |||
| fps | Administrator + get-task-allow | Administrator | |
| net_in/net_out | Administrator | ||
| disk_read/disk_write | |||
| kobject | |||
| thread | |||
| sys_cpu | |||
| sys_cpu_freq | Administrator | ||
| sys_cpu_temp | |||
| sys_gpu | |||
| sys_power | |||
| sys_npu_power | Administrator | ||
| system processes (WindowServer, dwm.exe, etc.) |
Administrator | Administrator |
- Rust
- Go
- Python