One often has to use temporary files to store temporary data, and this is often done under UNIX using the /tmp directory (or /var/tmp directory).
Well, it works, but the /tmp directory is a real directory on your hard drive (at least on Linux), and if you really need to use temporary stuff, it’s not really interesting to put it on your hard drive. Nowadays we have a lot of RAM memory. Why not using it for temporary files? This is where /dev/shm appears!

/dev/shm is a “virtual directory” that exists only in your RAM. Technically, it’s a normal directory but where part of your RAM is mounted, using a special filesystem known as tmpfs. This can be seen using mount:

$ mount | grep tmpfs
tmpfs on /dev/shm type tmpfs (rw)

You can use as much space here as the half of your total available RAM (by default, this can be changed but is probably not a good idea). I often use it for files that need to be actively seeked in, which is not hard-drive friendly at all. Of course, writing and reading to /dev/shm is blazing fast, as everything only takes place in RAM.

Now, don’t worry, all the /dev/shm space is not “exclusively reserved”, which means that, if only 1 MiB is used on it, only 1 MiB will be used in your RAM, not the whole half of your memory available. This can be seen as an automatically-adjusting area of memory, which stops to expand when it reaches the half of your physically installed RAM. Of course, when you switch off your machine, all the content of /dev/shm instantly disappears. Now, I really wonder how could I have lived without it…

Oh, and if you want to change the maximum amount of RAM which can be used by a tmpfs mount point, use this command:

# mount -o remount,size=64m /dev/shm

Which would limit the virtual filesystem to a maximum of 64 MiB, as reported by df:

$ df -h /dev/shm/
Filesystem            Size  Used Avail Use% Mounted on
tmpfs                  64M   36M   29M  56% /dev/shm