The key to my success has been the use of Zswap. In a nutshell, Zswap compresses pages that would be normally swapped out of RAM (and onto disk) into a separate storage area (in RAM) that is first compressed before being queued for swapping. This effectively increases the RAM of the computer in exchange for CPU time. With a system that is heavily I/O constrained, this is a very reasonable trade-off to make.
In order to make the default installation of Manjaro XFCE functional under such constraints:
- Edit /etc/default/grub and configure zswap to use the more space-efficient deflate compressor:
- Append "zswap.enabled=1 zswap.compressor=deflate zswap.max_pool_percent=90" to GRUB_CMDLINE_LINUX_DEFAULT
- Add the deflate module to the initial ramdisk by editing /etc/mkinitcpio.conf:
- Append "deflate" to MODULES
- Look inside of /etc/mkinitcpio.d/ to determine what profile to specify for rebuilding the ramdisk. If you are using the Linux 4.2 kernel (recommended):
mkinitcpio -p linux42
- Uninstall the resource-hungry pulseaudio subsystem:
- pacman -R pulseaudio pulseaudio-ctl pulseaudio-alsa
- Install and use QupZilla as the default web browser
- pacman -Sy qupzilla
- For even better performance, change QupZilla's User-Agent string to an Android Webkit-based mobile device:
- Edit -> Preferences -> Other -> Change browser identification / User Agent Manager -> Change global User Agent
Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; HTC Sensation Build/IML74K) AppleWebKit/538.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/538.1
On such a machine -- and in order to reduce slow disk I/O -- it might be advantageous to use a btrfs root filesystem mounted with gzip compression.