The Linux kernel comes with a set of schedulers that can be used to alleviate the I/O behavior on disks and partitions.
noop, fine with SSDs, but can kill local disks on no-reordering of writes. Has more effects for sequential I/O writes like WAL flush by having pg_xlog on a different partition for example
deadline, great for Postgres but interactive workloads are impacted by it
cfq, a good balance for everything, and is the default on Linux
It is usually best to use the default scheduler except when trying to solve a specific issue. Also, please note that everything else than cfq would perform badly on non-enterprise class storages (SAN).