Zurück zum Ranking

bvaisvil/zenith

Rust

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

cpulinuxterminal-applicationprocess-monitortuimacosdiskzenith
Sterne-Wachstum
Sterne
3k
Forks
82
Wochenwachstum
Issues
41
1k2k3k
Feb. 2020März 2022Mai 2024Juli 2026
Artefaktecrates.iocargo add zenith
README

Zenith

In terminal graphical metrics for your *nix system written in Rust

Running zenith on alacritty on MacOS

Features

  • 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)
zenith running on linux in iTerm2

Planned Features

  • 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

Current Platforms

  • Linux
  • MacOS

Planned Platforms

  • BSD (OpenBSD/FreeBSD)
  • Perhaps Redox OS.

Installation

Packaging status

Binary

Download one of the compiled releases.

Debian/Ubuntu based Linux distributions (64-bit)

The latest 64-bit deb packages are available here 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 using deb-get. First install deb-get using these commands in a terminal:

sudo apt install curl
curl -sL https://raw.githubusercontent.com/wimpysworld/deb-get/main/deb-get | sudo -E bash -s install deb-get

Then 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 update
deb-get upgrade

Arch Linux

zenith is available in the extra repository and can be installed with pacman:

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 rustup
rustup toolchain install stable
rustup 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)

Homebrew

brew install zenith

Cargo

cargo install --git https://github.com/bvaisvil/zenith.git

For NVIDIA GPU support, install with feature nvidia:

cargo install --features nvidia --git https://github.com/bvaisvil/zenith.git

Building

Prerequisites

Building requires rust version >= 1.40 and libclang development packages.

Rust:

Install from your preferred package manager or preferrably use rustup.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 zenith
cargo build --release

For NVIDIA GPU support, build with feature nvidia:

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 the current system and builds the appropriate flavor on Linux.

make && sudo make install

If for some reason the Makefile incorrectly detects NVIDIA driver installation or in case of a broken installation (e.g. libnvidia-ml.so.1 present but no libnvidia-ml.so) then explicitly skip it using the base target:

make base && sudo make install

The default installation path is /usr/local so make install requires root privileges 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' script that chooses the appropriate binary at runtime.

Static build

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/ubuntu derivatives, "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 executable accompanied with file containing sha256 sum.

NVIDIA drivers normally do not ship with static versions of the libraries, so the static build skips that configuration. However, if you somehow get hold of static NVIDIA libraries or are okay for dynamic linking for that executable, then you can explicitly set the BUILD_NVIDIA flag to true:

make linux-static BUILD_NVIDIA=true

Building with NVIDIA support in a virtual environment

If one needs to build with NVIDIA support in a virtual environment, then it requires some more setup 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 of required NVIDIA libraries, so it is possible to build with NVIDIA support even when without NVIDIA GPU.

Install the nvidia driver package as per the distribution recommended way. For example in 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 while building 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 install

Building deb package

Debian package support is present in the source tree. Install devscripts package and use standard options 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 normally recommended if one needs to do anything more than just building in a virtual environment. For that 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.

Usage

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 information

OPTIONS:
    -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:

Running zenith on iTerm2 on MacOS

Built using these great crates

Ähnliche Repositories
exelban/stats

macOS system monitor in your menu bar

SwiftMIT Licensemacosmonitor
mac-stats.com
40.7k1.4k
0voice/interview_internal_reference

2025年最新总结,阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。

PythonPyPInetworkredis
37.2k9.4k
Rem0o/FanControl.Releases

This is the release repository for Fan Control, a highly customizable fan controlling software for Windows.

Otherfancontrol
20.3k605
seerge/g-helper

Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertbook, ROG Ally, and many more.

C#GNU General Public License v3.0g14mux
g-helper.com
14.3k540
plasma-umass/scalene

Scalene: a high-performance, high-precision CPU, GPU, and memory profiler for Python with AI-powered optimization proposals

PythonPyPIApache License 2.0pythonprofiling
13.5k435
giampaolo/psutil

Cross-platform lib for process and system monitoring in Python

PythonPyPIBSD 3-Clause "New" or "Revised" Licensepythonmonitoring
psutil.io
11.2k1.5k
unicorn-engine/unicorn

Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, S390x, TriCore, X86)

CGNU General Public License v2.0emulatorframework
unicorn-engine.org
9.2k1.5k
AdnanHodzic/auto-cpufreq

Automatic CPU speed & power optimizer for Linux

PythonPyPIGNU Lesser General Public License v3.0cpuspeed
foolcontrol.org
7.6k351
hackclub/putting-the-you-in-cpu

A technical explainer by @kognise of how your computer runs programs, from start to finish.

MDXMIT Licensecpuelf
cpu.land
5.5k191
tianshiyeben/wgcloud

Linux运维监控工具,支持系统硬件信息,内存,CPU,温度,磁盘空间及IO,硬盘smart,GPU,防火墙,网络流量速率等监控,服务接口监测,大屏展示,拓扑图,端口监控,进程监控,docker监控,日志监控,文件防篡改,数据库监控,指令批量下发执行,web ssh,Linux面板(探针),告警,SNMP监测,K8S,Redis,Nginx,Kafka,资产管理,计划任务,密码管理,工作笔记

JavaMavenApache License 2.0linuxdevops
wgstart.com
5.2k906
GoogleChromeLabs/react-adaptive-hooks

Deliver experiences best suited to a user's device and network constraints

JavaScriptnpmApache License 2.0react-hooksperformance
5.2k113
amanusk/s-tui

Terminal-based CPU stress and monitoring utility

PythonPyPIGNU General Public License v2.0cpumonitoring
amanusk.github.io/s-tui/
5k177