Memory usage monitor for process trees

Overview

gotta-watch-em-all

Executes a process with given arguments and monitors, logs when memory usage grows to a new peak.

Example:

cargo run -- cargo -- build --release
   Compiling gotta-watch-em-all v0.1.0 (C:\Users\aaron\c\gotta-watch-em-all)
    Finished dev [unoptimized + debuginfo] target(s) in 1.27s
     Running `target\debug\gotta-watch-em-all.exe cargo -- build --release`
   Compiling gotta-watch-em-all v0.1.0 (C:\Users\aaron\c\gotta-watch-em-all)
🌊 gotta-watch-em-all: Reached a new high water mark of 28904 KiB, 28904 greater than before!
🌊 process                                                    private KiB    total KiB
🌊 cargo.exe (7776)                                               8884KiB     28904KiB
🌊   cargo.exe (16476)                                           18419KiB     20020KiB
🌊     rustc.exe (15672)                                          1601KiB      1601KiB

🌊 gotta-watch-em-all: Reached a new high water mark of 56540 KiB, 27636 greater than before!
🌊 process                                                    private KiB    total KiB
🌊 cargo.exe (7776)                                               8884KiB     56540KiB
🌊   cargo.exe (16476)                                           18477KiB     47656KiB
🌊     rustc.exe (15672)                                         29179KiB     29179KiB

🌊 gotta-watch-em-all: Reached a new high water mark of 93179 KiB, 36639 greater than before!
🌊 process                                                    private KiB    total KiB
🌊 cargo.exe (7776)                                               8884KiB     93179KiB
🌊   cargo.exe (16476)                                           18477KiB     84295KiB
🌊     rustc.exe (15672)                                         65818KiB     65818KiB

Options

Can output to a separate file, rather than stderr, and there are options for tuning the threshold for writing out the process tree.

gotta-watch-em-all 0.1.0
Run a process and monitor the memory usage of the process tree, logging to a file or stdout. When a high water mark is
reached, depending on options provided, the process tree and memory usage will be written to output

USAGE:
    gotta-watch-em-all.exe [OPTIONS] <program> [-- <args>...]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -o, --out <out>                                  Output file, - or absent for stderr
    -a, --threshold-absolute <threshold-absolute>
            The minimum increase, as a percentage, over the high water mark required to output stats [default: 1024]

    -r, --threshold-relative <threshold-relative>
            The minimum increase, in kilobytes, over the high water mark required to output stats [default: 0]


ARGS:
    <program>    Program to run
    <args>...    Program arguments
