Comment obtenir de meilleures vitesses de transfert USB dans (X) Ubuntu?


14

Lorsque je connecte mon lecteur USB 2.0 à Xubuntu et que j'essaie de transférer des fichiers volumineux, les vitesses de transfert sont bonnes au début, mais tombent après quelques secondes à 1-2 Mib / s. D'après ce que j'ai lu, le transfert rapide au début est juste jusqu'à ce que le cache soit plein, puis la vraie vitesse de transfert USB est utilisée.

Sous Windows, la vitesse est constante à environ 25Mib / s, même stick, connecté au même port.

C'est la sortie de dmesg lors de la connexion du stick:

[ 5237.580084] usb 1-4: new high speed USB device using ehci_hcd and address 6
[ 5237.714318] scsi4 : usb-storage 1-4:1.0
[ 5238.713909] scsi 4:0:0:0: Direct-Access     SanDisk  Cruzer           8.02 PQ: 0 ANSI: 0 CCS
[ 5238.715264] sd 4:0:0:0: Attached scsi generic sg2 type 0
[ 5238.727225] sd 4:0:0:0: [sdb] Attached SCSI removable disk
[ 5242.308981] sd 4:0:0:0: [sdb] 31301631 512-byte logical blocks: (16.0 GB/14.9 GiB)
[ 5242.309589] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311228] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311238]  sdb: sdb1

Le stick est monté automatiquement, voici la sortie de "mount":

/dev/sdb1 on /media/B82C-6B07 type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush)

Je dois utiliser vfat car je souhaite transférer des fichiers sur mon système Playstation3. Cependant, le test ci-dessous montre que ce n'est pas la cause principale.

Il semble que ce soit un problème courant dans (X) ubuntu. Je n'ai pas encore trouvé de solution claire. Il semble que le stick doive être monté en async au lieu de flush mais je ne sais pas exactement comment y parvenir. Cela ne me dérange pas si je dois démonter le stick à chaque fois avant de le déconnecter tant que les vitesses de transfert sont meilleures.

Des idées?

2 novembre: Ce rapport de bogue semble être lié: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/182931 . Ce qui m'inquiète, c'est que le problème semble avoir plus de 2 ans et n'est toujours pas résolu.

10 novembre: J'ai commencé un test de lecture avec palimpstest (du projet gnome-disk-utility). Cela me donne un taux de transfert minimal de 23 Mbits / s. Également essayé en krusader maintenant, la vitesse de lecture est constamment> 20 MBit / s. Donc, le problème est vraiment d'écrire sur le bâton!

Voici une image d'un test de lecture-écriture dans le même programme:

entrez la description de l'image ici

J'ai dû supprimer complètement le système de fichiers avant le test, ce qui montre que vfat n'est pas la cause principale comme mentionné ci-dessus.

Un autre indice: si je transfère un fichier de 100 Mo, une fois qu'il est à 100%, il faut un temps inhabituel pour terminer le transfert. Cela me semble à nouveau que le fichier est en effet dans un cache, mais l'écriture sur le périphérique USB est très lente.

12 nov: "Bonne nouvelle". Le problème semble être la clé USB elle-même. Essayer un disque dur externe (My Book Elite 1 To) me donne une vitesse d'écriture constante d'environ 20 Mio / s. J'ai d'abord essayé de reformater ma clé USB afin que je puisse vraiment comparer les deux (les systèmes de fichiers étaient différents). Après le reformatage, les deux disques sont montés exactement de la même manière:

/dev/sdb1 on /media/My Book type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sdc1 on /media/cruzer_ type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)

Cruzer est le stick (la vitesse baisse encore après quelques secondes), My Book est le disque dur externe avec une vitesse d'écriture constante de 20 Mio / s.

Difficile de dire quel est vraiment le problème alors. Comme je l'ai dit, sous Windows, j'obtiens également des vitesses d'écriture aussi rapides avec le SanCruzer.

