Come posso aumentare la velocità di scrittura della scheda SD (usando / dev / disk *) su un MacBook Pro?


17

Ho installato alcune distribuzioni di Linux su una scheda SD dal mio MacBook, anche se impiegano più di un'ora per trasferire alcune centinaia di MB (usando dde /dev/disk1).

uscita dd

Se guardi l'output sopra funziona a circa 0,31 MB / s! La scheda SD è una Classe 10 e il mio MacBook Pro è Intel Core 2 Duo a 2,66 GHz, DDR3 da 1067 MHz da 4 GB e OS X Lion 10.7.4. Ecco il rapporto hardware per il lettore di schede:

Lettore di schede SD incorporato:

ID fornitore: 0x05ac
ID prodotto: 0x8403
Revisione: 1.00 Numero di serie: 9833

Scheda SDHC:

Capacità: 7,97 GB (7.969.177.600 byte)
Supporti rimovibili: Sì Nome BSD: disk1
Tipo mappa partizione: MBR (Master Boot Record)
Stato SMART: Non supportato
Volumi:

PI:
Capacità: 7,96 GB (7.964.983.296 byte)
File system:
Nome BSD MS-DOS : disk1s1
Contenuto: DOS_FAT_32

Qualche idea sul perché il trasferimento a /dev/disk1è così lento e come potrei accelerarlo?


Mi sembra un problema hardware. Ho sentito che gli MBP del 2011 hanno un cattivo lettore SD, ma potrebbero essere un problema anche con quelli precedenti. Prova un'altra scheda SD, ma potrebbe essere un problema con il lettore di schede, che purtroppo è collegato alla scheda logica nella maggior parte degli MBP.
robmathers

Ho comprato il laptop nel 2009, Fedora ha copiato per 2 ore e ho rinunciato. Penso che il nuovo lettore di schede di tempo.
StuR

È interessante notare che la velocità dei dati sequenziali è molto più alta se si utilizza Finder o Disk-Utility poiché il colpevole sembra essere il buffering di / dev / disk * come spiegato in risposta di @pci
iolsmit

Risposte:


38

Ho appena riscontrato lo stesso problema e sembra che /dev/disk*sia lento perché è bufferizzato. Se usi il dispositivo rdisk corrispondente (es:) /dev/rdisk1s1dovresti ottenere la velocità che ti aspetti. Questa è apparentemente una cosa di BSD.

Esempio:

% 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)

Rif:


1
Questa è la risposta migliore che ho trovato a questa domanda in quanto sono stato in grado di confermare i risultati. Siamo andati da ~ 1,35 MB / sec a 20 MB / sec :)
nessence

1
Questo è ovviamente un peccato (per Apple / BSD) - sebbene l'uso di dd ti dia le migliori prestazioni possibili dato che hai un lungo accesso in scrittura (o lettura); a livello di file e con accesso casuale le tue prestazioni varieranno molto, a seconda della scheda SD - E: ottima scoperta @pci!
Iolsmit

2
È una lunga storia, ma mi hai risparmiato $ 90 di salmone che sarebbe andato male se non avessi potuto riparare il mio fumatore in tempo.
Deweydb,

3
È ridicolo come scaricare un file a 20 + Mbps per migliaia di chilometri e negli ultimi metri è wireless. Ma il trasferimento di dati di alcuni centimetri su una connessione rigida è molto più lento.
Jonathan.

Grazie. Stavo cercando di copiare 7 GB di dati per circa 10 ore quando ho deciso che non era accettabile e ho trovato questa risposta molto utile.
Barak,

3

È possibile che la scheda SD sia così lenta.

Dai un'occhiata a questo benchmark (Scrittura casuale, 4 KB (QD = 1) [MB / s]) e vedrai che la maggior parte delle schede SD ha una performance di scrittura scadente (inferiore a 100 kB / s) per file di piccole dimensioni - e un la tipica installazione di Linux consiste in molti piccoli file scritti su disco.

Il lettore di schede interno dovrebbe essere in grado di leggere / scrivere almeno 20 MB / s - è molto improbabile che un altro lettore di schede migliori la tua esperienza con questa stessa scheda SD.

Una volta che tutti i file sono stati scritti, ovvero il sistema è installato, potresti effettivamente essere in grado di eseguire Linux dalla scheda SD a una velocità accettabile, dato che è per lo più accesso in lettura.


1
Per il down-voter, vedere questo post
iolsmit

Sarebbe comunque un buon esperimento testare la carta in un altro lettore noto per essere buono, e testare una carta nota per essere buona nel sospetto lettore. Si noti inoltre che tutte le "pratiche burocratiche" per la creazione di nuovi file (invece di scrivere il loro contenuto) nelle strutture di dati del file system sono molto grandi per molti file di piccole dimensioni.
Thorbjørn Ravn Andersen,

Le schede SD Whle non sono molto veloci, la velocità (328198 byte / sec e successivamente 288881 byte / sec) non è inimmaginabile per le schede SD odierne (sembra più un floppy drive). Dato che questo è 'dd', significa un singolo file, non più piccoli file.
Barak,

1

Se la scheda è montata con l'opzione di sincronizzazione, ciò significa che ogni chiusura di file provoca lo scaricamento della scrittura sul disco e pertanto le prestazioni su file di piccole dimensioni saranno terribili rispetto a file di grandi dimensioni. Se rimuovi la sincronizzazione dalle opzioni di montaggio, non esiste alcuna garanzia che la scrittura di un file ne esca sul disco: devi chiamare manualmente la sincronizzazione dalla riga di comando o smontare il dispositivo prima di rimuoverlo o spegnerlo. Tuttavia, senza sincronizzazione dovresti vedere piccoli file migliorare le prestazioni di scrittura drasticamente.


1
Secondo man mount, async è già l'impostazione predefinita.
Nohillside

1

No, questo è chiaramente un problema con Mac OS. Ottengo prestazioni significativamente più veloci quando eseguo la stessa operazione utilizzando Linux su una macchina virtuale in esecuzione sullo stesso Macintosh. Vale a dire, la VM è circa 5 volte più veloce del sistema operativo nativo.

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.