How to Reduce RAM & CPU Usage on Linux

Here’s a comprehensive guide to reducing RAM and CPU usage on Linux systems, with actionable steps for optimizing performance.

Alby Andersen

In Linux environments, efficient resource management is critical for maintaining system stability, performance, and scalability—whether you’re running a lightweight desktop setup or a high-demand server.


1. Identify Resource-Hungry Processes

First, pinpoint what’s consuming resources using these tools:

  • top or htop (interactive process viewer):
  top          # Live view of CPU/RAM usage (press `q` to exit)
  htop         # More user-friendly (install with `sudo apt install htop`)
  • ps (filter processes):
  ps aux --sort=-%mem | head -10   # Top 10 RAM-consuming processes
  ps aux --sort=-%cpu | head -10   # Top 10 CPU-consuming processes
  • vmstat or glances:
  vmstat -s    # Summary of memory usage
  glances       # Advanced monitoring (install with `sudo apt install glances`)

2. Terminate or Limit Unnecessary Processes

  • Kill processes:
  kill <PID>          # Gracefully terminate a process
  kill -9 <PID>       # Force-kill an unresponsive process
  • Limit CPU/RAM usage with cpulimit or systemd:
  cpulimit -l 50 -p <PID>   # Restrict a process to 50% CPU
  • Adjust OOM Killer (Out-of-Memory management):
    Tweak /proc/<PID>/oom_score_adj to prioritize which processes get killed first.

3. Optimize Startup Services

Disable unnecessary services running at boot:

  • For systemd systems:
  systemctl list-unit-files --type=service | grep enabled   # List enabled services
  sudo systemctl disable <service-name>                    # Disable a service
  • Common services to disable (if unused):
    bluetooth, cups, postfix, apache2, mysql.

4. Memory Optimization

Enable ZRAM/Zswap (Compressed Swap)

ZRAM compresses memory in RAM, reducing swap usage:

sudo apt install zram-tools   # Debian/Ubuntu
sudo dnf install zram-generator # Fedora/RHEL

Configure in /etc/default/zramswap or use systemd-zram-generator.

Adjust Swappiness

Reduce the kernel’s tendency to swap (default=60):

sudo sysctl vm.swappiness=10   # Temporary
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf   # Permanent

Clear Page Cache (Temporary Fix)

Free up cached memory:

sync; echo 1 | sudo tee /proc/sys/vm/drop_caches   # Clear page cache

5. CPU Optimization

Limit Background Cron Jobs

Check /etc/crontab and /var/spool/cron/ for resource-heavy scripts.

Tune Kernel Parameters

Edit /etc/sysctl.conf for CPU-related tweaks:

kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 10000000
kernel.sched_wakeup_granularity_ns = 15000000

Apply changes:

sudo sysctl -p

Use CPU Frequency Scaling

Install cpufrequtils and set governors to powersave:

sudo apt install cpufrequtils
echo 'GOVERNOR="powersave"' | sudo tee /etc/default/cpufrequtils
sudo systemctl restart cpufrequtils

6. Application-Level Tweaks

  • Use lightweight alternatives:
  • Replace Apache with Nginx or Lighttpd.
  • Use Alpine Linux containers instead of full VMs.
  • Swap GNOME/KDE for XFCE or LXQt desktop environments.
  • Adjust database configurations:
    Reduce innodb_buffer_pool_size for MySQL/MariaDB or shared_buffers for PostgreSQL.
  • Limit browser tabs/extensions: Browsers like Chrome/Firefox are major RAM hogs.

7. Kernel Tweaks (Advanced)

  • Use a lightweight kernel:
    Install linux-lowlatency (Ubuntu) or XanMod for better performance.
  • Remove unused kernel modules:
  sudo apt autoremove --purge   # Debian/Ubuntu

8. Other Tips

  • Update regularly: Newer kernels/apps often have performance fixes.
  • Use tmpfs for temporary files: Mount /tmp in RAM:
  echo "tmpfs /tmp tmpfs defaults,noatime,nosuid,size=1G 0 0" | sudo tee -a /etc/fstab
  • Monitor with automated tools:
    Use cron jobs to log resource usage or tools like Netdata/Monit.

Example: Reduce RAM Usage by MySQL

Edit /etc/mysql/my.cnf:

[mysqld]
innodb_buffer_pool_size = 256M   # Default is often 128M-1G; reduce if unused
key_buffer_size = 64M
thread_cache_size = 4

Summary of Key Fixes

IssueSolution
High RAM UsageKill bloated apps, enable ZRAM, clear cache.
High CPU UsageLimit processes, use powersave governor.
Background BloatDisable unused services, optimize startup.

By combining these strategies, you can significantly reduce resource usage on Linux servers or desktops.

Share This Article