- Notifications
You must be signed in to change notification settings - Fork78
Zenith - sort of like top or htop but with zoom-able charts, CPU, GPU, network, and disk usage
License
bvaisvil/zenith
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
- Optional CPU, Memory, Network, and Disk usage charts
- Quick glances at Disk free space, NIC IP addresses, CPU frequency
- Highlight top users of CPU, Memory, & Disk
- Battery percentage, time to charge or discharge, power used
- A top-like filterable process table that includes per process disk usage
- Change process priority
- Zoomable chart views (with support to scroll back in time)
- Managing processes with signals
- Performance data saved between runs
- GPU Utilization Metrics for NVIDIA GPUs (with
--features nvidia), including per-process GPU usage - Disk free space charts
- Delay accounting (on Linux when running zenith with root permissions)
- CPU steal percentage and general virtualization awareness
- Sensor Temperature charts
- Per process network usage (Linux)
- Messaging about adverse system events, like errors in kernel ring buffer (Linux)
- Docker support
- ZFS (pool status)
- GPU utilization metrics for AMD GPUS
- Disk metrics like IO ops / latency
- Support Memory pressure
- Linux
- MacOS
- BSD (OpenBSD/FreeBSD)
- Perhaps Redox OS.
Download one of the compiledreleases.
The latest 64-bit deb packages are availablehere and require distributions based on Debian >= 9 or Ubuntu >= 16.04
You can also install and update the.deb packages we publish in our GitHub releases page usingdeb-get.First installdeb-get using these commands in a terminal:
sudo apt install curlcurl -sL https://raw.githubusercontent.com/wimpysworld/deb-get/main/deb-get| sudo -E bash -s install deb-getThen install zenith using the following command in terminal:
deb-get install zenith
Once zenith is installed it can be kept upto date using:
deb-get updatedeb-get upgrade
zenith is available in theextra repository and can be installed withpacman:
pacman -S zenith
There are also packages available in the AUR: zenith-git and zenith-bin
The zenith-bin package uses the deb package mentioned in previous section and can be used to avoid building the package from source. The first two depend on rust/cargo and it is recommended to install the rustup package from AUR instead of the rust package from official repositories. This allows for easy installation of rust components as per what rust officially documents. You will need to install a toolchain separately with rustup so use something like:
yay -S rustuprustup toolchain install stablerustup default stable
Change the 'stable' toolchain above to beta/nightly/... if you have some specific preference. After this install the preferred AUR package:yay -S zenith-git (will track the latest git revision)
brew install zenith
cargo install --git https://github.com/bvaisvil/zenith.gitFor NVIDIA GPU support, install with featurenvidia:
cargo install --features nvidia --git https://github.com/bvaisvil/zenith.gitBuilding requires rust version >= 1.40 and libclang development packages.
Install from your preferred package manager or preferrably userustup.rs
Clang development packages:
- Ubuntu/Debian:
sudo apt-get install libclang-dev - CentOS/RHL/Fedora
sudo [yum/dnf] install clang
Zenith builds under rustc version >= 1.40.0.
cd zenithcargo build --releaseFor NVIDIA GPU support, build with featurenvidia:
cargo build --release --features nvidia
The minimum supported NVIDIA driver version is 418.56
There is also a Makefile that detects the presence of NVIDIA driver on thecurrent system and builds the appropriate flavor on Linux.
make && sudo make install
If for some reason the Makefile incorrectly detects NVIDIA driver installationor in case of a broken installation (e.g. libnvidia-ml.so.1 present but nolibnvidia-ml.so) then explicitly skip it using thebase target:
make base && sudo make install
The default installation path is/usr/local somake install requires rootprivileges above. To install in a custom location use PREFIX like below:
make && make install PREFIX=$HOME/zenith
There is also an 'all' target in the Makefile that will build both the flavors on Linux,if NVIDIA driver is detected, and 'make install' will then copy a wrapper 'zenith' scriptthat chooses the appropriate binary at runtime.
The make file provides for building fully static versions on Linux against the musl C library.It requires musl-gcc to be installed on the system. Install "musl-tools" package on debian/ubuntuderivatives, "musl-gcc" on fedora and equivalent on other distributions from their standard repos.
Use the target "linux-static" to build it. This will create a tarball containing the executableaccompanied with file containing sha256 sum.
NVIDIA drivers normally do not ship with static versions of the libraries, so the staticbuild skips that configuration. However, if you somehow get hold of static NVIDIAlibraries or are okay for dynamic linking for that executable, then you can explicitlyset the BUILD_NVIDIA flag to true:
make linux-static BUILD_NVIDIA=true
If one needs to build with NVIDIA support in a virtual environment, then it requires some moresetup since typically the VM software is unable to directly expose NVIDIA GPU.Unlike the runtime zenith script, the Makefile has been setup to detect only the presence ofrequired NVIDIA libraries, so it is possible to build with NVIDIA support even when withoutNVIDIA GPU.
Install the nvidia driver package as per the distribution recommended way. For examplein Ubuntu < 18.04 add the NVIDIA PPA (https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa)and install the nvidia-430 package. For newer versions install nvidia-driver-440/450 package.
After that disable the actual use of the driver using "sudo prime-select intel". Then whilebuilding with Makefile you will need to explicitly add the NVIDIA library path to LD_LIBRARY_PATH.For instance on Ubuntu and derivatives, something like:
export LD_LIBRARY_PATH=/usr/lib/nvidia-430 make && sudo make installDebian package support is present in the source tree. Install devscripts package and use standardoptions like "debuild -b -uc -us" to build an unsigned deb package in the directory above.In a virtual environment build, LD_LIBRARY_PATH can be explicitly set like:
debuild -eLD_LIBRARY_PATH=/usr/lib/nvidia-430 -b -uc -us
Cargo can be installed from the repositories or the standard rustup way. Latter would be normallyrecommended if one needs to do anything more than just building in a virtual environment. Forthat case $HOME/.cargo/bin should be in PATH and mark PATH so that debuild does not sanitize it:
debuild -ePATH -eLD_LIBRARY_PATH=/usr/lib/nvidia-430 -b -uc -us
Clean up using "./debian/rules clean" rather than "make clean" to clear debian build files too.
Running with no arguments starts zenith with the default visualizations for CPU, Disk, and Network and a refresh rate of 2000 ms (2 seconds). These can be changed with command line parameters:
zenith [FLAGS] [OPTIONS]FLAGS: --disable-history Disables history when flag is present -h, --help Prints help information -V, --version Prints version informationOPTIONS: -c, --cpu-height <INT> Min Percent Height of CPU/Memory visualization. [default: 17] --db <STRING> Database to use, if any. [default: ~/.zenith] -d, --disk-height <INT> Min Percent Height of Disk visualization. [default: 17] -n, --net-height <INT> Min Percent Height of Network visualization. [default: 17] -p, --process-height <INT> Min Percent Height of Process Table. [default: 32] -r, --refresh-rate <INT> Refresh rate in milliseconds. [default: 2000] -g, --graphics-height <INT> Min Percent Height of Graphics Card visualization. [default: 17]The graphics-height option only applies when NVIDIA GPU support has been enabled.
Don't want a section? Remove it by setting the height to 0.
For example:zenith -c 0 removes the CPU chart.
Up/down arrow keys move around the process table. Return (enter) will focus on a process.Tab switches the active section. Active sections can be expanded (e) and minimized (m).+/- (or =/-) will zoom in / out all of the charts. Arrow keys (←/→) move forward/backward in time.Back tick (`) resets the chart to current time and max zoom.Using these options you can create the layout you want.
In zenith 'h' key will show this help:
About
Zenith - sort of like top or htop but with zoom-able charts, CPU, GPU, network, and disk usage
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.


