|Portada|Blog|Space|

[Índice] > El scheduler para discos SCSI y USB

Como el disco duro USB en mi máquina no tenía un buen rendimiento en
peor caso es que decidí revisar si de alguna forma podía mejorar el
rendimiento.

El kernel 2.6.21 que es el que estoy usando en este momento trae como
scheduler (recomendado) por omisión el cfq. Scheduler que se supone que
aunque puede llegar a tener una pérdida de throughput ejecuta el
tradicional algoritmo del elevador dando un rendimiento parejo para todo
el disco.

A los hechos tener un cfq no aporta beneficios para los dispositivos
SCSI ni usb-storage, porque a lo que usan tagged queuing el fifo con las
peticiones de entrada y salida pasa a quedar en el dispositivo y no en
el kernel, por lo que no tiene ningún sentido usar cfq.

Se puede deshabilitar tagged queuing en los discos SCSI, pero no sé como
hacer para desactivarlo en los dispositivos USB. Así que probé usar otro
scheduler distinto:

Y el anticipatory scheduler funcionaba algo mejor dado que no se hacía
inusable el sistema bajo grandes cargas.

Al final probé el noop y literalmente con este me quedo dado que
funciona maravillosamente bien.

No sé a que se debe que el noop ande tan bien (o los otros tan mal),
pero por lo menos para los discos USB, de ahora en más recomiendo a los
usuarios del kernel 2.6.21 que usen el scheduler noop.

Las pruebas las hice levantando simultáneamente 3 pesados procesos de
variada naturaleza, un find, uno escribiendo enormes bloques de urandom
sobre una partición en el disco, y otro leyendo en crudo otra parte del
disco distinta. Y mientras los tres procesos corrían, medía el tiempo
que tomaba el leer archivos microscópicos (de menos de medio kilobyte).

Básicamente medí el tiempo de respuesta en peor caso.

---------
Los documentos en este sitio se encuentran licenciados bajo la GFDL.
Ver comentarios: [Hay i comentarios]
Para agregar un comentario: agregue a la URL: ?do=show_comment_form (explicación)