Edition en fin de prime: Malheureusement, le problème avec le stick n'est toujours pas résolu. Cependant, après 7 jours, je veux bien sûr attribuer la prime. Le commentaire de aking1012 a été très utile car il a jeté un nouvel éclairage sur la question. Cependant, je pense que je dois donner la prime à harrymc car il a montré le plus d'efforts pour résoudre le problème. Merci a tous.



1
y a-t-il une différence entre la vitesse d'écriture pour les lecteurs flash et les vrais disques durs externes externes ... juste une question
RobotHumans

Excellente idée! Merci beaucoup pour le conseil, veuillez voir le résultat dans ma mise à jour (12 novembre). Le problème n'est pas encore résolu, mais cela le réduit vraiment!
pgruetter

FWIW, il flushest peu probable que l' option de votre sortie de montage vous aide. Je pense que c'est encore pire que sync.
beldaz

Réponses:


11

L'article Slow USB 2.0 mass stoarage transfer rate suggère que cela pourrait être un problème de périphérique monté par défaut avec l'option de synchronisation:

Avez-vous une icône "Périphériques" sur votre bureau?
Si oui, ouvrez-le. Sinon, essayez d'ouvrir media: / dans konqueror.

Sélectionnez l'appareil puis -> Propriétés -> Montage (tag) et décochez la case Synchrone. (On s'en souvient, vous ne devez donc le faire qu'une fois par appareil).


