#performance #command-line-tool #performance-monitoring #process #recording #data #gpu

app precord

Command line tool for recording process or system performance data

50 releases

0.7.12 Feb 19, 2024
0.7.11 Nov 9, 2023
0.7.10 Sep 14, 2023
0.7.8 Jun 6, 2023
0.3.9 Dec 29, 2021

#119 in Operating systems

Apache-2.0 OR MIT

1.5MB
42K SLoC

precord

crates.io docs.rs Minimum rustc version

Command line tool for recording process or system performance data.

Installation

Install with cargo:

cargo install precord

Usage

precord -p 1203 -o result.svg

Options

precord -h
  • -c / --category - categories for recording, possible values:
    • cpu - CPU usage of process
    • mem - Memory usage of process
    • alloc - Allocation of process
    • gpu - GPU usage of process
    • vram - VRAM usage of process
    • fps - Frame rate of process
    • net_in/net_out - Network recv/send of process
    • disk_read/disk_write - Disk read/write of process
    • kobject - Kernel object count of process
    • thread - Thread count of process
    • sys_cpu - CPU usage of system
    • sys_cpu_freq - CPU frequency of system
    • sys_cpu_temp - CPU temperature of system
    • sys_gpu - GPU usage of system
    • sys_power - Power usage of system
    • sys_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:
    • max
    • sum
  • --interactive - Interactive mode
  • --auto-save - Interval of auto saving

Command Mode

Type : during recording will enter the command mode, and press Esc will back to recording. The supported commands are:

  • w - Write(Save) output
  • q - Exit
  • wq - Combination of w and q
  • time - modify time limit for recording

Sub Commands

  • thread-list <PID> - List threads and cpu usage

precord-core

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

Supported Platforms

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

Privileges

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

TODO

Dependencies

~19–69MB
~1M SLoC