Puede configurar esto en el arranque agregando el parámetro "ascensor" a la línea cmd del kernel (como en grub.cfg)
Ejemplo:
elevator=deadline
Esto hará que "deadline" sea el programador de E / S predeterminado para todos los dispositivos de bloque.
Si desea consultar o cambiar el programador después de que el sistema se haya iniciado, o si desea usar un programador diferente para un dispositivo de bloque específico, le recomiendo instalar y usar la herramienta ioschedset para facilitar esta tarea.
https://github.com/kata198/ioschedset
Si está en Archlinux, está disponible en aur:
https://aur.archlinux.org/packages/ioschedset
Algunos ejemplos de uso:
# Get i/o scheduler for all block devices
[username@hostname ~]$ io-get-sched
sda: bfq
sr0: bfq
# Query available I/O schedulers
[username@hostname ~]$ io-set-sched --list
mq-deadline kyber bfq none
# Set sda to use "kyber"
[username@hostname ~]$ io-set-sched kyber /dev/sda
Must be root to set IO Scheduler. Rerunning under sudo...
[sudo] password for username:
+ Successfully set sda to 'kyber'!
# Get i/o scheduler for all block devices to assert change
[username@hostname ~]$ io-get-sched
sda: kyber
sr0: bfq
# Set all block devices to use 'deadline' i/o scheduler
[username@hostname ~]$ io-set-sched deadline
Must be root to set IO Scheduler. Rerunning under sudo...
+ Successfully set sda to 'deadline'!
+ Successfully set sr0 to 'deadline'!
# Get the current block scheduler just for sda
[username@hostname ~]$ io-get-sched sda
sda: mq-deadline
El uso debe ser autoexplicativo. Las herramientas son independientes y solo requieren bash.
¡Espero que esto ayude!
EDITAR: Descargo de responsabilidad, estos son los guiones que escribí.
noop
en medios no rotacionales, pero el kernel no tiene esa funcionalidad. De alguna manera tiene detección de medios no rotacionales, pero no es confiable ya que algunos discos informan erróneamente de sí mismos y aún no está conectado al código del programador de E / S de todos modos.