GNU/Linux >> Linux Esercitazione >  >> Linux

Perché il PC si blocca mentre sto copiando un file su una Pendrive?

Ho una situazione davvero strana qui. Il mio PC funziona bene, almeno nella maggior parte dei casi, ma c'è una cosa che non riesco a gestire. Quando provo a copiare un file dalla mia pendrive, va tutto bene:ho 16-19M/s, funziona abbastanza bene. Ma quando provo a copiare qualcosa sulla stessa pendrive, il mio PC si blocca. Il puntatore del mouse smette di muoversi per un secondo o due, poi si sposta un po' e si ferma di nuovo. Quando qualcosa sta suonando, ad esempio, in Amarok, il suono si comporta come una mitragliatrice. La velocità salta da 500K/s a 15M/s, una media di 8M/s. Ciò si verifica solo quando sto copiando qualcosa su una pendrive. Al termine del processo di copia, tutto torna alla normalità.

Ho provato di tutto:altra pendrive, una porta USB diversa sul pannello frontale o quelle porte dal retro, ho persino cambiato i pin USB sulla scheda madre (pannello frontale), ma non importa dove metto la mia chiavetta USB, è sempre la stessa. Ho provato diversi filesystem:fat32 , ext4 . Non ho problemi con il dispositivo su Windows, sul mio laptop. Deve essere il mio PC o qualcosa nel mio sistema. Non ho idea di cosa cercare. Sto usando Debian testing con Openbox standalone. Il mio PC è un po' vecchio:Pentium D 3GHz, 1GiB di RAM, disco WD Green da 1,5TB. Se hai qualcosa che potrebbe aiutarmi a risolvere questo problema, sarei felice di saperlo.

Non so quali altre informazioni dovrei fornire, ma se hai bisogno di qualcosa, chiedi pure, aggiornerò questo post il prima possibile.

Ho provato a riprodurre questo problema su Ubuntu 13.04 live cd. Ho montato la mia partizione crittografata + swap crittografato e ho collegato la mia pendrive a una porta USB. Successivamente ho provato ad avviare alcune app e ora ho circa 820 MiB di RAM e circa 400 MiB in SWAP. Non ci sono problemi con la copia, nessun congelamento, tutto è come dovrebbe essere. Quindi, sembra che sia un errore del sistema, ma dove esattamente? Cosa causerebbe un comportamento così strano?

Risposta accettata:

Stai usando una versione a 64 bit di Linux con molta memoria? In tal caso il problema potrebbe essere che Linux può bloccare per minuti grandi scritture su dispositivi lenti come per
esempio schede SD o chiavette USB. È un bug noto che dovrebbe essere corretto nei kernel più recenti.

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

Soluzione alternativa:come problema principale:

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

L'ho aggiunto al mio /etc/rc.local file nelle mie macchine a 64 bit.

Correlati:Php:chown — Cambia il proprietario del file

TANSTAAFL; questa modifica può (e probabilmente ridurrà) il throughput a questi dispositivi:è un compromesso tra latenza e velocità. Per tornare al comportamento precedente puoi

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

…quali sono i valori di default, il che significa che il comportamento di writeback sarà controllato dai parametri dirty_ratio e dirty_background_ratio .

Nota per le persone non così esperte con Linux:i file in /proc sono pseudofile — solo canali di comunicazione tra il kernel e lo spazio utente. Non usare mai un editor per cambiarli o guardarli; ottieni invece un prompt della shell, ad esempio con sudo -i (sapori Ubuntu) o su root e usa echo e cat ).

Aggiornamento 18/04/2016 sembra che, in fondo, il problema sia ancora qui. Puoi guardarlo su LWN.net, in questo articolo sulle code di writeback.


Linux
  1. Perché "sshpass" non è il modo giusto per automatizzare i trasferimenti di file in Linux

  2. Perché lo script Bash non riconosce gli alias?

  3. Il Bash '?

  4. Mv Atomic è sulle F?

  5. Perché il file di traduzione Bash non contiene tutti i testi di errore?

Come escludere un'estensione di file specifica durante la copia ricorsiva di file

Dov'è il file di intestazione <conio.h> su Linux? Perché non riesco a trovare <conio.h>?

Perché abbiamo bisogno di mktemp?

Perché il fork del mio processo fa sì che il file venga letto all'infinito

Copiare un file solo quando è più recente della destinazione

Perché la directory principale è indicata da un segno /?