See Also

Reducing Sync Calls

eatmydata

Another possible solution for saving non-crucial I/O is using eatmydata to ignore a software’s fsync calls.

Be careful. This may cause data loss in case of a power loss or an operating system crash. It’s called “eat my data” for a reason.

Syncing browser profiles to tmpfs and back

profile-sync-daemon is a tiny pseudo-daemon designed to manage your browser’s profile in tmpfs and to periodically sync it back to your physical disc (HDD/SSD). This is accomplished via a symlinking step and an innovative use of rsync to maintain back-up and synchronization between the two. One of the major design goals is a completely transparent user experience.

Unfortunately it’s said to only works with systemd as init system. (On the other hand, it’s not clear why you shouldn’t be able to call it from a hand-written .xsession file.)

Firefox/Gecko/XULRunner: toolkit.storage.synchronous

One notorious case of an annoyingly amount of fsync calls is Firefox and other Mozilla/Gecko/XULRunner based programs, because they use SQLite databases as backend for many features (history, bookmarks, cookies, etc.).

Instead of calling eatmydata firefox you can use about:config to set toolkit.storage.synchronous to 0. This specifies the SQLite disk sync mode used by the Mozilla rendering engine.

Nevertheless unburden-home-dir usually doesn’t help here, because it’s used for volatile data like caches while those SQLite databases usually contain stuff you don’t want to loose. But then again, setting toolkit.storage.synchronous to 0 may cause database corruption if the OS crashes or the computer loses power.

APT/dpkg

Not related to the home directory and hence not solvable at all with unburden-home-dir but nevertheless similar is the amount of sync calls in dpkg and APT.

Package list Diffs

If there’s too much I/O and CPU usage during apt-get update due to downloading and merging a lots of diffs, you may want to set Acquire::PDiffs to false to always download the whole package list instead of just diffs. Of course this only makes sense if you have a decent network connection.

I/O during upgrading packages

dpkg cares about a consistent state of files when unpacking packages, so it instructs the kernel to sync stuff to disk quite often, too. It though has an option named --force-unsafe-io to turn this safety off.

From dpkg’s man-page about --force-unsafe-io:

Do not perform safe I/O operations when unpacking. Currently this implies not performing file system syncs before file renames, which is known to cause substantial performance degradation on some file systems, unfortunately the ones that require the safe I/O on the first place due to their unreliable behaviour causing zero-length files on abrupt system crashes.

Note: For ext4, the main offender, consider using instead the mount option nodelalloc, which will fix both the performance degradation and the data safety issues, the latter by making the file system not produce zero-length files on abrupt system crashes with any software not doing syncs before atomic renames.

Warning: Using this option might improve performance at the cost of losing data, use with care.

Core dumps

If you want core dumps for debugging purposes, but don’t want to clutter your home directory with them, Corekeeper offers saving core dumps to /var/crash and also automatically cleans them up after a week by just installing one Debian package.

Cleaning Up Your Home Directory Half-Automatically

Autotrash

Autotrash is a simple Python script which will purge files from your trash based on their age or the amount of free space left on the device. Using autotrash -d 30 will delete files which have been in the trash for more then 30 days.

BleachBit

BleachBit is a GUI program which …

[…] quickly frees disk space and tirelessly guards your privacy. Free cache, delete cookies, clear Internet history, shred temporary files, delete logs, and discard junk you didn’t know was there. Designed for Linux and Windows systems, it wipes clean 90 applications including Firefox, Internet Explorer, Adobe Flash, Google Chrome, Opera, Safari,and more. Beyond simply deleting files, BleachBit includes advanced features such as shredding files to prevent recovery, wiping free disk space to hide traces of files deleted by other applications, and vacuuming Firefox to make it faster.

Mundus

Mundus is GUI program which …

[…] can help you keep your /home folder clean. It keeps an internal database of known applications and folders, and automagically detects those apps that where uninstalled but left configuration files. Each supported application is also called a module, and each folder it describes is called a submodule.

Computer Janitor

Computer Janitor was a command-line and GUI program to …

… clean up a system so it’s more like a freshly installed one.

Over time, a computer system tends to get cluttered. For example, software packages that are no longer needed can be uninstalled. When the system is upgraded from release to release, it may miss out on configuration tweaks that freshly installed systems get.

Computer Janitor is an application to fix these kinds of problems. It attempts to find software packages that can be removed, and tweak the system configuration in useful ways.

Unfortunately its development has stalled, it doesn’t work together with current APT versions and it has been removed from Debian and recent Ubuntu releases.

rmlint

rmlint is a commandline program (with optional GUI) which …

finds space waste and other broken things on your filesystem and offers to remove it. It is able to find:

  • Duplicate files & directories.
  • Nonstripped Binaries
  • Broken symlinks.
  • Empty files.
  • Recursive empty directories.
  • Files with broken user or group id.