Kernel 4.14.7 with deadline io scheduler builtin
December 21, 2017 —
BarryK
The last release of Easy and Quirky use the cfq i/o scheduler. I think that this is what most distros use. However, this web page advises that the deadline i/o scheduler is preferable for flash memory (which includes USB-sticks, SD-cards and SSDs):
http://tombuntu.com/index.php/2008/09/04/four-tweaks-for-using-linux-with-solid-state-drives/
Easy is built with /etc/rc.d/BOOTCONSTRAINED which has this entry:
BOOT_SCHEDULER='deadline'
At bootup, /etc/rc.d/rc.sysinit reads this variable, and executes
this, where $PDEV is the drive (ex: sda) that Easy is installed in:
echo $BOOT_SCHEDULER > /sys/block/${PDEV}/queue/schedulerGood, except that it doesn't work, as the deadline scheduler is a kernel module, that hasn't been loaded. The module is deadline-iosched.ko, and this could be explicitly loaded, however, I decided to recompile the kernel with this driver builtin.
echo 1 > /sys/block/${PDEV}/queue/iosched/fifo_batch
Grabbed latest kernel source, 4.14.7, and here it is, with patches and build scripts:
http://distro.ibiblio.org/easyos/source/kernel/4.14.7/
The PET (31.4MB):
http://distro.ibiblio.org/easyos/amd64/packages/pet/pet_packages-pyro/linux_kernel-4.14.7-pyro64.pet
Source SFS (153.4MB):
http://distro.ibiblio.org/easyos/amd64/packages/sfs/pyro/kernel_src-4.14.7-patched.sfs
The configuration was at "Enable the block layer -> IO schedulers"
I am running with the deadline scheduler right now, booted from a USB-stick which is sdc. This confirms (the square brackets show the current selection):
# cat /sys/block/sdc/queue/schedulerThere are some other issues with that /etc/rc.d/BOOTCONSTRAINED that I need to look at.
noop [deadline] cfq
Tags: easy