How to Monitor System Performance on Fedora (top, htop, btop, glances)

Install htop, btop, or glances on Fedora via DNF to visualize system performance and identify resource-heavy processes.

Your fan is screaming and the GUI is frozen

Your laptop fan spins up to maximum speed while you are just browsing the web. Or the desktop freezes for ten seconds while you try to save a document. You open a terminal and type top because an old forum post told you to, but the output looks like a static spreadsheet from 1998. You see numbers scrolling too fast to read, and you cannot tell which process is consuming your CPU or why memory usage looks dangerously high.

You need a clear, real-time view of what the system is doing. You need to identify the culprit, kill it if necessary, and understand whether the system is under stress or behaving normally. Fedora ships with top, which works but lacks modern features. The Fedora repositories contain better tools that add interactivity, color, graphs, and broader context. These tools do not modify the system. They only read data exposed by the kernel. You can run them safely without affecting performance.

What the kernel is actually tracking

Linux monitoring tools do not measure performance directly. They read from virtual filesystems that the kernel maintains. The kernel tracks CPU time, memory allocation, disk I/O, and network traffic, then exposes this data in /proc and /sys.

The file /proc/stat contains CPU ticks. The kernel counts time spent in user mode, kernel mode, idle, and waiting for I/O. Monitoring tools parse this file and calculate percentages. The file /proc/meminfo tracks memory pages. It shows how much RAM is free, used, and cached. The directory /sys/class/disk provides I/O statistics for storage devices.

Load average is a common source of confusion. Load average is not CPU usage. Load average is the number of processes waiting for CPU time or blocked on I/O. A load of 1.0 on a single-core system means the CPU is fully utilized. A load of 4.0 on a 4-core system means the system is balanced. High load with low CPU usage usually indicates disk I/O wait. Check the wa column in top or the disk graph in btop to confirm.

Memory usage in Linux includes caches. The kernel caches disk data in RAM to speed up reads. Tools like htop show used memory including cache. This is normal behavior. The system reclaims cache automatically when an application needs RAM. Do not panic if memory appears full. Look at the free memory bar or the buff/cache line to see what is actually available.

Run journalctl -xe if you suspect a service is causing high load. The journal often contains error messages that explain why a process is spinning or retrying. Monitoring tools show the symptom. The logs show the cause.

Install the monitoring tools

Fedora includes top by default. You do not need to install it. The packages htop, btop, and glances are available in the standard repositories. Install them with dnf. The package manager resolves dependencies automatically.

Here is how to install the three main monitoring tools in one command.

sudo dnf install -y htop btop glances
# -y skips the confirmation prompt for non-interactive installs
# htop adds color, mouse support, and tree view to the process list
# btop provides a modern UI with graphs, themes, and network stats
# glances aggregates sensors, disk I/O, and container data

Install the tools once. You will use them every time the system acts up.

Use htop for process hierarchy and control

htop is the standard upgrade from top. It provides a color-coded, interactive process list. You can scroll, sort, filter, and kill processes with keyboard shortcuts or the mouse. htop also shows a tree view, which is essential for debugging.

Processes spawn children. A web server spawns worker threads. A script might launch a background job. htop displays this hierarchy. Press F5 to toggle the tree view. You see the parent process and its children indented. This helps you find the root cause. If a child is misbehaving, killing the parent stops all children.

Here is how to launch htop and use the most important features.

htop
# Run htop to launch the interactive process viewer
# Press F5 to toggle the tree view for process hierarchy
# Press F4 to filter processes by name or PID
# Press k to kill a process by PID with a signal selection
# Press F6 to change the sort column, such as CPU% or MEM%

htop integrates with systemd. It can show cgroups if you enable the option in the setup menu. Press F2 to open the setup. Look for the "Display options" section. Enable "Show custom thread names" and "Highlight threads" if you are debugging multi-threaded applications.

htop saves your preferences automatically. The configuration lives in ~/.config/htop/htoprc. You do not need to edit the file manually. Changes you make in the setup menu persist across sessions.

Use the tree view before you kill a process. Killing the wrong process can drop connections or crash services.

Use btop for visual dashboards and graphs

btop offers a modern, graph-heavy interface. It displays CPU usage per core, memory usage, disk I/O, and network traffic in real-time graphs. The UI is highly customizable. You can change themes, graph styles, and update intervals.

btop is useful when you want a quick visual overview. The graphs make it easy to spot spikes and trends. The process list at the bottom works similarly to htop. You can sort, filter, and kill processes.

Here is how to run btop and navigate the dashboard.

