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