Cuando copio archivos ay desde dispositivos USB (cámara, HDD, tarjeta de memoria) mi sistema se vuelve muy lento. Por ejemplo, si deseo cerrar una ventana, muevo el mouse, pero se tarda unos 2 segundos o más antes de que se mueva el cursor del mouse. Cuando finalmente coloco el cursor sobre la x y hago clic, no pasa nada durante más de 10 segundos. He intentado esto con todos los efectos de escritorio deshabilitados, pero el problema persiste.
Software: Linux Mint 9 KDE Hardware:
- Placa madre Asus SLI
- GPU NVidia 6600
- 2 GB de RAM
- 2 GB de intercambio
- AMD Athlox X2 @ 3800+
Para mí, este hardware no debería tener ningún problema al ejecutar este software y no lo hace hasta que copie los archivos con USB. ¿Dónde debería comenzar a buscar para resolver esto? Estoy pensando que el controlador de gráficos puede ser parte del problema, pero no estoy seguro.
fuente
Respuestas:
Parece que hay un problema con las páginas enormes en la administración de memoria de Linux . Raramente ocurre, pero parece que lo has observado.
Porque
Esta es mi explicación extremadamente simplificada de lo que, según el artículo, sucede.
Si no tiene suerte, un proceso se atasca en el momento en que emite un acceso a la memoria. Esto se debe a que cuando las páginas grandes transparentes están habilitadas, un acceso a la memoria puede activar la compactación sincrónica (desfragmentación de la memoria principal) sincrónica, lo que significa que el acceso a la memoria no termina antes de que lo haga la compactación. Esto en sí mismo no es algo malo. Pero si se produce una reescritura (por ejemplo, de datos almacenados en un búfer a USB) al mismo tiempo, es probable que la compactación se detenga, esperando que termine la reescritura.
Por lo tanto, cualquier proceso podría terminar esperando que un dispositivo lento termine de escribir datos almacenados en el búfer.
Cura
La actualización de la memoria principal, como lo hizo el OP, podría ayudar a retrasar el problema. Pero para aquellos que no lo consideran una opción, hay dos soluciones obvias. Ambos implican recompilar el núcleo:
fuente
Esto suena similar a mi pregunta aquí (donde una respuesta me señaló a esta pregunta):
/programming/10105203/how-can-i-limit-the-cache-used-by-copying-so-there-is-still-memory-available-for
Pero la teoría es completamente diferente, y la solución que utilicé no está relacionada con la suya, pero funciona perfectamente.
Estaba usando rsync, así que todo lo que tenía que hacer era usar la opción --drop-cache. (lo que hace que la copia sea un poco más lenta como efecto secundario)
fuente
El único truco que encontré que realmente funciona: Gnome, los archivos de copia nautilus a USB se detienen al 100% o cerca
Si desea probar algunos trucos para usuarios avanzados, puede reducir el tamaño del búfer que utiliza Linux configurando / proc / sys / vm / dirty_bytes en algo así como 15728640 (15 MB). Esto significa que la aplicación no puede obtener más de 15 MB antes de su progreso real.
Un efecto secundario es que su computadora puede tener un rendimiento de escritura de datos más bajo con esta configuración, pero en general, me resulta útil ver que un programa se ejecuta durante mucho tiempo mientras escribe muchos datos frente a la confusión de tener un El programa parece estar hecho con su trabajo, pero el sistema está muy retrasado ya que el núcleo hace el trabajo real. Establecer "dirty_bytes" en un valor razonablemente pequeño también puede ayudar a evitar que su sistema deje de responder cuando tenga poca memoria libre y ejecute un programa que de repente escribe muchos datos.
¡Pero no lo configure demasiado pequeño! Utilizo 15 MB como una estimación aproximada de que el núcleo puede vaciar el búfer a un disco duro normal en 1/4 de segundo o menos. Evita que mi sistema se sienta "lento".
fuente