web-dev-qa-db-fra.com

Pourquoi les opérations de copie de fichiers sous Linux deviennent-elles plus lentes au fil du temps?

J'ai 12 ~ 200 Mo de fichiers. Copier l'un d'entre eux sur un autre lecteur prend 20 secondes. Lorsque j'essaie de tous les copier en même temps, cela indique d'abord que cela va prendre 5 minutes, puis que cela ralentit dans les heures et les jours.

Je copie les fichiers via Thunar dans XFCE, mais je me souviens d'avoir eu des problèmes similaires en utilisant la ligne de commande. Pourquoi cela se produit-il et que puis-je faire pour y remédier, mis à part la copie des fichiers un à un?

21
jSepia

C’est un problème connu avec le noyau Linux, il est connu depuis des lustres, personne n’a encore abordé le problème.

il n'y a actuellement aucun correctif ou solution connue, à part l'utilisation de Windows, qui augmente en vitesse puis se normalise. Je trouve ce bogue très prioritaire, mais les programmeurs ne ressentent pas la même chose. C'est ce bogue seul qui commence à m'éloigner de Linux.

22
Dave

Vous devriez essayer rsync de surveiller votre vitesse de transfert. Par exemple:

rsync -PSauv sourcedir/* destdir/

Si vous constatez une baisse de la vitesse de transfert plutôt que des fichiers volumineux, vous devez examiner quelques autres éléments.

  1. Si votre disque est lié I/O, vous aurez des problèmes. Vous le voyez souvent lorsque vous écrivez beaucoup sur un lecteur flash ou un périphérique USB externe.

  2. Testez vos deux disques avec hdparm -Tt <device> pour voir si l'un d'entre eux est considérablement plus lent que ce qu'il devrait être, ou beaucoup moins que l'autre périphérique, ce qui peut entraîner des problèmes d'E/S.

  3. Vérifiez votre sortie dmesg et votre statut SMART pour vous assurer que vous n'avez pas d'erreur de disque évidente. Vous pouvez également envisager badblocks -n si vous suspectez des erreurs de disque sur un lecteur non-SMART.

Il existe de nombreuses raisons pour lesquelles un disque peut fonctionner à la volée ou fonctionner de manière sous-optimale, mais vous ne saurez pas quel est le problème tant que vous ne pourrez pas mesurer le problème. :)

10
CodeGnome

N'oubliez pas que le processus de copie de fichier est en quelque sorte mis en cache par Linux. Si vous prenez un seul fichier (même de 200 Mo) et commencez à le copier ailleurs, Linux met en cache, avec une grande probabilité, tout le fichier en mémoire et l'écrit dans son nouvel emplacement. Ensuite, si vous choisissez de copier à nouveau ce fichier et avec lui un tas d’autres fichiers, le premier fichier est déjà mis en cache et saute probablement toute la "partie lue", les autres étant d'abord lus puis écrits dans leurs sources./destinations. Cette fonctionnalité peut même conduire à des vitesses de transfert infinies et à des bizarreries similaires. Ne faites donc pas confiance aux mesures qui pourraient être invalidées par des mécanismes de synchronisation antérieurs.

2
Avio