El sistema se bloquea cuando la E / S del disco está saturada

8

Cuando hago una transferencia de archivos grandes desde mi disco duro externo USB3 a mi disco duro interno (o viceversa), ya sea a través de Nautilus o por terminal, Ubuntu (Unity) se bloqueará casi por completo. Cosas como alt-tab tardan 20 segundos o más en completarse mientras se ejecuta la transferencia de archivos. Este no es el caso cuando hay muchas lecturas / escrituras aleatorias en el disco, como al instalar paquetes.

Cuando estaba ejecutando Windows, podía ejecutar una transferencia de archivos en segundo plano y aún poder hacer cosas, aunque más lentamente cuando algo necesitaba acceder al disco. Todavía podría alt-tab muy bien.

Parece que Ubuntu prioriza la transferencia de archivos por encima de todas las demás E / S de disco, por lo que se bloquea. En Windows parece que las transferencias de archivos tienen una prioridad más baja, lo que significa que el sistema puede responder mientras el disco está saturado.

¿Cómo puedo arreglar esto? Es bastante molesto, ya que la computadora se vuelve completamente inutilizable al copiar archivos. Este problema ocurre en 14.04 y 15.10. Me veo obligado a conectar mi disco duro a un puerto USB2 para evitar este problema, y ​​eso resulta en tiempos de transferencia mucho más largos.

Degru
fuente
No debería, pero verifique si unix.stackexchange.com/questions/107703/… ayuda
Rmano

Respuestas:

10

He tenido el mismo problema en mi computadora portátil, que tiene un sistema de disco bastante lento en comparación con el resto de la computadora.

Pude hacer esto mucho mejor, cambiando el algoritmo de programación utilizado para las transferencias de disco. Por defecto, Ubuntu usa Deadline, pero creo que mi sistema responde más rápidamente cuando uso cfq.

Para ver qué planificador está utilizando, emita el comando

cat /sys/class/block/sda/queue/scheduler    

Para hacer un cambio único (hasta el reinicio), emita el comando

echo cfq | sudo tee /sys/class/block/sda/queue/scheduler

Tenga en cuenta que es importante que se realice el cambio a lo que sea que tenga para su disco duro externo; El mío generalmente se carga como sdb. entonces yo emitiría el comandoecho cfq | sudo tee /sys/class/block/sdb/queue/scheduler

Hago mi cambio permanente para todas las unidades conectadas a mi computadora, agregando el parámetro del kernel elevator=cfqen mi archivo grub, que se ve así:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noautogroup elevator=cfq"
Charles Green
fuente
Wow, esto funcionó. ¡Gracias! Mi sistema ahora es mucho más receptivo durante la transferencia, y en realidad es más rápido al cargar cosas en general.
Degru
Me alegra saber que ayudó.
Charles Green
1
> De forma predeterminada, Ubuntu usa la fecha límite, pero creo que mi sistema responde más rápidamente cuando uso la fecha límite. Sospecho que querías que esta frase terminara en '... cuando uso cfq'.
markus_b
Nunca busqué una solución a esto por una razón u otra. Voté esta respuesta cuando se publicó hace unos días, ahora tuve la oportunidad de probarla (tuve que migrar muchos torrents de Diluvio a Transmisión, lo que requirió volver a comprobar cada torrente) y cambiar el programador fue realmente una mejora. El sistema todavía tartamudea, especialmente cuando se cambian los espacios de trabajo, pero seguramente no se cuelga casi por completo como solía hacerlo. ¡Gracias! Esta respuesta es tan útil que la OMI merece una recompensa (y estoy configurando una).
kos
@kos No es una solución completa, o yo mismo sería mucho más feliz, todavía tartamudeo ocasionalmente y encuentro que esto es muy frustrante.
Charles Green