Linux Running Slow
Your system feels sluggish, laggy, or unresponsive? Don't panic. There's almost always a simple explanation, and most fixes take just a few minutes.
Step 1: Check What's Using Your Resources
Before you can fix the problem, you need to see what's actually going on. Think of this like opening Task Manager on Windows — you want to see which programs are hogging your computer.
Option A: System Monitor (graphical)
Most Linux desktops come with a built-in system monitor. It looks like Task Manager and works the same way:
- GNOME: Search for "System Monitor" in your app menu
- KDE Plasma: Search for "System Monitor" or "KSysGuard"
- Cinnamon (Mint): Search for "System Monitor"
- XFCE: Search for "Task Manager"
Click the "Processes" tab and sort by CPU or memory usage. If one program is using a huge percentage, you've probably found your culprit.
Option B: htop in the terminal
If you want more detail (or you're comfortable with the terminal), htop is an amazing tool. It shows everything running on your system in a color-coded, easy-to-read layout.
# Install htop if you don't have it
sudo apt install htop # Ubuntu, Mint, Debian
sudo dnf install htop # Fedora
sudo pacman -S htop # Arch, Manjaro
# Run it
htop
Here's how to read htop without getting overwhelmed:
- Top bars: The colored bars at the top show CPU and memory usage. Green = normal processes, red = system/kernel processes. If these bars are mostly full, something is eating your resources.
- CPU% column: Shows how much processor power each program is using. Anything consistently above 80-100% is suspicious.
- MEM% column: Shows memory usage per process. Same deal — look for the big numbers.
- Sort by usage: Press
Pto sort by CPU usage, orMto sort by memory usage. The biggest resource hogs jump to the top. - Kill a process: Select it with arrow keys, press
F9, then choose signal 15 (SIGTERM) for a polite shutdown, or 9 (SIGKILL) to force it. - Quit htop: Press
q.
What to look for
| Resource | How to check | Warning signs |
|---|---|---|
| CPU | CPU% column in htop, or the CPU bars at the top | One or more cores stuck at 100% for a long time |
| RAM | MEM bar in htop, or run free -h | Memory bar nearly full with little "available" memory left |
| Disk I/O | Run iotop (may need to install it) | A process doing constant heavy reads/writes |
Common Causes and Fixes
A runaway process eating CPU
Sometimes a program gets stuck in a loop and eats all your CPU. You'll notice your fans spinning up and everything getting sluggish. This is the most common cause of sudden slowdowns.
Fix: Find the process in htop (sort by CPU with P) and kill it:
# In htop: select the process, press F9, choose 15 (SIGTERM), press Enter
# Or from any terminal, if you know the process name:
killall firefox # Politely ask it to close
killall -9 firefox # Force kill it (use if the above doesn't work)
Running out of RAM
When your computer runs out of physical memory (RAM), it starts using "swap" — a chunk of your hard drive that pretends to be RAM. Swap is much slower than real RAM, so everything grinds to a halt.
# Check your memory situation
free -h
# You'll see something like:
# total used free shared buff/cache available
# Mem: 7.7Gi 5.2Gi 512Mi 256Mi 2.0Gi 2.1Gi
# Swap: 2.0Gi 1.5Gi 512Mi
If "available" memory is very low (under a few hundred MB) and swap is heavily used, you're running out of RAM.
Fix:
- Close applications you're not using, especially browsers
- Check htop sorted by memory (
M) and kill anything using a disproportionate amount - If this happens regularly, you might need more RAM or a lighter desktop environment (see below)
Too many startup apps
If your system is slow right after booting, too many programs might be launching automatically. Just like on Windows, apps love to add themselves to startup.
Fix: Disable unnecessary startup applications:
- GNOME: Install GNOME Tweaks (
sudo apt install gnome-tweaks) and go to "Startup Applications" - KDE Plasma: System Settings > Startup and Shutdown > Autostart
- Cinnamon (Mint): Menu > Startup Applications
- XFCE: Settings > Session and Startup > Application Autostart
Go through the list and disable anything you don't need right at boot. You can always re-enable them later.
Disk is full
A nearly-full disk can make your whole system crawl, especially if there's no room for swap or temporary files. Things get really weird when you're under 5% free space.
# Check disk usage
df -h
# Look at the "Use%" column for your main partition (usually mounted at /)
# If it's above 90-95%, you need to free up space
Fix: See the per-distro cleanup commands section below for specific commands. Quick wins:
- Empty your trash (yes, really — trash still takes up disk space)
- Clear your browser cache
- Remove old downloads you don't need
- Clean up package manager caches (see below)
- Remove old snap versions (Ubuntu):
sudo snap list --allthen remove old revisions
# Find the biggest directories eating your space
du -sh ~/* | sort -rh | head -20
# Find large files (over 500MB)
find / -type f -size +500M 2>/dev/null
Wrong GPU drivers (especially NVIDIA)
If your desktop feels sluggish, animations are choppy, or videos stutter, you might be running on the wrong graphics driver. This is especially common with NVIDIA cards, which need proprietary drivers to work properly on Linux.
# Check which GPU driver you're using
glxinfo | grep "OpenGL renderer"
# If it says "llvmpipe" or "software rasterizer", you're NOT using your GPU
# That means everything is being rendered by your CPU, which is very slow
Fix: Install the proper drivers for your GPU. See our NVIDIA driver guide for detailed instructions. For AMD and Intel GPUs, the open-source drivers usually work out of the box.
Browser eating all your RAM
Modern web browsers are memory monsters. Each tab can use hundreds of megabytes of RAM. If you're the kind of person who keeps 30+ tabs open, your browser alone might be eating most of your memory.
Fix:
- Close tabs you're not actively using (bookmark them if you want to keep them)
- Use a tab suspender extension that unloads inactive tabs
- Try a lighter browser: Firefox is generally lighter than Chrome/Chromium. For really low-RAM systems, try Falkon, Midori, or GNOME Web (Epiphany)
- Disable unnecessary browser extensions — each one adds overhead
Old or slow hardware
If your computer is older (say, under 4 GB of RAM or a very old CPU), a full-featured desktop like GNOME or KDE might be asking too much of it. The good news: Linux gives you the freedom to pick a lighter desktop environment that can breathe life into old hardware.
Fix: Switch to a lighter desktop environment:
| Desktop | RAM usage (idle) | Best for |
|---|---|---|
| GNOME | ~1.0–1.5 GB | Modern hardware (8 GB+ RAM) |
| KDE Plasma | ~600–900 MB | Surprisingly efficient for what you get |
| Cinnamon | ~600–800 MB | Mid-range hardware |
| XFCE | ~400–500 MB | Older hardware (4 GB RAM) |
| LXQt | ~300–400 MB | Very old hardware (2 GB RAM) |
You can install a new desktop environment alongside your current one and choose it from the login screen. No need to reinstall your whole system.
# Example: install XFCE on Ubuntu
sudo apt install xfce4
# Example: install LXQt on Fedora
sudo dnf install @lxqt-desktop-environment
Deep Dives
Swap and swappiness explained
What is swap? Swap is a section of your hard drive (or SSD) that acts as "emergency RAM." When your real RAM gets full, Linux moves some inactive stuff from memory to swap so it can free up RAM for the things you're actively using.
The catch: your hard drive is way slower than RAM (even an SSD is 10-100x slower). So if your system is constantly swapping, everything feels sluggish. You'll hear people call this "thrashing."
Check your swap usage
# See how much swap is being used
free -h
swapon --show
What is swappiness?
Swappiness is a number from 0 to 200 that tells Linux how eagerly it should use swap. The default is usually 60.
- Lower value (e.g. 10): Linux tries harder to keep things in RAM and only swaps when it really has to. Better for desktops where you want things to feel snappy.
- Higher value (e.g. 60-100): Linux swaps more aggressively. Can be okay for servers but makes desktops feel slower.
How to adjust swappiness
# Check your current swappiness
cat /proc/sys/vm/swappiness
# Temporarily set it to 10 (resets on reboot)
sudo sysctl vm.swappiness=10
# Make it permanent: add this line to /etc/sysctl.conf
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
Checking disk health
If your system is slow and nothing else explains it, your hard drive or SSD might be failing. Drives don't always die suddenly — they often get slower and slower before giving up completely. This is especially true for older spinning hard drives (HDDs).
Check with SMART data
Most drives keep track of their own health using something called SMART. You can read it with smartctl:
# Install smartmontools
sudo apt install smartmontools # Ubuntu/Debian/Mint
sudo dnf install smartmontools # Fedora
sudo pacman -S smartmontools # Arch
# Check your drive's health (replace /dev/sda with your drive)
sudo smartctl -a /dev/sda
# Quick health check
sudo smartctl -H /dev/sda
# You want to see: PASSED
What to look for
- Overall health: If it says anything other than "PASSED", back up your data immediately
- Reallocated Sector Count: If this number is growing, your drive is developing bad spots
- Current Pending Sector Count: Sectors waiting to be remapped — not a great sign
- Power-On Hours: HDDs over 30,000-40,000 hours are living on borrowed time
HDD vs SSD
If you're still using a traditional spinning hard drive (HDD), upgrading to an SSD is the single biggest speed improvement you can make. It's like night and day — boot times go from minutes to seconds, and everything feels dramatically snappier. Even a cheap SSD will transform an old computer.
Per-Distro Cleanup Commands
Every distro's package manager caches downloaded packages. Over time, this cache can eat several gigabytes of disk space. Here's how to clean up on each major distro:
Ubuntu / Debian / Mint (apt)
# Remove packages that were installed as dependencies but are no longer needed
sudo apt autoremove
# Clean the package cache (downloaded .deb files)
sudo apt clean
# Remove old config files from uninstalled packages
sudo apt purge $(dpkg -l | grep '^rc' | awk '{print $2}')
# Clean up old snap versions (Ubuntu)
sudo snap list --all | awk '/disabled/{print $1, $3}' | \
while read snapname revision; do
sudo snap remove "$snapname" --revision="$revision"
done
# Clean thumbnail cache
rm -rf ~/.cache/thumbnails/*
# See how much space you freed
df -h /
Fedora (dnf)
# Remove unneeded dependencies
sudo dnf autoremove
# Clean the package cache
sudo dnf clean all
# Remove old kernels (keeps the current + one previous)
sudo dnf remove --oldinstallonly
# Clean thumbnail cache
rm -rf ~/.cache/thumbnails/*
# See how much space you freed
df -h /
Arch / Manjaro (pacman)
# Clean the package cache (keeps the 3 most recent versions)
sudo pacman -Sc
# More aggressive: remove ALL cached packages except installed versions
sudo pacman -Scc
# Remove orphaned packages (installed as deps, no longer needed)
sudo pacman -Rns $(pacman -Qdtq)
# If you use yay/paru, clean AUR build cache too
yay -Sc
# or
paru -Sc
# Clean thumbnail cache
rm -rf ~/.cache/thumbnails/*
# See how much space you freed
df -h /
openSUSE (zypper)
# Clean the package cache
sudo zypper clean --all
# Remove unneeded packages
sudo zypper packages --unneeded | awk -F'|' 'NR>3 {print $3}' | xargs sudo zypper remove
# Clean thumbnail cache
rm -rf ~/.cache/thumbnails/*
# See how much space you freed
df -h /
When to Consider a Lighter Distro or Desktop
If you've tried everything above and your system is still struggling, it might just be that your hardware can't keep up with a heavyweight desktop. That's not a failure — it's an opportunity. One of the best things about Linux is that you can pick an environment that matches your hardware.
Consider switching if:
- You have 4 GB of RAM or less and you're running GNOME or a heavy desktop
- Your CPU is 10+ years old and struggles with basic tasks
- You're on a spinning hard drive (HDD) and can't upgrade to an SSD
- You've cleaned everything up and it's still sluggish after a fresh boot
Good lightweight options:
- Linux Mint XFCE — familiar layout, lightweight, great for beginners
- Lubuntu — Ubuntu with the LXQt desktop, very light on resources
- Xubuntu — Ubuntu with XFCE, a solid middle ground
- MX Linux — Debian-based, fast, excellent on older hardware
- antiX — runs on hardware as old as 15-20 years, amazingly light