Completely Fair Queueing ( CFQ ) es un programador de E / S para el kernel de Linux que fue escrito en 2003 por Jens Axboe . [1]
Descripción
CFQ coloca las solicitudes síncronas enviadas por los procesos en una serie de colas por proceso y luego asigna intervalos de tiempo para que cada una de las colas acceda al disco . La duración del intervalo de tiempo y el número de solicitudes que una cola puede enviar depende de la prioridad de E / S del proceso dado. Las solicitudes asincrónicas para todos los procesos se agrupan en menos colas, una por prioridad. Si bien CFQ no realiza una programación de E / S anticipada explícita , logra el mismo efecto de tener un buen rendimiento agregado para el sistema en su conjunto, al permitir que una cola de proceso esté inactiva al final de la E / S síncrona y, por lo tanto, "anticipa" un mayor cierre. E / S de ese proceso. Puede considerarse una extensión natural de otorgar intervalos de tiempo de E / S a un proceso. [2]
Historia
Antes de la integración
En febrero de 2003, Andrea Arcangeli presentó su idea de un programador de E / S de cola equitativa estocástica a Jens Axboe, quien luego lo implementó. Jens Axboe realizó mejoras en la primera implementación de hufllzD.is, llamando a la nueva versión el programador Completely Fair Queueing, y produjo un parche para aplicarlo al kernel de la serie de desarrollo 2.5.60.
Kernel 2.6.6 (10 de mayo de 2004)
El programador de E / S de CFQ se integró por primera vez en el núcleo principal como un programador de E / S opcional. Era posible cambiar el planificador en el momento del arranque con el parámetro 'ascensor' al kernel.
Kernel 2.6.9 (19 de octubre de 2004)
Red Hat Enterprise Linux 4 usó este programador de E / S como predeterminado a pesar de que usaba un kernel basado en 2.6.9. [3]
Kernel 2.6.10 (24 de diciembre de 2004)
La segunda versión del programador CFQ denominado CFQv2 se incluye en 2.6.10, las mejoras incluyen una mejor capacidad de respuesta y la eliminación de algunos problemas de inanición que estaban presentes en la versión anterior. El planificador ahora también se puede cambiar en tiempo de ejecución modificando la variable / sys / block /
Kernel 2.6.13 (27 de junio de 2005)
El programador de CFQ se trasladó a un nuevo diseño de tiempo dividido denominado CFQv3. Entre otras cosas, implementa ioprio_get (2) y ioprio_set (2) que permite al usuario establecer prioridades de E / S por proceso, generalmente usando el comando ionice (1) (aunque el uso de nice (1) también modifica un poco las prioridades de E / S)
Kernel 2.6.18 (20 de septiembre de 2006)
CFQ se convirtió en el programador predeterminado, reemplazando al programador anticipatorio . [4]
Kernel 5.0 (03/03/2019)
Ver también
Referencias
- ^ "Código fuente del planificador IO, (contiene información de derechos de autor en el encabezado)" . Consultado el 28 de diciembre de 2017 .
- ^ Bessie Palos (octubre de 2014). "Programación de E / S anticipada explícita - Estudio de caso" . Consultado el 13 de agosto de 2015 .
- ^ D. John Shakshober (junio de 2005). "Elección de un programador de E / S para Red Hat® Enterprise Linux® 4 y el kernel 2.6" . Revista Red Hat . Archivado desde el original el 27 de agosto de 2007 . Consultado el 20 de noviembre de 2011 .
- ^ Jens Axboe (junio de 2006). "Linux Kernel 2.6.18 - Haga que CFQ sea el programador de E / S predeterminado" . Consultado el 20 de marzo de 2016 .
- ^ Jens Axboe (12 de octubre de 2018). "bloque: eliminar los programadores de E / S heredados" . Consultado el 25 de octubre de 2020 .
- ^ Linus Torvalds (28 de diciembre de 2018). "Combinar etiqueta 'for-4.21 / block-20181221' de git.kernel.dk/linux-block" . Consultado el 25 de octubre de 2020 .
Fuentes
- Breve detalle sobre CFQ (archivado desde aquí )
- Próximamente en 2.6.10
enlaces externos
- Documentación de CFQ desde el código fuente de Linux
- CFQ: guía de ajuste de la base de conocimientos de RedHat