btop
# Launch btop for a graph-heavy dashboard
# Press 1 to toggle CPU view between per-core and total
# Press 2 to toggle memory view between physical and swap
# Press 3 to toggle network view between bytes and bits
# Press F2 to open the settings menu for themes and options

btop saves your configuration in ~/.config/btop/btop.conf. You can edit this file to change defaults, or use the settings menu. The "Theme" option lets you switch between light and dark modes. The "Update interval" option controls how often the display refreshes. Lower intervals give smoother graphs but use slightly more CPU. The default interval is usually fine.

If btop fails to start, it may complain about missing libraries. Minimal installations might lack ncurses.

Error: Could not find libncursesw.so.6

Install the compatibility library to fix this.

sudo dnf install -y ncurses-compat-libs
# Install ncurses compatibility libraries for terminal UI tools
# btop depends on ncurses for rendering the interface
# This package provides the shared libraries required by btop

Read the error message. Missing libraries are common with third-party tools. Install the dependency, do not ignore the warning.

Use glances for comprehensive system stats

glances provides a single view of CPU, memory, disk, network, sensors, and containers. It aggregates data from multiple sources. It can also run in client-server mode, which is useful for monitoring headless machines.

The default view shows a summary at the top and a process list at the bottom. You can toggle additional panels for disk I/O, network, sensors, and mounts. glances uses color coding to indicate status. Green is normal. Yellow is warning. Red is critical.

Here is how to run glances and customize the display.

glances
# Start glances for a comprehensive system overview
# Press m to sort processes by memory usage
# Press p to sort processes by CPU usage
# Press d to toggle disk I/O statistics display
# Press n to toggle network statistics display
# Press s to toggle sensor data display

glances can run as a server. Start the server with glances -C. Connect from another machine with glances -c server-ip. This works over SSH or direct network. You can monitor multiple machines from a single terminal.

glances requires the psutil Python library. Fedora packages this dependency automatically. If you install glances from a third-party source, you may need to install python3-psutil manually.

Check the sensor panel if your system is overheating. High temperatures can cause throttling and performance drops. The sensor data comes from lm-sensors. Install lm-sensors if you want detailed hardware monitoring.

Generate load before you trust the numbers. Idle systems hide problems.

Verify the tools are reporting correctly

Monitoring tools rely on kernel data. The data is accurate, but the tools might display it differently. Verify that the tools are reporting correctly by generating a known load.

Here is how to create a CPU load and verify the monitor catches it.

yes > /dev/null &
# Start a background process that consumes one CPU core
# Redirect output to /dev/null to avoid filling the disk
# The & runs the command in the background so you can keep typing

Run your monitoring tool. You should see a process named yes using approximately 100% of one CPU core. The load average should increase. The CPU graph should show a spike.

Here is how to clean up the test process.

kill %1
# Kill the background job by job number
# Verify the CPU usage drops back to idle in your monitor
# Check that the load average decreases over time

If the tool does not show the yes process, check the filter settings. Some tools hide kernel threads or low-priority processes by default. Adjust the settings to show all processes.

If the load average does not increase, check the number of cores. A single yes process on a 16-core system will only increase the load by 1.0. This is normal. The system has plenty of capacity.

Install htop once. You will use it every time the system acts up.

Common pitfalls and error messages

Monitoring tools are generally safe, but there are a few common issues.

Permission denied errors can occur when reading sensor data or detailed I/O stats. Some tools require root privileges to access all information. Run the tool with sudo if you see permission errors. Do not run monitoring tools as root by default. Only use sudo when you need specific data that requires elevated privileges.

btop may crash if the terminal does not support true color. Most modern terminals support true color. If you see garbled output or crashes, check your terminal settings. Enable true color support or switch to a theme that uses standard colors.

glances may warn about missing sensors. This is normal if your hardware does not expose sensor data via lm-sensors. The warning does not affect other features. Ignore the warning or install lm-sensors to enable hardware monitoring.

top and htop show different memory numbers. top shows used memory excluding cache. htop shows used memory including cache. Both are correct. They just use different definitions. Look at the free memory bar to see what is available.

Read the error message. Missing libraries are common with third-party tools. Install the dependency, do not ignore the warning.

Choose the right tool for the job

Different tools serve different needs. Pick the one that matches your workflow.

Use top when you are on a minimal server with no extra packages installed. Use htop when you need a reliable, interactive process list with sorting and killing. Use btop when you want a visual dashboard with graphs and color themes. Use glances when you need a single view of CPU, memory, disk, network, and sensors. Use journalctl -xe when the monitor shows high load but you need the kernel logs to find the cause.

Run journalctl -xe first. Read the actual error before guessing.

Where to go next