sábado, 20 de diciembre de 2025

Atinar mq-deadline para un mini PC con SSD

 Reducir la latencia y evitar el colapso del sistema cuando se ejecutan las operaciones de lectura y escritura hacia el SSD es el cometido de mq-deadline (Multi-Queue deadline. Multi colas con tiempo máximo). El planificador por defecto de las operaciones de lectura y escritura hacia el SSD en los kernel modernos es mq-deadline, que usa blk-mq (Multi-Queue Block Layer), la moderna arquitectura del kernel que aprovecha las CPUs multinúcleo y dispositivos rápidos como SSD y NVMe.

mq-deadline se basa en tres principios simples:

  • Separación de lecturas y escrituras. Las lecturas tienen prioridad, ya que bloquean procesos y afectan directamente a la fluidez del sistema.
  • Deadlines por petición. Cada operación tiene un tiempo máximo de espera. Si se alcanza ese límite, la petición se ejecuta inmediatamente, aunque no sea la más eficiente de agrupar.
  • Reordenamiento moderado. Agrupa peticiones cercanas cuando es posible, pero sin la complejidad de schedulers (planificadores) antiguos pensados para discos mecánicos.

El resultado es un comportamiento predecible, estable y de baja latencia, ideal para hardware moderno. 

 ¿Por qué mq-deadline es ideal para mini PC?

En mini PC con SSD o NVMe:

  • El tiempo de acceso es muy bajo
  • La prioridad es la latencia estable
  • El consumo de CPU debe ser mínimo

mq-deadline cumple perfectamente estos objetivos:

  • Excelente rendimiento en escritorio
  • Buena respuesta bajo carga
  • Comportamiento robusto en multitarea
  • Muy bajo overhead (recursos redundantes para ejecutar una misma cosa)

Por eso es el scheduler por defecto en la mayoría de distribuciones.

 En un Terminal comprobamos si está activo mq-deadline por defecto ejecutando:

 cat /sys/block/sda/queue/scheduler

 

Si devuelve  none [mq-deadline] es que está activo. Si el SSD no está en sda, en el comando anterior ponerle el correspondiente.

Ahora, afinamos esos parámetros que idealizarán la ejecución de mq-deadline en nuestro mini PC:

Ejecutamos en un Terminal con permisos administrativos (root) los siguientes comandos:

echo 0 | tee /sys/block/sda/queue/rotational
echo 256 | tee /sys/block/sda/queue/nr_requests 

(Si usamos sudo, sería asi:

 echo 0 | sudo tee /sys/block/sda/queue/rotational
echo 256 | sudo tee /sys/block/sda/queue/nr_requests )

Reiniciamos el mini PC.
 

Aquí podemos ver el cambio realizado:

Comprobamos con el siguiente comando que está cargado:

ls /sys/block/sda/queue/iosched/

Si aparecen los siguientes archivos después de ejecutar el comando, todo OK.

fifo_batch, read_expire, write_expire, writes_starved


 Con el siguiente comando podemos ver cómo trabaja y cambian los valores de las variables cada vez que lo ejecutamos:

cat /sys/block/sda/stat


En una red social que uso, cuando navegaba --debido a la lentitud de la red WIFI-- tenía un lag que me ponía nervioso, y aunque también me enfurecía por lo que dicen en los comentarios de estas peculiares redes, lo cierto es que en esto y en otros menesteres se nota mejoría evidente.

El Mini con N5100, sin ventilar y ruido alguno, mola con estas pequeñas cosas. 

 

No hay comentarios:

Publicar un comentario