Deadline Scheduler es un programador de E/S para el kernel de Linux y garantiza una hora de inicio de servicio para una solicitud. Deadline Scheduler impone fechas límite en todas las operaciones de E/S para evitar requests deseadas. Se mantienen dos colas de lectura y escritura de fecha límite (básicamente ordenadas por su fecha límite). Para cada nueva solicitud, el programador selecciona qué cola atenderá. Las colas de lectura tienen mayor prioridad que las colas de escritura porque durante las operaciones de lectura, los procesos generalmente se bloquean.
Ahora, el programador de fecha límite verifica si la primera solicitud en la cola de fecha límite ha expirado y luego se atiende un lote de requests de la cola ordenada. El planificador atiende un lote de requests después de la solicitud elegida en la cola ordenada.
De forma predeterminada, el tiempo de caducidad de la solicitud de lectura es de 500 ms y las requests de escritura de 5 segundos.
Entendámoslo con un escenario:
supongamos que hay tres procesos P1, P2 y P3 con sus respectivos plazos. Entonces, el programador de fecha límite establece que si P1 realiza una solicitud en el momento t . No puede volver a realizar una solicitud en algún intervalo de tiempo.
Valores ajustables del programador de E/S de fecha límite:
Nota:
cuando un parámetro del kernel se puede cambiar durante el tiempo de ejecución, se denomina parámetro ajustable. Use el comando sysctl para ver los parámetros del kernel tanto estáticos como ajustables.
- fifo_batch (entero) :
Este ajustable determina el número de requests de lectura o escritura para emitir en un solo lote, ordenadas en términos de número de sector creciente.
- read_expire(entero) :
Este ajustable determina el tiempo en milisegundos en el que se debe atender una solicitud de lectura. A la solicitud de lectura en el programador de E/S se le asigna una fecha límite, es decir, hora actual + valor de caducidad de lectura (milisegundos).
- write_expire(integer) :
este ajustable determina el tiempo en milisegundos en el que se debe atender una solicitud de escritura. Es lo mismo que read_expire pero para operaciones de escritura. - writes_starved(integer) :
este ajustable controla la cantidad de lotes de lectura que se procesarán antes de procesar un solo lote de escritura. Cuanto mayor sea el valor de hambre de escritura, mayor será la preferencia de lectura. - front_merges(bool integer) :
se realiza una combinación frontal cuando colocamos una solicitud al frente de la cola y una combinación posterior es opuesta a la combinación frontal. Debido a la forma en que los archivos se distribuyen normalmente, la combinación posterior es más común que la combinación frontal. Aquí, el programador de E/S fusiona las requests más pequeñas en operaciones ya establecidas. Si el sintonizable de combinación frontal se establece en cero, deshabilita la funcionalidad de la combinación frontal.
Publicación traducida automáticamente
Artículo escrito por nikitadabral30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA