My home server has a LSI megaraid_sas (Dell PERC 5/i) card to manage its stable of hard drives. It should be given more credit for its smarts.

The Linux kernel has a variety of I/O schedulers ("elevators") available. Most of them are tuned to work well if the underlying storage subsystem resembles a plain disk. A plain disk prefers to handle nicely sorted requests so it doesn't have to seek all over the place. But a high-end hardware RAID card is not like that. It can take unsorted I/O and talk efficiently to its private hard drives. In fact, it does a better job. Here's a quick bonnie++ run with the default (cfq) and the trivial (noop) schedulers:

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
super.elastic.or 8G 50565  84 95278  33 38812  12 31639  45 78279   9  70.8   0
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  1781  34 +++++ +++ 22777  99  4966  93 +++++ +++ 22423  97
super.elastic.org,8G,50565,84,95278,33,38812,12,31639,45,78279,9,70.8,0,16,1781,34,+++++,+++,22777,99,4966,93,+++++,+++,22423,97

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
super.elastic.or 8G 56135  92 123017  43 51806  16 49672  70 166943  22 350.5   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  2634  50 +++++ +++ 22970  99  5227  99 +++++ +++ 23051  97
super.elastic.org,8G,56135,92,123017,43,51806,16,49672,70,166943,22,350.5,1,16,2634,50,+++++,+++,22970,99,5227,99,+++++,+++,23051,97

As you see, the noop scheduler does better than the cfq one, in every test, in some cases drastically. As in that wonderful line from Toy Story, "(Bo:) I found my movin' buddy!".

By the way, a similar argument applies to virtualized guest operating systems running under a host OS. The host is probably in a better position to sort I/O than the guests, so they should also just use the noop I/O elevator.