You can enhance your kernel by adding new I/O schedulers if needed. Globally, governors and schedulers are the same; they both provide a way how the system should work. However, for the schedulers it is all about the input/output datastream except for the CPU settings. I/O schedulers decide how an upcoming I/O activity will be scheduled. The standard schedulers such as noop or cfq are performing very reasonably.
I/O schedulers can be found in kernel_source/block.
Copy your I/O scheduler file (for example, sio-iosched.c) and browse to kernel_source/block. Paste the scheduler file there.
Now open Kconfig.iosched and add your choice to the Kconfig, for example for SIO:
config IOSCHED_SIO tristate "Simple I/O scheduler" default y ---help--- The Simple I/O scheduler is an extremely simple scheduler, based on noop and deadline, that relies on deadlines to ensure fairness. The algorithm does not do any sorting but basic merging, trying to keep a minimum overhead. It is aimed mainly for aleatory access devices (eg: flash devices).
Then set the default choice option as follows:
default "sio" if DEFAULT_SIO
Save the file.
Open the Makefile in kernel_source/block/ and simply add the following line for SIO:
obj-$(CONFIG_IOSCHED_SIO) += sio-iosched.o
Save the file and you are done! The I/O schedulers should now pop up at the menu config.
Similar commit on GitHub: added Simple I/O scheduler.