Skip to content

btraven00/denet

Repository files navigation

denet: a streaming process monitor

denet /de.net/ v. 1. Turkish: to monitor, to supervise, to audit. 2. to track metrics of a running process.

Denet is a lightweight streaming process monitor. It tracks CPU, memory, I/O, and threads for a running process (and its children), with adaptive sampling and optional GPU / eBPF support.

PyPI version Crates.io codecov Ruff License: GPL v3

Installation

pip install denet    # Python package
cargo install denet  # Rust binary

Or install the conda package from the almost-conductor channel:

# pixi
pixi workspace channel add https://prefix.dev/almost-conductor
pixi add denet
# conda
conda install -c https://prefix.dev/almost-conductor denet

Optional features for the Rust binary:

cargo install denet --features gpu   # NVIDIA GPU monitoring (requires drivers)
cargo install denet --features ebpf  # eBPF profiling (Linux only, requires clang)

Usage

# Run a command and monitor it
denet run python train.py

# Attach to an existing process
denet attach 1234

# Save metrics as JSONL
denet --json --out metrics.jsonl run python train.py

CPU usage follows the top convention: 100% = one fully utilized core, so a 4-core workload shows 400%.

Sampling starts at 100 ms and ramps up to 1 s after 10 s of runtime (adaptive). Override with -i / -m:

denet -i 50 -m 500 run python train.py

Further reading

Topic Doc
Python API (ProcessMonitor, execute_with_monitoring, analysis) docs/python-api.md
GPU monitoring docs/gpu.md
eBPF profiling (off-CPU, syscall tracking) docs/ebpf.md
Disk I/O metrics and how to interpret them docs/disk-io.md
Output data format docs/data-format.md
Development setup docs/dev.md

License

GPL-3

Acknowledgements

  • sysinfo - Rust library for system information
  • PyO3 - Rust bindings for Python
  • aya - Rust library for eBPF programs

About

a simple process monitor

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors