Oprs

Rust Crates.io Crates.io

Oprs is a process monitor for Linux. The name is an abbreviation for Observe Process ReSources.

It's based on procfs.

Features

Example

To get the memory size, elapsed time and page fault of a process by PID (firefox), a process by pid file (pulseaudio) and a process by name (bash), run:

oprs -F human -p 6913 -f pulseaudio.pid -n dhclient mem:vm mem:rss+max time:elapsed fault:major

Screenshot

Without argument, the command prints the available metrics.

By default, the raw figure is printed unless -raw is added: mem:rss-raw+min+max.

Usage

Without argument, the command prints the list of available metrics.

Limited patterns are allowed for metrics: by prefix mem:, suffix *:call, both io::count.

A metric may be followed by a unit. For example: mem:vm/gi

Available units: - ki kibi - mi mebi - gi gibi - ti tebi - k kilo - m mega - g giga - t tera - sz the best unit in k, m, g or t. - du format duration as hour, minutes, seconds.

Metrics can be also aggregated using +min and/or +max. For example mem:vm+max/gi prints the virtual memory size and the peak size. To get only the max, use: mem:vm-raw+max. To get all: mem:vm+min+max.

For some metrics, min or max is meaningless.

Export options: - csv: comma-separated values, one file per process in the export directory. - rrd: Round Robin Database.

CPU usage

Unlike other tools, the CPU usage of a process displayed by time:cpu+ratio is the percentage of the total CPU time. A process using all cores of a 4-cores system would be at 100%, not 400%.

The CPU usage is (stime + utime) / ((user - guest) + (nice - guest_nice) + system + idle + iowait + irq + softirq) where stime and utime comes from /proc/PID/stat and user, … from /proc/stat.

Export

CSV

In CSV export, the first column is the number of seconds since the Unix Epoch.

The size of exported data can be limited with --export-size to set the maximum size of a CSV file and --export-count to set the maximum number of files.

RRD

Creates one RRD database for each process by spawning a RRDtool process. Only raw values are written in the database.

The number of rows is set with option --export-count.

Option --graph creates one png file per metric in the export directory.

Configuration

Configuration file name is settings.ini. It's located according to the XDG Base Directory Specification.

Example ~/.config/oprs/settings.ini:

[display]
mode = term
every = 10
format = human
theme = light

[export]
kind = csv
dir = /tmp
size = 10m
count = 5

[logging]
file = /var/log/oprs.log
level = info

[targets]
system = yes
myself = yes

License

Copyright (c) 2020 Laurent Pelecq

oprs is distributed under the terms of the GNU General Public License version 3.

See the LICENSE GPL3 for details.