Ureadahead
Ureadahead (Über-readahead) is used to speed up the boot process. It works by reading all the files required during boot and makes pack files for quicker access, then during boot reads these files in advance, thus minimizes the access times for the harddrives.
Requirements
Currently, ureadahead needs a kernel patch to work. This is provided by ying in the AUR.
Ureadahead is also available, of course.
How it works
When run without any arguments, ureadahead checks for pack files in /var/lib/ureadahead, and if none are found or if the packfiles are older than a month, it starts tracing the boot process. When it's tracing, it waits for either a TERM or INT signal before generating the pack file.
Otherwise, if the file is up to date, it just reads the pack file in preparation for the boot.
It works for both SSDs and traditional harddrives and automatically optimizes the pack files depending on which you have.
Using ureadahead
First you need the patched kernel. Then you need to generate the pack files by running
$ ureadahead --timeout=300
This lets ureadahead trace the boot process for 5 minutes before killing the trace and generating the pack files.
When you've generated the packfiles, you need to start ureadahead during boot. Simply create the file /etc/rc.d/functions.d/ureadahead and add
ureadahead() { /sbin/ureadahead --timeout=240 } add_hook sysinit_end ureadahead
to start it after sysinit.
Now you should be good to go.
Configuration
There isn't really much in the way of configuring ureadahead. If you want to retrance the boot sequence (After installing new daemons or after upgrading the kernel) you can use
$ ureadahead --timeout=300 --force-trace
It can also be called with
$ ureadahead /<mountpoint>
to generate a packfile for that particular mountpoint. This is useful if you have /usr or /var on separate partitions. Combine it with --timeout to automatically kill the tracing, or just use ^C.