GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué se congela el pc mientras copio un archivo a un pendrive?

Tengo una situación muy extraña aquí. Mi PC funciona bien, al menos en la mayoría de los casos, pero hay una cosa con la que no puedo lidiar. Cuando trato de copiar un archivo desde mi pendrive, todo está bien:obtuve 16-19M/s, funciona bastante bien. Pero cuando intento copiar algo en el mismo pendrive, mi PC se congela. El puntero del mouse deja de moverse durante uno o dos segundos, luego se mueve un poco y se detiene nuevamente. Cuando suena algo, por ejemplo, en Amarok, el sonido actúa como una ametralladora. La velocidad salta de 500K/s a 15M/s, con un promedio de 8M/s. Esto ocurre solo cuando estoy copiando algo en un pendrive. Cuando finaliza el proceso de copia, todo vuelve a la normalidad.

Probé de todo:otro pendrive, un puerto USB diferente en el panel frontal o esos puertos en la parte posterior, incluso cambié los pines USB en la placa base (panel frontal), pero no importa dónde coloque mi memoria USB, siempre es lo mismo. Probé un sistema de archivos diferente:fat32 , ext4 . No tengo ningún problema con el dispositivo en Windows, en mi computadora portátil. Tiene que ser mi PC o algo en mi sistema. No tengo idea de qué buscar. Estoy usando pruebas de Debian con Openbox independiente. Mi PC es un poco vieja:Pentium D 3GHz, 1GiB de RAM, disco WD Green de 1,5TB. Si tiene algo que me ayude a resolver este problema, me encantaría saberlo.

No sé qué más información debo proporcionar, pero si necesita algo, solo pregunte, actualizaré esta publicación lo antes posible.

Traté de reproducir este problema en ubuntu 13.04 live cd. Monté mi partición cifrada + swap cifrado y conecté mi pendrive a un puerto usb. Luego traté de iniciar algunas aplicaciones y ahora tengo ~820MiB en RAM y alrededor de 400MiB en SWAP. No hay problema con la copia, no hay congelación en absoluto, todo es como debe ser. Entonces, parece que es una falla del sistema, pero ¿dónde exactamente? ¿Qué causaría un comportamiento tan extraño?

Respuesta aceptada:

¿Está utilizando una versión de Linux de 64 bits con mucha memoria? En ese caso, el problema podría ser que Linux puede bloquearse durante minutos en escrituras grandes en dispositivos lentos como, por ejemplo, tarjetas SD o memorias USB. Es un error conocido que debería corregirse en los núcleos más nuevos.

Ver http://lwn.net/Articles/572911/

Solución alternativa:como problema raíz:

echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

Lo he agregado a mi /etc/rc.local archivo en mis máquinas de 64 bits.

Relacionado:Php:chown — Cambia el propietario del archivo

TANSTAAFL; este cambio puede (y probablemente lo hará) reducir el rendimiento de estos dispositivos:es un compromiso entre la latencia y la velocidad. Para volver al comportamiento anterior, puede

echo 0 > /proc/sys/vm/dirty_background_bytes
echo 0 > /proc/sys/vm/dirty_bytes

…que son los valores predeterminados, lo que significa que el comportamiento de reescritura será controlado por los parámetros dirty_ratio y dirty_background_ratio .

Nota para los no tan expertos en Linux:los archivos en /proc son pseudoarchivos, solo canales de comunicación entre el kernel y el espacio del usuario. Nunca use un editor para cambiarlos o mirarlos; obtenga en su lugar un indicador de shell, por ejemplo, con sudo -i (Sabores de Ubuntu) o su root y usa echo y cat ).

Actualización 2016/04/18 parece que, después de todo, el problema sigue aquí. Puede verlo en LWN.net, en este artículo sobre las colas de reescritura.


Linux
  1. Por qué 'sshpass' no es la forma correcta de automatizar las transferencias de archivos en Linux

  2. El Bash'?

  3. ¿Está Mv Atomic en el Fs?

  4. ¿Por qué tenemos que pasar el nombre del archivo dos veces en las funciones ejecutivas?

  5. ¿Por qué el descriptor de archivo se abre y se lee solo una vez?

Cómo excluir una extensión de archivo específica al copiar archivos de forma recursiva

redirección de salida sobre la marcha, viendo la salida de redirección de archivos mientras el programa aún se está ejecutando

¿Por qué xargs -L produce el formato correcto, mientras que xargs -n no?

¿Dónde está el archivo de encabezado <conio.h> en Linux? ¿Por qué no puedo encontrar <conio.h>?

¿Por qué bifurcar mi proceso hace que el archivo se lea infinitamente?

Copiar un archivo solo cuando es más nuevo que el destino