Tengo algunas máquinas virtuales que ejecutan la imagen 14.04-1 LTS basada en la nube de Ubuntu. Quería ver el rendimiento de IO de diferentes programadores de IO en la VM, así que fui /sys/block/<drive>/queue/scheduler
al sistema operativo invitado para cambiar el programador de IO. Por lo general, debería haber cfq
, deadline
o noop
para elegir. Pero lo que vi es none
. ¿Significa que Canonical ha eliminado el programador de E/S en la imagen basada en la nube o que el programador none
aquí es el programador renombrado noop
? ¿Y qué pasa si no tenemos un programador de E/S en el sistema? ¿Todas las solicitudes de io se enviaron directamente al host en orden FIFO?
¡Gracias por arrojar algo de luz!
Respuesta1
Programador IO de baja latencia
(Este paso no es necesario para los SSD que utilizan el protocolo NVMe en lugar de SATA, que omiten el programador de E/S tradicional y utilizan el
blk-mq
módulo en su lugar).El programador de E/S predeterminado pone en cola los datos para minimizar las búsquedas en los HDD, lo cual no es necesario para los SSD. Por lo tanto, utilice el
"deadline"
programador que simplemente garantiza que las transacciones masivas no ralenticen las transacciones pequeñas: instalesysfsutils
yecho "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf
(ajuste sdX para que coincida con su SSD) reinicie o
echo deadline > /sys/block/sdX/queue/scheduler
Entonces, la respuesta es: none
NO es un alias para noop
. none
significa "el programador no se utiliza".
Respuesta2
Parece que en los kernels >= 3.13 ya none
no es un alias noop
. Se muestra cuando elblk-mq
marco de E/SEstá en uso; esto significa una omisión completa de los antiguos programadores, ya blk-mq
que (en este momento) no tiene ningún programador para seleccionar.
En kernels anteriores, none
realmente hay un alias poco documentado para noop
. Veraquípara más detalles.
Respuesta3
Ninguno no es un alias de noop.
No se muestra ninguno porque no hay ningún programador en uso. Los SSD que utilizan el protocolo NVMe en lugar de SATA omiten el programador de E/S tradicional.
Respuesta4
https://wiki.ubuntu.com/Kernel/Reference/IOSchedulers
none (Multicola) El programador de E/S no operativas de múltiples colas. No reordena las solicitudes, gastos generales mínimos. Ideal para dispositivos de E/S aleatorias rápidas como NVME.