Comment puis-je accélérer la vitesse d'écriture de la carte SD (en utilisant / dev / disk *) sur un MacBook Pro?

17

J'ai installé certaines distributions Linux sur une carte SD à partir de mon MacBook, bien qu'elles prennent plus d'une heure pour transférer quelques centaines de Mo (en utilisant ddet /dev/disk1).

sortie dd

Si vous regardez la sortie ci-dessus, cela fonctionne à environ 0,31 Mo / s! La carte SD est une classe 10 et mon MacBook Pro est un processeur Intel Core 2 Duo à 2,66 GHz, 4 Go à 1067 MHz DDR3 et OS X Lion 10.7.4. Voici le rapport matériel du lecteur de carte:

Lecteur de carte SD intégré:

ID fournisseur: 0x05ac
ID produit: 0x8403
Révision: 1.00 Numéro de série: 9833

Carte SDHC:

Capacité: 7,97 Go (7 969 177 600 octets)
Support amovible: Oui Nom BSD: disk1
Type de mappage de partition: MBR (Master Boot Record) État
SMART: Non pris en charge
Volumes:

PI:
Capacité: 7,96 Go (7 964 983 296 octets)
Système de fichiers: MS-DOS
BSD Nom: disk1s1
Contenu: DOS_FAT_32

Des idées pourquoi le transfert /dev/disk1est si lent et comment je pourrais l'accélérer?

StuR
la source
Cela me semble être un problème matériel. J'ai entendu dire que les MBP de 2011 ont un mauvais lecteur SD, mais cela pourrait aussi être un problème avec les précédents. Essayez une autre carte SD, mais cela pourrait bien être un problème avec le lecteur de carte, qui est malheureusement attaché à la carte mère dans la plupart des MBP.
robmathers
J'ai acheté l'ordinateur portable en 2009, Fedora copie maintenant depuis 2 heures et j'ai abandonné. Nouveau temps de lecteur de carte je pense.
StuR
Fait intéressant, le débit de données séquentiel est beaucoup plus élevé si vous utilisez Finder ou Disk-Utility car le coupable semble être la mise en mémoire tampon de / dev / disk * comme expliqué dans la réponse de @pci
iolsmit

Réponses:

38

Je viens de rencontrer le même problème et il semble que ce /dev/disk*soit lent car il est tamponné. Si vous utilisez le périphérique rdisk correspondant (ex:), /dev/rdisk1s1vous devriez obtenir la vitesse que vous attendez. C'est apparemment une chose BSD.

Exemple:

% sudo dd if=pi.bin of=/dev/disk1 bs=1m count=4095
^C408+0 records in
407+0 records out
426770432 bytes transferred in 1393.452305 secs (306268 bytes/sec)

% sudo dd if=pi.bin of=/dev/rdisk1 bs=1m count=4095
4095+0 records in
4095+0 records out
4293918720 bytes transferred in 378.669512 secs (11339489 bytes/sec)

Réf:

pcl
la source
1
C'est la meilleure réponse que j'ai trouvée à cette question car j'ai pu confirmer les résultats. Passé de ~ 1,35 Mo / sec à 20 Mo / sec :)
nessence
1
C'est bien sûr une honte (pour Apple / BSD) - bien que l'utilisation de dd vous donne les meilleures performances possibles car vous disposez d'un accès en écriture (ou en lecture) long; au niveau du fichier et avec un accès aléatoire, vos performances varieront beaucoup, selon la carte SD - Et: excellente recherche @pci!
iolsmit
2
C'est une longue histoire, mais vous venez de m'économiser 90 $ de saumon qui allait mal tourner si je n'arrivais pas à réparer mon fumeur à temps.
deweydb
3
C'est ridicule de voir comment vous pouvez télécharger un fichier à 20 + Mbps sur des milliers de kilomètres, et les derniers mètres c'est sans fil. Mais le transfert de données de quelques centimètres sur une connexion dure est beaucoup plus lent.
Jonathan.
Merci. Je cherchais à copier 7 Go de données sur ~ 10 heures quand j'ai décidé que ce n'était pas acceptable et j'ai trouvé cette réponse - très utile.
Barak
3

Il se pourrait bien que la carte SD soit aussi lente.

Jetez un oeil à cette référence (écriture aléatoire, 4 Ko (QD = 1) [Mo / s]) et vous verrez que la plupart des cartes SD ont une performance d'écriture moche (inférieure à 100 kB / s) pour les petits fichiers - et un L'installation linux typique consiste en un grand nombre de petits fichiers écrits sur le disque.

Le lecteur de carte interne doit être capable de lire / écrire au moins 20 Mo / s - il est très peu probable qu'un autre lecteur de carte améliore votre expérience avec cette carte très SD.

Une fois que tous les fichiers sont écrits, c'est-à-dire que le système est installé, vous pouvez réellement exécuter Linux à partir de la carte SD à une vitesse acceptable - car c'est principalement un accès en lecture.

iolsmit
la source
1
Pour le votant, voir ce post
iolsmit
Ce serait une bonne expérience cependant de tester la carte dans un autre lecteur connu pour être bon, et de tester une carte connue pour être bonne dans le lecteur suspect. Notez également que toutes les "formalités administratives" pour la création de nouveaux fichiers (par opposition à l'écriture de leur contenu) dans les structures de données du système de fichiers sont très importantes pour de nombreux petits fichiers.
Thorbjørn Ravn Andersen
Alors que les cartes SD ne sont pas très rapides, la vitesse (328198 octets / sec et plus tard 288881 octets / sec) ne peut pas être inimaginable pour les cartes SD d'aujourd'hui (ressemble plus à des lecteurs de disquette). Comme il s'agit de «dd», cela signifie un seul fichier - pas plusieurs petits fichiers.
Barak
1

Si la carte est montée avec l'option de synchronisation, cela signifie que chaque fermeture de fichier provoque le vidage de l'écriture sur le disque et donc vos performances sur les petits fichiers seront terribles par rapport aux gros fichiers. Si vous supprimez la synchronisation des options de montage, il n'y a aucune garantie que l'écriture d'un fichier le fasse sortir sur le disque - vous devez appeler manuellement la synchronisation à partir de la ligne de commande, ou démonter le périphérique avant de le retirer ou de le mettre hors tension. Cependant, sans synchronisation, vous devriez voir les performances d'écriture des petits fichiers s'améliorer considérablement.

ddiepo
la source
1
Selon man mount, async est déjà la valeur par défaut.
nohillside
1

Non, c'est clairement un problème avec Mac OS. J'obtiens des performances beaucoup plus rapides lorsque je fais cette même opération en utilisant Linux sur une machine virtuelle fonctionnant sur le même Macintosh. C'est-à-dire que la machine virtuelle est environ 5 fois plus rapide que le système d'exploitation natif.

John Kraft
la source