Le système se bloque lorsque les E / S du disque sont saturées

8

Lorsque je transfère un gros fichier de mon disque dur USB3 externe vers mon disque dur interne (ou inversement), que ce soit via Nautilus ou via un terminal, Ubuntu (Unity) se verrouille presque complètement. Des choses comme Alt-Tab prennent 20 secondes ou plus pour terminer le transfert de fichiers. Ce n'est pas le cas lorsqu'il y a beaucoup de lectures / écritures aléatoires sur le disque, par exemple lors de l'installation de packages.

Lorsque j'utilisais Windows, je pouvais exécuter un transfert de fichiers en arrière-plan et pouvoir toujours faire certaines choses, mais plus lentement lorsque quelque chose était nécessaire pour accéder au disque. Je pouvais encore alt-tab très bien.

Il semble qu'Ubuntu donne la priorité au transfert de fichiers au-dessus de toutes les autres E / S de disque, raison pour laquelle il se bloque. Sous Windows, il semble que les transferts de fichiers ont une priorité inférieure, ce qui signifie que le système peut rester réactif lorsque le disque est saturé.

Comment puis-je résoudre ce problème? C'est plutôt embêtant, car l'ordinateur devient complètement inutilisable lors de la copie de fichiers. Ce problème se produit à la fois en 14.04 et 15.10. Je suis obligé de brancher mon disque dur sur un port USB2 pour éviter ce problème, ce qui entraîne des temps de transfert beaucoup plus longs.

    
posée Degru 29.11.2015 - 20:54
la source

1 réponse

10

J'ai eu le même problème sur mon ordinateur portable, qui a un système de disque assez lent par rapport au reste de l'ordinateur.

J'ai pu améliorer les choses en modifiant l’algorithme de planification utilisé pour les transferts de disque. Par défaut, Ubuntu utilise Deadline, mais je trouve que mon système répond plus rapidement lorsque j'utilise cfq.

Pour voir quel planificateur vous utilisez, lancez la commande

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

Pour effectuer un changement ponctuel (jusqu'au redémarrage), exécutez la commande

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

Notez qu’il est important que la modification soit apportée à ce que vous avez pour votre disque dur externe; Le mien charge généralement comme sdb. donc j'émettrais la commande echo cfq | sudo tee /sys/class/block/sdb/queue/scheduler

Je modifie mon fichier pour tous les lecteurs connectés à mon ordinateur en ajoutant le paramètre de noyau elevator=cfq dans mon fichier grub, qui ressemble à ceci:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noautogroup elevator=cfq"
    
réponse donnée Charles Green 29.11.2015 - 22:24
la source

Lire d'autres questions sur les étiquettes