Bagaimana cara mempercepat kecepatan penulisan kartu SD (menggunakan / dev / disk *) pada MacBook Pro?

17

Saya telah menginstal beberapa distribusi linux ke kartu SD dari MacBook saya, walaupun mereka membutuhkan waktu lebih dari satu jam untuk mentransfer beberapa ratus MB (menggunakan dddan /dev/disk1).

keluaran dd

Jika Anda melihat output di atas, itu berfungsi sekitar 0,31 MB / s! Kartu SD adalah Kelas 10, dan MacBook Pro saya adalah Intel Core 2 Duo 2,66 GHz, DDR3 4 GB 1067 MHz, dan OS X Lion 10.7.4. Berikut ini laporan perangkat keras untuk pembaca kartu:

Dibangun pada Pembaca Kartu SD:

ID Vendor: 0x05ac
ID Produk: 0x8403
Revisi: 1.00 Nomor Seri: 9833

Kartu SDHC:

Kapasitas: 7.97 GB (7.969.177.600 byte)
Media yang Dapat Dilepas: Ya BSD Nama: disk1
Tipe Peta Partisi: MBR (Master Boot Record)
Status SMART: Tidak Didukung
Volume:

PI:
Kapasitas: 7,96 GB (7,964,983,296 bytes)
Sistem File: MS-DOS
BSD Nama: disk1s1
Konten: DOS_FAT_32

Adakah ide mengapa transfer ke /dev/disk1sangat lambat dan bagaimana saya bisa mempercepatnya?

StuR
sumber
Kedengarannya seperti masalah perangkat keras bagi saya. Saya pernah mendengar 2011 MBP memiliki pembaca SD yang buruk, tetapi bisa juga menjadi masalah dengan yang sebelumnya. Coba kartu SD lain, tetapi bisa juga menjadi masalah dengan pembaca kartu, yang sayangnya melekat pada papan logika di sebagian besar MBP.
Robmathers
Saya membeli laptop pada tahun 2009, Fedora telah menyalin sekarang selama 2 jam dan saya sudah menyerah. Waktu pembaca kartu baru saya pikir.
StuR
Menariknya laju data sekuensial jauh lebih tinggi jika Anda menggunakan Finder atau Disk-Utility karena pelakunya tampaknya menjadi buffering dari / dev / disk * seperti yang dijelaskan dalam jawaban @pci
iolsmit

Jawaban:

38

Hanya mengalami masalah yang sama dan sepertinya itu /dev/disk*lambat karena buffer. Jika Anda menggunakan perangkat rdisk yang sesuai (mis .:) /dev/rdisk1s1Anda harus mendapatkan kecepatan yang Anda harapkan. Ini rupanya hal yang BSD.

Contoh:

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

Ref:

hal
sumber
1
Ini adalah jawaban terbaik yang saya temukan untuk pertanyaan ini karena saya dapat mengkonfirmasi hasilnya. Pergi dari ~ 1,35 MB / detik ke 20MB / detik :)
nessence
1
Tentu saja itu memalukan (untuk Apple / BSD) - meskipun, menggunakan dd memberi Anda kinerja terbaik karena Anda memiliki satu akses tulis (atau baca) yang panjang; pada tingkat file dan dengan akses acak kinerja Anda akan sangat bervariasi, tergantung pada kartu-SD - Dan: sangat baik menemukan @ pci!
iolsmit
2
Ceritanya panjang, tapi Anda baru saja menghemat salmon seharga $ 90 yang akan rusak kalau saya tidak bisa memperbaiki perokok saya tepat waktu.
deweydb
3
Agak konyol bagaimana Anda bisa mengunduh file di 20 + Mbps lebih dari ribuan kilometer, dan beberapa meter terakhir nirkabel. Tetapi mentransfer data beberapa sentimeter melalui koneksi yang keras jauh lebih lambat.
Jonathan.
Terima kasih. Saya melihat menyalin 7GB data lebih dari ~ 10 jam ketika saya memutuskan itu tidak dapat diterima dan menemukan jawaban ini - sangat membantu.
Barak
3

Bisa jadi SD-cardnya sangat lambat.

Lihatlah benchmark ini (Tulis Acak, 4 KB (QD = 1) [MB / s]) dan Anda akan melihat bahwa sebagian besar kartu SD memiliki kinerja penulisan yang buruk (di bawah 100 kB / s) untuk file kecil - dan instalasi linux tipikal terdiri dari banyak file kecil yang ditulis ke disk.

Card-reader internal harus mampu membaca / menulis setidaknya 20 MB / s - sangat tidak mungkin bahwa card-reader lain akan meningkatkan pengalaman Anda dengan kartu-SD ini.

Setelah semua file ditulis, yaitu sistem terinstal, Anda mungkin sebenarnya dapat menjalankan Linux dari kartu-SD dalam kecepatan yang dapat diterima - karena sebagian besar akses baca.

iolsmit
sumber
1
Untuk pemilih bawah, lihat posting ini
iolsmit
Ini akan menjadi percobaan yang baik untuk menguji kartu di pembaca lain yang dikenal baik, dan menguji kartu yang dikenal baik di pembaca yang dicurigai. Juga perhatikan bahwa semua "dokumen" untuk membuat file baru (sebagai lawan menulis konten mereka) dalam struktur data sistem file sangat besar untuk banyak file kecil.
Thorbjørn Ravn Andersen
Ketika kartu SD tidak begitu cepat, kecepatan (328198 byte / detik dan kemudian 288881 byte / detik) tidak dapat dibayangkan untuk kartu SD saat ini (terasa lebih seperti floppy drive). Karena ini adalah 'dd', ini berarti satu file - bukan beberapa file kecil.
Barak
1

Jika kartu terpasang dengan opsi sinkronisasi, ini berarti setiap file yang ditutup menyebabkan penulisan dihapus ke disk dan dengan demikian kinerja Anda pada file kecil akan mengerikan jika dibandingkan dengan file besar. Jika Anda menghapus sinkronisasi dari opsi pemasangan, maka tidak ada jaminan bahwa menulis file menyebabkannya keluar ke disk - Anda harus memanggil sinkronisasi secara manual dari baris perintah, atau melepas perangkat sebelum melepasnya atau mematikannya. Namun, tanpa sinkronisasi Anda akan melihat kinerja menulis file kecil meningkat secara drastis.

ddiepo
sumber
1
Menurutnya man mount, async sudah default.
nohillside
1

Tidak, ini jelas beberapa masalah dengan Mac OS. Saya mendapatkan kinerja lebih cepat secara signifikan ketika saya melakukan operasi yang sama ini menggunakan Linux pada mesin virtual yang berjalan pada Macintosh yang sama. Yaitu, VM sekitar 5x lebih cepat dari OS asli.

John Kraft
sumber