The Linux kernel, the core of the operating system, is responsible for controlling disk access by using kernel IO scheduling.
This article explains how-to change the IO scheduler without recompiling the kernel and without restart.
Check the currently used IO scheduler
noop anticipatory [deadline] cfq
Proxmox VE uses deadline by default, delivers best performance on hardware raid and SAN environments.
Switching IO Schedulers on runtime
Set the scheduler for /dev/sda to Deadline:
echo deadline > /sys/block/sda/queue/scheduler
Set the scheduler for /dev/sda to CFQ:
echo cfq > /sys/block/sda/queue/scheduler
Set IO Schedulers permanently
In order to choose a new default scheduler you need to add the following into your /etc/default/grub:
After you change /etc/default/grub you need to run update-grub to apply changes: