The Linux kernel's traditional handling of I/O requests (scheduling) presents a bottleneck for modern solid state storage devices because the design is predicted on a single request queue which becomes quickly saturated by modern drives.
As an alternative to the usual I/O schedulers (noop, deadline, cfq & bfq), the Linux Multi-Queue Block I/O Queueing Mechanism can be employed instead:
https://www.thomas-krenn.com/en/wiki/Li ... 8blk-mq%29
This splits any I/O requests into separate submission queues (allocated across all CPUs) and hardware dispatch queues that buffer requests directly from the driver; the parallelisation greatly increases overall I/O capability.
Better explanation here:
https://lwn.net/Articles/552904/
Method
Edit the file at /etc/default/grub (as root!) and change the GRUB_CMDLINE_LINUX line — add the two parameters between the quotation marks, like this:
Code: Select all
GRUB_CMDLINE_LINUX="scsi_mod.use_blk_mq=y dm_mod.use_blk_mq=y"
Code: Select all
# grub-mkconfig -o /boot/grub/grub.cfg
Code: Select all
Helium: ~ $ cat /sys/class/block/sda/queue/scheduler
none