System Monitors Deep Dive / bottom vs btop vs htop
Tier 1 Verified Live Benchmark
Lightest Memory (RSS)
~3 – 8 MB
htop (C99 / ncurses)
Richest GPU Telemetry
4 Vendors
btop (NVIDIA, AMD, Intel, Apple)
Layout Customizability
TOML Grid
bottom (Hierarchical widgets)
Lowest CPU Overhead
<0.5%
htop direct /proc delta diffing
bottom btm
Rust
Fast, cross-platform graphical system monitor with declarative TOML layouts, zoomable Braille time-series graphs, and battery telemetry.
  • Primary LanguageRust (2021) / ratatui
  • Memory (RSS)~15 – 35 MB
  • CPU Usage (1s poll)~0.5% – 1.5%
  • GPU SupportNVIDIA (NVML) & AMD
  • Best ForCross-platform power users
brew install bottom  # macOS
cargo install bottom # Rust
sudo pacman -S bottom # Arch
btop btop++
C++20
Visually stunning game-inspired TUI dashboard with 24-bit TrueColor gradients, mouse support, and comprehensive multi-vendor GPU monitoring.
  • Primary LanguageC++20 / Custom ANSI
  • Memory (RSS)~25 – 50 MB
  • CPU Usage (1s poll)~1.0% – 2.5%
  • GPU SupportNVIDIA, AMD, Intel, Apple
  • Best ForWorkstations & Desktops
brew install btop     # macOS
sudo apt install btop # Ubuntu/Debian
sudo dnf install btop # Fedora
htop classic
C99
The universal standard interactive process manager. Ultra-low overhead, instant startup, deep POSIX signal control, strace, and affinity masks.
  • Primary LanguageC (C99) / ncurses
  • Memory (RSS)~3 – 8 MB
  • CPU Usage (1s poll)<0.1% – 0.5%
  • GPU SupportExternal (via nvtop)
  • Best ForProduction Servers & SSH
sudo apt install htop # Universal Linux
brew install htop     # macOS
pkg install htop      # FreeBSD
Performance & Resource Benchmarks
Resident Set Size (RSS Memory MB)
Lower is Better
CPU Overhead (1.0s Polling Rate %)
Lower is Better
Multidimensional Capability Radar
Holistic Index (0–10)
Comprehensive Feature Matrix
Feature / Metric bottom (btm) btop (btop++) htop
Primary Language Rust (2021) C++20 C (C99/C11)
TUI / Rendering Engine ratatui + crossterm Custom ANSI / UTF-8 memory buffer ncurses / libncursesw
Startup Latency ~15 – 30 ms ~30 – 60 ms <5 – 10 ms (Near-instant)
Graph Sparkline Types Braille canvas time-series 2x4 Braille subpixels + Blocks ASCII gauge meters
Mouse Interactivity Clicks, scrolling, widget focus Full GUI menus, buttons, sliders Click selection, scroll
Color / Theme Engine Custom TOML palettes 24-bit TrueColor RGB, 20+ themes 16-color ANSI presets
Layout Customization Declarative TOML grid ([[row]]) Preset layouts (keys 1–9) Setup screen meter columns (F2)
Process Tree View Yes (t key) Yes (t key) Yes (F5 / t key)
Process Search & Filter Regex (F9), Case (F8), Word (F7) Interactive search (f / /) Incremental search (/), Filter (\)
Process Debugging Tools Signal sending (dd) Signal sending (k), detail dialog strace (s), lsof (l), ionice (i), Affinity (a)
Peripheral Telemetry Battery (health, draw), Disks, Temps Disks, Temps, Fan RPM Battery meter, Temperature sensors
Low-Bandwidth SSH Good (use --basic for text mode) Fair (heavy escape bursts) Flawless (minimal cell diffs)
GPU Monitoring & Hardware State
GPU Vendor / Architecture btop (btop++) bottom (btm) htop
NVIDIA (NVML) Full
Core %, VRAM, Clocks, Temp, Power (W), Fan RPM, PCIe RX/TX
Native
Core %, VRAM %, Temp, Per-process GPU% table
None
External: pair with nvtop
AMD (ROCm / sysfs) Full
ROCm SMI (librocm_smi64.so), sysfs/hwmon telemetry
Native
Linux sysfs / hwmon driver counters
None
External: pair with amdgpu_top
Intel GPUs (i915 / Xe) Supported
DRM/KMS sysfs, Level Zero, engine utilization
Basic
Generic sysinfo counters
None
External: pair with intel_gpu_top
Apple Silicon (M1–M4) Integrated
Private IOReport APIs, GPU power, active load
Thermal Only
SoC package & core temperature sensors
None
External: pair with asitop or mactop
Multi-GPU Switching Dedicated toggle keys (5, 6, 7...) Aggregated and selectable list N/A
Package Manager Availability
Platform / Ecosystem bottom (btm) btop (btop++) htop
macOS (Homebrew) brew install bottom brew install btop brew install htop
macOS (MacPorts) sudo port install bottom sudo port install btop sudo port install htop
Debian / Ubuntu sudo apt install bottom (24.04+) sudo apt install btop (22.04+) sudo apt install htop (Universal)
Fedora / RHEL / CentOS sudo dnf install bottom sudo dnf install btop sudo dnf install htop
Arch Linux / Manjaro sudo pacman -S bottom sudo pacman -S btop sudo pacman -S htop
Alpine Linux apk add bottom apk add btop apk add htop
Nix / NixOS nix-env -iA nixpkgs.bottom nix-env -iA nixpkgs.btop nix-env -iA nixpkgs.htop
FreeBSD / OpenBSD pkg install bottom pkg install btop pkg install htop
Windows (winget) winget install Clement.bottom WSL / MSYS2 WSL / MSYS2
Windows (Scoop / Choco) scoop install bottom / choco install bottom WSL WSL
Language / Source Build cargo install bottom --locked make && sudo make install ./autogen.sh && make
Flatpak / Snap snap install bottom flatpak install flathub org.aristocratos.btop snap install htop
Deep-Dive Specifications & Cheatsheet
1. bottom (btm) — Configuration & Keybindings Rust / ratatui

