Completely Fair Queuing ( CFQ ) es un planificador 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 varias colas por proceso y luego asigna segmentos de tiempo a cada cola para acceder al disco . La duración del segmento de tiempo y la cantidad de solicitudes que una cola puede enviar dependen de la prioridad de E/S del proceso en cuestión. Las solicitudes asíncronas de todos los procesos se agrupan en menos colas, una por prioridad. Si bien CFQ no realiza una planificación de E/S anticipatoria 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 permanezca inactiva al final de la E/S síncrona, "anticipando" así más E/S cercana de ese proceso. Puede considerarse una extensión natural de la asignación de segmentos de tiempo de E/S a un proceso.
Historia
Antes de la integración
En febrero de 2003, Andrea Arcangeli le presentó a Jens Axboe su idea para un planificador de E/S de cola estocástica justa, quien la implementó. Jens Axboe mejoró su primera implementación, denominando a la nueva versión planificador de cola completamente justa, y creó un parche para aplicarlo al kernel de la serie de desarrollo 2.5.60.
Kernel 2.6.6 (10 de mayo de 2004)
El planificador de E/S CFQ se integró inicialmente en el núcleo principal como un planificador de E/S opcional. Era posible cambiar el planificador al arrancar el sistema con el parámetro 'elevator' al núcleo.
Kernel 2.6.9 (19 de octubre de 2004)
Red Hat Enterprise Linux 4 utilizó este planificador de E/S como predeterminado a pesar de que utilizaba un kernel basado en la versión 2.6.9. [ 2 ]
Núcleo 2.6.10 (24 de diciembre de 2004)
La segunda versión del planificador CFQ, denominada CFQv2, se incluye en la versión 2.6.10. Entre las mejoras se incluyen una mayor capacidad de respuesta y la eliminación de algunos problemas de inanición presentes en la versión anterior. Ahora, el planificador también se puede cambiar en tiempo de ejecución modificando la variable /sys/block/<block_device>/queue/scheduler en el sistema de archivos sysfs .
Núcleo 2.6.13 (27 de junio de 2005)
El planificador CFQ adoptó un nuevo diseño de división de tiempo denominado CFQv3. Entre otras cosas, implementa ioprio_get(2) e ioprio_set(2), que permiten al usuario establecer prioridades de E/S por proceso, generalmente mediante el comando ionice(1) (aunque el uso de nice(1) también modifica las prioridades de E/S en cierta medida).
Núcleo 2.6.18 (20 de septiembre de 2006)
CFQ se convirtió en el planificador predeterminado, reemplazando al planificador anticipatorio . [ 3 ]
Kernel 5.0 (3 de marzo de 2019)
CFQ ha sido eliminado. [ 4 ] [ 5 ] CFQ evolucionó a Budget Fair Queueing (BFQ) . [ 6 ] [ 7 ]
Véase también
Referencias
- ↑ "Código fuente del planificador de E/S (contiene información de derechos de autor en el encabezado)" . Consultado el 28 de diciembre de 2017 .
- ↑ D. John Shakshober (junio de 2005). "Cómo elegir un planificador de E/S para Red Hat® Enterprise Linux® 4 y el kernel 2.6" . Revista Red Hat . Archivado del original el 27 de agosto de 2007. Consultado el 20 de noviembre de 2011 .
- ↑ Jens Axboe (junio de 2006). "Núcleo de Linux 2.6.18: Hacer de CFQ el planificador de E/S predeterminado" . Consultado el 20 de marzo de 2016 .
- ↑ Jens Axboe (12 de octubre de 2018). "Bloqueo: eliminar planificadores de E/S heredados" . Consultado el 25 de octubre de 2020 .
- ↑ Linus Torvalds (28-12-2018). "Combinar la etiqueta 'for-4.21/block-20181221' de git.kernel.dk/linux-block" . Consultado el 25-10-2020 .
- ↑ "Planificador de E/S de cola con presupuesto justo" .
- ↑ "Planificador de E/S BFQ en cola para Linux 4.12 - Phoronix" . www.phoronix.com .
Fuentes
- Breve información sobre CFQ (archivada desde aquí )
- Disponible el 2 de junio de 2010.
Enlaces externos
- Documentación de CFQ a partir del código fuente de Linux
- CFQ - Guía de ajuste de la base de conocimientos de Red Hat
- Algoritmos de planificación de disco
- Características del kernel de Linux
- Algoritmos de planificación