Comments
  • [Merged by Bors] - build(deps): bump crossbeam-utils from 0.8.6 to 0.8.10

    [Merged by Bors] - build(deps): bump crossbeam-utils from 0.8.6 to 0.8.10

    Bumps crossbeam-utils from 0.8.6 to 0.8.10.

    Release notes

    Sourced from crossbeam-utils's releases.

    crossbeam-utils 0.8.10

    • Fix unsoundness of AtomicCell on types containing niches. (#834) This fix contains breaking changes, but they are allowed because this is a soundness bug fix. See #834 for more.

    crossbeam-utils 0.8.9

    • Replace lazy_static with once_cell. (#817)

    crossbeam-utils 0.8.8

    • Fix a bug when unstable loom support is enabled. (#787)

    crossbeam-utils 0.8.7

    • Add AtomicCell<{i*,u*}>::{fetch_max,fetch_min}. (#785)
    • Add AtomicCell<{i*,u*,bool}>::fetch_nand. (#785)
    • Fix unsoundness of AtomicCell<{i,u}64> arithmetics on 32-bit targets that support Atomic{I,U}64 (#781)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 6
  • [Merged by Bors] - release: cli v0.3.1

    [Merged by Bors] - release: cli v0.3.1

    This is a release PR for cli to version 0.3.1.

    Upon merging, this will automatically build the CLI and create a GitHub release. You still need to manually publish the cargo crate.

    $ cd crates/cli
    $ cargo publish
    

    To merge this release, review the changes then say:

    | bors r+ p=10 | |:-:|


    Edit release notes into the section below:

    Release notes

    • Fix process memory not refreshing (https://github.com/AaronFriel/gotta-watch-em-all/pull/17)
    • Fix requiring -- between the command run and its arguments. (https://github.com/AaronFriel/gotta-watch-em-all/pull/3)
    • Add option to configure refresh interval -i, --check-interval (https://github.com/AaronFriel/gotta-watch-em-all/pull/3)
    • Add option to always print every nth interval refreshed, -n, --report-every-nth (https://github.com/AaronFriel/gotta-watch-em-all/pull/3)
    • Add option to print free(1) style overall memory stats: -f, --show-free (https://github.com/AaronFriel/gotta-watch-em-all/pull/3)
    • Add option to print full command line for each process -c, --show-command (https://github.com/AaronFriel/gotta-watch-em-all/pull/3)
    release 
    opened by github-actions[bot] 2
  • [Merged by Bors] - release: cli v0.3.0

    [Merged by Bors] - release: cli v0.3.0

    This is a release PR for cli to version 0.3.0.

    Upon merging, this will automatically build the CLI and create a GitHub release. You still need to manually publish the cargo crate.

    $ cd crates/cli
    $ cargo publish
    

    To merge this release, review the changes then say:

    | bors r+ p=10 | |:-:|


    Edit release notes into the section below:

    Release notes

    release 
    opened by github-actions[bot] 2
  • [Merged by Bors] - release: cli v0.2.3

    [Merged by Bors] - release: cli v0.2.3

    This is a release PR for cli to version 0.2.3.

    Upon merging, this will automatically build the CLI and create a GitHub release. You still need to manually publish the cargo crate.

    $ cd crates/cli
    $ cargo publish
    

    To merge this release, review the changes then say:

    | bors r+ p=10 | |:-:|


    Edit release notes into the section below:

    Release notes

    release 
    opened by github-actions[bot] 2
  • [Merged by Bors] - release: cli v0.2.2

    [Merged by Bors] - release: cli v0.2.2

    This is a release PR for cli to version 0.2.2.

    Upon merging, this will automatically build the CLI and create a GitHub release. You still need to manually publish the cargo crate.

    $ cd crates/cli
    $ cargo publish
    

    To merge this release, review the changes then say:

    | bors r+ p=10 | |:-:|


    Edit release notes into the section below:

    Release notes

    release 
    opened by github-actions[bot] 2
  • [Merged by Bors] - release: cli v0.2.1

    [Merged by Bors] - release: cli v0.2.1

    This is a release PR for cli to version 0.2.1.

    Upon merging, this will automatically build the CLI and create a GitHub release. You still need to manually publish the cargo crate.

    $ cd crates/cli
    $ cargo publish
    

    To merge this release, review the changes then say:

    | bors r+ p=10 | |:-:|


    Edit release notes into the section below:

    Release notes

    release 
    opened by github-actions[bot] 2
  • [Merged by Bors] - release: cli v0.2.0

    [Merged by Bors] - release: cli v0.2.0

    This is a release PR for cli to version 0.2.0.

    Upon merging, this will automatically build the CLI and create a GitHub release. You still need to manually publish the cargo crate.

    $ cd crates/cli
    $ cargo publish
    

    To merge this release, review the changes then say:

    | bors r+ p=10 | |:-:|


    Edit release notes into the section below:

    Release notes

    release 
    opened by github-actions[bot] 2
  • Name is too long

    Name is too long

    Alternative ideas:

    • current name is perfect
    • 🌊 hightide, uses current emoji in the tool
    • ⛰️ summit, evokes idea of climbing to new peaks
    • 🧊 iceberg, evokes the idea that it measures more than just the tip that you can see (e.g.: make), but the whole volume beneath?
    opened by AaronFriel 1
Releases(cli-v0.3.1)
Owner
Aaron Friel
Aaron Friel
A CLI tool which can help you automatically kill process of your choice. Useful for freeing up memory and CPU usage!

Quickiller There are always programs such as chrome that keep eating up your resources even when closed! The only way to prevent this is to kill all o

Codingsquirrel 1 Dec 8, 2021
dua (-> Disk Usage Analyzer) is a tool to conveniently learn about the usage of disk space of a given directory

dua (-> Disk Usage Analyzer) is a tool to conveniently learn about the usage of disk space of a given directory. It's parallel by default and will max

Sebastian Thiel 1.8k Jan 2, 2023
A cross-platform graphical process/system monitor with a customizable interface and a multitude of features

A cross-platform graphical process/system monitor with a customizable interface and a multitude of features. Supports Linux, macOS, and Windows. Inspired by both gtop and gotop.

Clement Tsang 5.8k Jan 8, 2023
A Rust on-site channel benchmarking helper. Inter-Process (async / busy) & Intra-Process (async single threaded / async multi threaded)

On-Site Rust Channel Benchmarking Helper Deploy on server to determine which public crates are the fastest for communicating in different architecture

null 23 Jul 9, 2024
A simple code that will load a shellcode directly into RAM memory in a new process

「 ?? 」About RustSCLoader RustSCLoader is a simple code that has the intention of loading a shellcode directly into RAM memory in a new process that wi

null 5 May 15, 2023
A library that allows for the arbitrary inspection and manipulation of the memory and code of a process on a Linux system.

raminspect raminspect is a crate that allows for the inspection and manipulation of the memory and code of a running process on a Linux system. It pro

Liam Germain 24 Sep 26, 2023
A fun rust terminal program so you can make Christmas trees!

Xmastree 2021 A fun christmas tree where you can add ornaments! Then, you can export the file into either: a rust file a txt file About Taking a break

Junhao 2 Dec 21, 2021
Traversal of tree-sitter Trees and any arbitrary tree with a TreeCursor-like interface

tree-sitter-traversal Traversal of tree-sitter Trees and any arbitrary tree with a TreeCursor-like interface. Using cursors, iteration over the tree c

Sebastian Mendez 12 Jan 8, 2023
Build Abstract Syntax Trees and tree-walking models quickly in Rust.

astmaker Build Abstract Syntax Trees and tree-walking models quickly in Rust. Example This example creates an AST for simple math expressions, and an

David Delassus 100 Jun 5, 2023
Shared memory - A Rust wrapper around native shared memory for Linux and Windows

shared_memory A crate that allows you to share memory between processes. This crate provides lightweight wrappers around shared memory APIs in an OS a

elast0ny 274 Dec 29, 2022
Another TUI based system monitor, this time in Rust!

Another TUI based system monitor, this time in Rust!

Caleb Bassi 2.1k Jan 3, 2023
A discord bot to view & monitor OpenSea collections, written in Rust

Titan What is this This is a discord bot to monitor OpenSea collections and get info about them, including: Floor Price Activity Sales per Hour And mo

theldb 3 Oct 11, 2022
Small command-line tool to switch monitor inputs from command line

swmon Small command-line tool to switch monitor inputs from command line Installation git clone https://github.com/cr1901/swmon cargo install --path .

William D. Jones 5 Aug 20, 2022
A resource monitor in your browser, in Rust

axact A resource monitor in your browser, so you can view the state of a VM or some other remote host. Built with Rust & Preact, see the video: https:

amos 87 Apr 13, 2023
Socket Monitor: A prettier and simpler alternative to netstat or ss for socket monitoring with the ability to scan for malicious IP addresses.

?? Somo A prettier alternative to netstat or ss for socket monitoring. ⬇️ Installation: 1. Install cargo: From crates.io. 2. Install the somo crate: c

Theodor Peifer 13 Jun 6, 2023
TUI monitor handler for Hyprland [maintainer=@Degra02]

MonitorMaestro Tired of fiddling with Hyprland configs? Monitor Maestro lets you switch between monitor layouts in a snap! This Rust-powered TUI app l

Hyprland Community 11 Jun 27, 2024
The application that can be used for personal usage to manage jira from terminal.

Jira Terminal This application can be used for personal usage to manage jira from terminal. Installation This application can be used in multiple plat

Amrit Ghimire 109 Dec 16, 2022
Zenith - sort of like top or htop but with zoom-able charts, CPU, GPU, network, and disk usage

Zenith - sort of like top or htop but with zoom-able charts, CPU, GPU, network, and disk usage

Benjamin Vaisvil 1.6k Jan 4, 2023
Coppers is a custom test harnass for Rust that measures the energy usage of your test suite.

Coppers Coppers is a test harness for Rust that can measure the evolution of power consumptions of a Rust program between different versions with the

Thijs Raymakers 175 Dec 4, 2022