Config Location: ~/.config/bottom/bottom.toml

# Example Custom Layout Grid
[[row]]
  ratio = 35
  [[row.child]]
    type = "cpu"
[[row]]
  ratio = 65
  [[row.child]]
    ratio = 50
    type = "mem"
  [[row.child]]
    ratio = 50
    type = "proc"

Essential Keybindings:

  • e / Esc: Expand focused widget to full screen / restore grid.
  • + / - / =: Zoom time scale in / out / reset zoom.
  • Tab: Group identical process binaries together.
  • t: Toggle hierarchical process tree view.
  • dd: Send termination signal to process.
  • f: Freeze / unfreeze real-time polling snapshot.
2. btop (btop++) — Configuration & Keybindings C++20

Config Location: ~/.config/btop/btop.conf

# Key btop.conf Parameters
color_theme = "dracula"
theme_background = False
truecolor = True
force_tty = False
presets = "cpu:1:default,mem:2:default,net:3:default,proc:4:default"
graph_symbol = "braille"
update_ms = 1500
show_gpu = True

Essential Keybindings:

  • 1, 2, 3, 4, 5: Toggle CPU, Memory, Network, Process, and GPU boxes.
  • p: Cycle through custom layout presets (0–9).
  • m: Open options and theme selection menu.
  • t: Toggle process tree view.
  • k: Open signal sending dialog.
  • Mouse Click: Click any box header, tab, or sort column directly.
3. htop — Interactive Controls & Advanced Triage C99 / ncurses

Config Location: ~/.config/htop/htoprc

Essential Function Keys & Advanced Triage:

  • F1 / h: Online help & key overview.
  • F2 / S: Setup screen (add meters, custom columns, color schemes).
  • F3 / /: Incremental type-ahead search.
  • F4 / \: Dynamic in-place filter.
  • F5 / t: Hierarchical process tree view.
  • F6 / >: Sort column selector.
  • F7 / F8: Increase / decrease process niceness priority.
  • F9 / k: Send POSIX kill signal.
  • s: Attach strace to trace real-time system calls.
  • l: Attach lsof to inspect open files, sockets, and pipes.
  • a: Set CPU affinity mask.
  • i: Set I/O scheduling class and priority (ionice).

Architectural Recommendations

Production Servers & SSH Triage: Choose htop. Its ~5MB RSS footprint, zero startup latency, and deep syscall triage tools (strace, lsof, ionice) make it indispensable on headless machines.

Workstations & GPU Workloads: Choose btop. Its native multi-vendor GPU graphs (NVIDIA, AMD, Intel, Apple Silicon), TrueColor gradients, and intuitive mouse controls provide the highest single-screen situational awareness.

Cross-Platform & Custom Dashboards: Choose bottom. Its declarative TOML layout engine, native Windows/macOS/Linux support, and balanced ~20MB RSS footprint make it the ideal modern daily driver.