Using RAM for transient data
When a system have lots of I/O, trouble may arise. If an optical hard drive is über-solicited, quite easily you may get many kinds of failures, high CPU load, just because of I/O errors. In such case, using RAM as disk, aka RAM disk, may be a good option, as it allows way more I/O than an optical hard drive. Solid State Drive (SSD) addresses partly this issue, but it seems to, still, have way higher access time and latency than RAM. RAM disk, on the other hand, is non persistent (unlike SSD, though), quite an annoying drawback so even if you write some scripts to save data, you will loose some in case of power failure.
RAM disk is, actually, especially appropriate for temporary data, like /var/run, /var/lock or /tmp. Linux >= 2.4 supports tmpfs, some kind of RAM disk, that (as far I understand) does not reserve blocks of memory (meaning: it does not matter if you have a big tmpfs, unused memory in the tmpfs will still be available to the whole system).
Most of my computers have more than 1 Gb RAM. And, most of the time, they never use the Swap space. For instance (relevant lines are si and so, as swap in, swap out):
bender:$ vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 4146984 674704 1309432 0 0 6 9 3 34 2 1 97 0 nibbler:$ vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 862044 23944 84088 0 0 10 0 42 22 0 0 99 0 moe:$ vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 280552 166884 1297376 0 0 7 58 73 12 8 2 90 1
So they are good candidates to use tmpfs whenever possible. Do so with Debian GNU/Linux is fast-forward. Just edit /etc/default/rcS as follows (for /var/run & /var/lock):
RAMRUN=yes RAMLOCK=yes
and add, in /etc/fstab (for /tmp):
tmpfs /tmp tmpfs defaults 0 0
Next time you boot, diskfree should provide you with something like:
$ df Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 1033292 0 1033292 0% /lib/init/rw varrun 1033292 648 1032644 1% /var/run varlock 1033292 0 1033292 0% /var/lock tmpfs 1033292 4 1033288 1% /dev/shm tmpfs 1033292 0 1033292 0% /tmp