6.4.2. Programador de tiempo límite de E/S
Programador de tiempo límite de E/S intenta proporcionar latencia garantizada para solicitudes. Es importante anotar que la medida de latencia únicamente inicia cuando las solicitudes llegan al programador de E/S ( es una diferencia importante , ya que una aplicación puede poner a dormir o a esperar a los descriptores de solicitudes que van a liberarse). Por defecto, las lecturas tienen prioridad sobre las escrituras, puesto que es más probable que las aplicaciones se bloqueen en la lectura de E/S
El tiempo límite envía E/S en lotes. Un lote es una secuencia de E/S de lectura o escritura que aumenta el orden de LBA. Después de procesar cada lote, el programador de E/S verifica si las solicitudes de escritura han dejado de recibir los servicios por demasiado tiempo y luego decide si inicia o no un nuevo lote de lecturas y escrituras. La lista de solicitudes FIFO (Primero en entrar, primero en salir), únicamente es revisada en el inicio de cada lote y luego, en la dirección de ese lote. Por lo tanto, si se selecciona un lote de escritura y hay una solicitud de lectura que ya ha expirado, esa solicitud de lectura no será servida sino hasta que el lote termine.
Ajustables
fifo_batch
- Determina el número de lectura y escritura a emitir en un lote sencillo. El predeterminado es
16
. Un valor más alto, puede producir un mejor rendimiento, pero también un aumento en la latencia. front_merges
- Puede establecer este ajustable a
0
si sabe que su carga de trabajo nunca generará fusiones frontales. A menos que haya medido la sobrecarga de esta revisión, es aconsejable dejar el parámetro predeterminado:1
. read_expire
- Este ajustable le permite establecer el número en milisegundos, en el cual una solicitud de lectura debe ser servida. El predeterminado es
500
ms (medio segundo). write_expire
- Este ajustable le permite establecer el número en milisegundos, en el cual una solicitud de lectura debe ser servida. El predeterminado es
5000
ms (cinco segundos). writes_starved
- Este ajustable controla cuántos lotes de lectura pueden ser procesados antes de procesar un lote de escritura individual. Entre más alto se establezca, más preferencia se dará a las lecturas.