Il sistema si blocca quando l'I / O del disco è saturo


8

Quando eseguo un trasferimento di file di grandi dimensioni dal mio disco rigido USB3 esterno al mio disco rigido interno (o viceversa), tramite Nautilus o tramite terminale, Ubuntu (Unity) si blocca quasi completamente. Operazioni come alt-tab richiedono 20 secondi o più per essere completate mentre il trasferimento di file è in esecuzione. Questo non è il caso in cui ci siano molte letture / scritture casuali sul disco, come durante l'installazione di pacchetti.

Quando stavo eseguendo Windows, ho potuto eseguire un trasferimento di file in background ed essere ancora in grado di fare le cose, anche se più lentamente quando è necessario qualcosa per accedere al disco. Potrei ancora alt-tab bene.

Sembra che Ubuntu dia la priorità al trasferimento dei file rispetto a tutti gli altri I / O su disco, motivo per cui si blocca. In Windows sembra che i trasferimenti di file abbiano una priorità inferiore, il che significa che il sistema può rimanere reattivo mentre il disco è saturo.

Come posso risolvere questo problema? È piuttosto fastidioso, poiché il computer diventa completamente inutilizzabile durante la copia dei file. Questo problema si verifica in 14.04 e 15.10. Sono costretto a collegare il mio disco rigido a una porta USB2 per evitare questo problema e ciò si traduce in tempi di trasferimento molto più lunghi.


Non dovrebbe, ma controlla se unix.stackexchange.com/questions/107703/… aiuta
Rmano

Risposte:


10

Ho avuto lo stesso problema sul mio laptop, che ha un sistema di dischi abbastanza lento rispetto al resto del computer.

Sono stato in grado di renderlo molto migliore, modificando l'algoritmo di pianificazione utilizzato per i trasferimenti su disco. Di default Ubuntu usa Deadline, ma trovo che il mio sistema risponda più rapidamente quando uso cfq.

Per vedere quale scheduler stai utilizzando, emetti il ​​comando

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

Per eseguire una modifica singola (fino al riavvio), immettere il comando

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

Nota che è importante apportare la modifica a qualsiasi cosa tu abbia per il tuo disco rigido esterno; Il mio di solito si carica come sdb. quindi vorrei emettere il comandoecho cfq | sudo tee /sys/class/block/sdb/queue/scheduler

Rendo permanente la mia modifica per tutte le unità collegate al mio computer, aggiungendo il parametro kernel elevator=cfqnel mio file grub, che assomiglia a questo:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noautogroup elevator=cfq"

Wow, ha funzionato. Grazie! Il mio sistema ora è molto più reattivo durante il trasferimento ed è effettivamente più veloce nel caricare le cose in generale.
Dal

Sono contento di sentirlo aiutato.
Charles Green,

1
> Di default Ubuntu usa Deadline, ma trovo che il mio sistema risponda più rapidamente quando uso deadline. Ho il sospetto che volessi che questa frase finisse in "... quando uso cfq".
markus_b

Non ho mai cercato una soluzione a questo per un motivo o per un altro. Ho votato a favore di questa risposta quando è stata pubblicata alcuni giorni fa, ora ho avuto la possibilità di testarla (ho dovuto migrare molti torrent da Deluge a Trasmissione, che richiedeva il controllo di ogni singolo torrent) e cambiare lo scheduler era davvero un miglioramento. Il sistema continua a balbettare, soprattutto quando si cambia area di lavoro, ma di sicuro non si blocca quasi completamente come una volta. Grazie! Questa risposta è così utile che l'IMO merita una taglia (e ne sto impostando una).
kos,

@kos Non è una soluzione completa, o sarei sicuramente molto più felice anche io - ogni tanto continuo a balbettare e trovo che sia molto frustrante.
Charles Green,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.