D'autres idées proviennent du rapport de bogue. Écriture sur le disque dur externe, ce qui rend l'écriture très lente.

  • vous passez à async au moment de l'exécution par 'sudo mount -o remount, async / dev / sda1' (ou quelle que soit la ou les partitions montées)
  • vous créez une entrée fstab pour sda qui la monte en mode asynchrone (cela nécessite que l'appareil soit toujours branché à boottime)
  • vous changez 'sync' en 'async' dans la source pmount et reconstruisez le paquet

Voir également la discussion dans l'article concernant pmount, si cela s'applique à votre système.


Une autre solution magique vient de l' écriture lente USB 2.0 mais de la lecture rapide, encore une solution? et implique de remonter:

Lorsque je monte un lecteur USB sur / dev / sdc1 avec la ligne suivante

/dev/sdc1       /mnt/sdc1     auto    sync,noauto,user,exec     0       0

dans / etc / fstab, et essayez de copier un fichier de 5,2 Mo sur le disque à partir du disque dur local, puis après une minute entière, 244 Ko ont été transférés. La copie d'un fichier de 29 Mo du lecteur externe vers le lecteur local prend environ 10 secondes.

Ensuite, si je le démonte, changez la ligne dans / etc / fstab en

/dev/sdc1       /mnt/sdc1     auto    noauto,user,exec     0       0

puis la copie du fichier de 29 Mo sur le disque externe prend une fraction de seconde imperceptible. Même chose avec la copie sur le disque local à partir du disque externe.


Voir cet article et la référence à "usbtree". Il indique comment vérifier si l'USB fonctionne en 1.1 ou 2.0:

Linux et USB 2.0 .


Il semble que cela soit spécifique à KDE. J'utilise XFCE4 (Xubuntu). J'ai quand même essayé la suggestion, car Konquerer est installé. ouverture du média: / me donne l'exception "Protocole non supporté". De toute autre façon, je peux savoir s'il est monté "async" ou "sync"?
pgruetter

J'ai ajouté un autre article utile.
harrymc

remonter ne fait rien. La sortie de "mount" est toujours la même. Voir mon message initial pour cela. J'ai également essayé de le monter avec pmount maintenant, merci pour la suggestion. L'aide de pmount indique qu'il monte asynchrone par défaut. Pourtant, les vitesses de transfert sont très rapides en premier et chutent après quelques secondes. Je commence à croire que le stick est en fait monté asynchrone mais le problème est ailleurs!?
pgruetter

Ajout d'un essai supplémentaire.
harrymc

Merci harrymc, apprécie vraiment votre effort continu. Malheureusement, toujours pas de chance. Je l'ai essayé avec les paramètres mentionnés dans / etc / fstab et je l'ai monté. Si j'essaie l'option avec synchronisation, c'est encore pire. Je n'obtiens que 100-200 Kib / s. Sans l'option de synchronisation, c'est toujours la même: rapide au début, tombant à 1-2 Mio / s.
pgruetter

2

L'accès au lecteur est généralement mis en mémoire tampon en mode asynchrone. La rafale rapide initiale est susceptible de mettre en cache la mémoire. La vitesse lente est la vitesse d'écriture réelle.

Si vous avez une clé USB qui clignote pendant le transfert, essayez quelques tests. J'ai trouvé que les écritures peuvent continuer pendant un certain temps après la fin de la copie.

Le montage en mode asynchrone au lieu du mode sync permet à la copie d'apparaître plus rapidement, mais ne vous donne pas la même sécurité que les données copiées sont réellement transférées.

Vérifiez les options dans man mount. Certains formats permettent de différer les mises à jour des métadonnées (répertoire, table d'allocation des fichiers, etc.). Cela réduira la quantité de données à copier. Cela augmente légèrement le risque de perte de données.


Merci pour l'info, cela confirme en fait mes hypothèses. Le lecteur clignote constamment pendant le transfert, mais il ne clignote pas longtemps après le transfert. Je soupçonne que ce n'est que parce que le gestionnaire de fichiers accède toujours au stick. La sécurité ne serait pas un gros problème, je m'intéresse vraiment à la vitesse. Intéressant sur les métadonnées, je vais vérifier cela. Cependant, pensez-vous que cela changera quelque chose lors du transfert de gros fichiers (500 Mio)?
pgruetter

Aussi, qu'est-ce qui me laisse encore perplexe, pourquoi est-ce très rapide avec le disque dur externe mais pas avec le bâton? Les options de montage sont exactement les mêmes, j'ai transféré exactement le même fichier de test.
pgruetter

1
Une écriture de 4 Ko sur un disque dur est généralement une écriture de 4 Ko, implémentée par le contrôleur de disque dur. Une écriture de 4 Ko sur une mémoire Flash est généralement une lecture de 128 Ko sur une mémoire temporaire, une réécriture de 4 Ko sur un décalage correct de ladite mémoire temporaire, une opération d'effacement de 128 Ko et une écriture de 128 Ko, toutes les mesures ci-dessus mises en œuvre par le Contrôleur de mémoire flash. Plus ou moins :)
tzot

1

Je suis donc arrivé sur cette page via une recherche google du même problème ("ubuntu 15 speed up usb transfer") car mes transferts fonctionnaient à 75kb / s.

Ce n'était probablement que la solution pour ma configuration mais mon lecteur USB 3 de 16 Go a été formaté en GPT fat32, j'ai supprimé toutes les partitions, initialisé en MBR, créé une seule partition NTFS, l'ai rebranché sur mon PC Ubuntu et il transfère maintenant un fichier de 10 Go à plus de 50 Mo / s. Pour moi, le problème est résolu.


Confirmé que pour Mint 18.3 (Ubuntu 16.04), le passage de fat32 à ntfs était une amélioration massive.
Raven

0

Nous devons nous assurer que le système essaie d'écrire dans des blocs de programme / effacement. Avec une mémoire flash moderne, leur taille est généralement de 1 à 4 millions. Pour ce faire, vous voulez vous assurer que le vôtre FS est aligné pour effacer les blocs, et cette interface permet le transfert de bloc entier en une seule fois (pour les bâtons bon marché). Sinon, nous obtiendrions une amplification d'écriture, car le système essaie d'écrire en morceaux plus petits, que d'effacer un bloc (faire lecture / mod / écriture) + un désalignement de bloc.

Pour vérifier votre réglage actuel, procédez comme suit:

cat /sys/block/sd**X**/device/max_sectors

Vous pouvez régler les règles de la salle pour ces appareils. Voir /unix/67719/change-value-of-usb-max-sectors-for-an-entire-family-of-devices .

Dans ce cas, j'avais remplacé max_sectors pour tous les appareils, qui utilisaient par défaut 240 (stockage USB) sur 32K secteurs ou 2K secteurs:

(utilisez == pour vérifier et = pour attribuer):

Sur mon système (Mageia 4, 3.14.24 core i7), je devais le faire en raison de vitesses d'écriture terriblement lentes (2 Mo / s) sur Kingston DT101 G2 16 Go:

vi /usr/lib/udev/rules.d/81-udisks_maxsect.rules et ajouter:

SOUS-SYSTÈMES == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "32678"

Et la vitesse d'écriture dd a augmenté 3 fois :-) mc cp probablement 10 à 20 fois (après avoir commencé la première partition @ 8192'ème secteur et reformaté avec des clusters alignés à 64k):

fdisk -u /dev/sdh (désactivez la compatibilité DOS si elle est activée),

mkfs.vfat /dev/sdh1 -n KINGSTON16G -s 128 **-R 4592**et utilisez fsck.vfat -v /dev/sdh1pour vérifier l'alignement (vérifiez que [secteur de démarrage des données] doit être multiple de 128 (taille du cluster)). Ajustez le nombre de secteurs réservés (-R) si nécessaire.

Les max_sectors par défaut (240) semblent provoquer une forte amplification d'écriture sur certains des nouveaux lecteurs bon marché. Mais soyez très prudent avec un réglage aussi élevé, l'effet similaire est obtenu sur 2048 secteurs (probablement 1M de blocs d'effacement:

SOUS-SYSTÈMES == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "2048"

Testez tous vos anciens périphériques USB, ils fonctionnent toujours bien. Utilisez des attributs de fournisseur / modèle dans les fichiers de règles pour être plus précis.

PS: si vous utilisez ext3 / 4:

Désactivez la journalisation et définissez stride / stripe_width pour mkfs.ext3:

mkfs.ext3 -O ^ has_journal -E stride = [lire la page blocs fs] -E largeur de bande = [effacer le bloc fs blocs]


0

J'ai également eu quelques problèmes avec le taux de transfert sur un disque externe WD, après l'avoir ouvert dans une fenêtre SO, j'ai toujours utilisé LINUX, après que le taux de transfert était de 1,5 Mo / s par rapport au démontage du disque dur externe, j'ai exécuté dmesg là-bas disait que sdb1 il était mal monté, a couru un fsck, qui a fait quelques réparations et après que 20mb / s de taux de transfert encore quand copiyng de sda ​​au disque externe.
"fsck est toujours un risque si vous avez des données, mais cela a fonctionné pour moi, sans perte de données"


0

Vérifiez, vérifiez vraiment , que votre appareil est branché sur un port USB qui prend en charge la pleine vitesse.

Bien que cela puisse paraître idiot, parfois les choses se mélangent. Certaines cartes mères ont des ports haut et bas débit. Utilisez un outil comme usbview (remarque pour l'exécuter avec les droits de superutilisateur sudo usbview) pour vérifier que votre appareil fonctionne à 480 Mo / s (USB 2.0) ou plus.

Par exemple, lorsque vous branchez généralement votre appareil via une rallonge, un concentrateur sur votre écran, etc., il peut arriver - après avoir re-branché les câbles sur votre ordinateur de bureau ou quelque chose du genre - que vous avez accidentellement branché le concentrateur à une faible vitesse Port (USB 1.). Ensuite, tous les appareils branchés sur le concentrateur fonctionneront à faible vitesse, tandis que d'autres, branchés ailleurs, fonctionneront à haute vitesse. Cela peut être très déroutant - et c'est une chose matérielle simple ... Cela m'est arrivé une fois, et n'est lié à aucun module de noyau USB, à des options de montage, etc.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.