GalaxyData Community

Best I/O scheduler to use

I/O scheduler

Different I/O requirements may benefit from changing from the Ubuntu distro default. A quick start guide to select a suitable I/O scheduler is below. The results are based on running 25 different synthetic I/O patterns generated using fio on ext2, ext3, ext4, xfs and btrfs with the various I/O schedulers using the 4.19 kernel.

Note: deadline is used below for deadline or mq-deadline, noop is used for noop or none depending on the multiqueue capablity of your device.

Section 1. SSD

 

                1st choice      2nd choice      avoid
Random I/O:     cfq/deadline                    bfq
Sequential I/O: deadline        none            bfq
Database I/O:   deadline        none            bfq
General I/O:    deadline        none            bfq

 

It is worth noting that there is little difference in throughput between the cfq/deadline/mq-deadline/kyber I/O schedulers when using fast multi-queue SSD configurations or fast NVME devices. In these cases it may be preferable to use a noop/none I/O scheduler to reduce CPU overhead.

Section 2. HDD

 

                1st choice      2nd choice      avoid
Random I/O:     deadline        bfq/cfq         bfq/none
Sequential I/O: deadline        bfq             none
Database I/O:   deadline                        bfq/none
General I/O:    deadline        bfq             none

 

Avoid using the none/noop I/O schedulers for a HDD as sorting requests on block addresses reduce the seek time latencies and neither of these I/O schedulers support this feature.

Of course, your usecase may differ, the above are just suggestions to start with based on some synthetic tests. You may find other choices with adjustments to the I/O scheduler tunables produce better results.

https://www.thomas-krenn.com/de/wiki/Linux_I/O_Scheduler

Exit mobile version