MacBook Pro'da SD kart yazma hızını (/ dev / disk * kullanarak) nasıl hızlandırabilirim?


17

MacBook'umdan bir SD karta bazı linux dağıtımları kuruyorum, ancak birkaç yüz MB'yi ( ddve kullanarak /dev/disk1) aktarmak bir saatten fazla sürüyor .

dd çıkışı

Yukarıdaki çıktıya bakarsanız, yaklaşık 0.31 MB / s hızında çalışıyor! SD kart Sınıf 10 ve MacBook Pro'm 2.66 GHz Intel Core 2 Duo, 4 GB 1067 MHz DDR3 ve OS X Lion 10.7.4. İşte kart okuyucu için donanım raporu:

Dahili SD Kart Okuyucu:

Tedarikçi Kimliği: 0x05ac
Ürün Kimliği: 0x8403
Revizyon: 1.00 Seri Numarası: 9833

SDHC Kartı:

Kapasite: 7,97 GB (7,969,177,600 bayt)
Çıkarılabilir Ortam: Evet BSD Adı: disk1
Bölüm Haritası Türü: MBR (Ana Önyükleme Kaydı)
SMART durumu: Desteklenmeyen
Birimler:

PI:
Kapasite: 7.96 GB (7.964.983.296 bayt)
Dosya Sistemi: MS-DOS
BSD Adı: disk1s1
İçerik: DOS_FAT_32

Aktarımın neden bu /dev/disk1kadar yavaş olduğunu ve bunu nasıl hızlandırabileceğimi düşünüyor musunuz?


Bana bir donanım sorunu gibi geliyor. 2011 MBP'lerin kötü bir SD okuyucuya sahip olduğunu duydum, ancak daha öncekilerle de bir sorun olabilir. Başka bir SD kart deneyin, ancak çoğu MBP'de mantık kartına bağlı olan kart okuyucu ile ilgili bir sorun olabilir.
robmathers

2009 yılında dizüstü bilgisayar satın aldım, Fedora 2 saattir kopyalama yapıyor ve pes ettim. Yeni kart okuyucu zamanı sanırım.
StuR

Eğer Bulucu veya Disk-Utility suçlu / dev / disk tamponlama gibi görünüyor olarak kullanmak eğer İlginçtir sıralı veri hızı olarak açıklandığı * çok daha yüksektir cevap @pci arasında
iolsmit

Yanıtlar:


38

Sadece aynı sorunla karşılaştı ve /dev/disk*tampon olduğu için yavaş olduğu görülüyor . İlgili rdisk cihazını (ör:) kullanıyorsanız, /dev/rdisk1s1beklediğiniz hızı elde etmelisiniz. Görünüşe göre bu bir BSD olayı.

Misal:

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


1
Sonuçları doğrulayabildiğim için bu soruya bulduğum en iyi cevap bu. ~ 1.35 MB / sn'den 20MB / sn'ye gitti :)
nessence

1
Tabii ki bu bir utanç (Apple / BSD için) - dd kullanmak size uzun bir yazma (veya okuma) erişiminiz olduğu için mümkün olan en iyi performansı veriyor; dosya düzeyinde ve rastgele erişimle performansınız SD karta bağlı olarak çok değişecektir - Ve: mükemmel bulma @pci!
iolsmit

2
Bu uzun bir hikaye, ama sadece zaman içen zaman düzeltemedim kötü gidecekti 90 $ somon beni kurtardı.
deweydb

3
Binlerce kilometrede 20 + Mbps'de bir dosyayı nasıl indirebileceğiniz çok saçma ve son birkaç metre kablosuz. Ancak sert bir bağlantı üzerinden birkaç santimetre veri aktarmak çok daha yavaştır.
Jonathan.

Teşekkürler. Kabul edilebilir olmadığına karar verdiğimde ve bu cevabı bulduğumda ~ 10 saat boyunca 7GB veri kopyalamaya bakıyordum - çok yararlı.
Barak

3

SD kartın bu kadar yavaş olması iyi olabilir.

Bu karşılaştırmaya bir göz atın (Rastgele Yazma, 4 KB (QD = 1) [MB / s]) ve çoğu SD kartın küçük dosyalar için berbat bir yazma performansına (100 kB / s'nin altında) ve tipik linux kurulumu diske yazılmış çok sayıda küçük dosyadan oluşur.

Dahili kart okuyucu en az 20 MB / s okuma / yazma yeteneğine sahip olmalıdır - başka bir kart okuyucunun bu SD kartla olan deneyiminizi iyileştirmesi pek olası değildir.

Tüm dosyalar yazıldıktan sonra, yani sistem yüklendikten sonra, çoğunlukla okuma erişimi olduğu için Linux'u SD karttan kabul edilebilir bir hızda çalıştırabilirsiniz.


1
Aşağı seçmen için bu
gönderiye

İçin olsa iyi bir deney olurdu sınamak iyi olduğu bilinen başka bir okuyucuda kartı ve şüpheli okuyucuda iyi olduğu bilinen bir kart test edin. Ayrıca, dosya sistemi veri yapılarında (içeriklerini yazmak yerine) yeni dosyalar oluşturmak için kullanılan tüm "evrak işlerinin" birçok küçük dosya için çok büyük olduğuna dikkat edin.
Thorbjørn Ravn Andersen

SD kartlar çok hızlı değilse, hız (328198 bayt / sn ve daha sonra 288881 bayt / sn) günümüzün SD kartları için düşünülemez (disket sürücüler gibi hissedilir). Bu 'dd' olduğundan, tek bir dosya anlamına gelir - birden fazla küçük dosya değil.
Barak

1

Kart senkronizasyon seçeneğiyle monte edilirse, her dosya kapatıldığında yazma işlemi diske temizlenir ve bu nedenle küçük dosyalardaki performansınız büyük dosyalarla karşılaştırıldığında korkunç olur. Senkronizasyonu bağlama seçeneklerinden çıkarırsanız, bir dosya yazmanın diske çıkmasına neden olduğuna dair bir garanti yoktur - senkronizasyonu komut satırından manuel olarak çağırmanız veya cihazı kaldırmadan veya kapatmadan önce bağlantısını kesmeniz gerekir. Ancak, senkronizasyon olmadan küçük dosyaların yazma performansının önemli ölçüde arttığını görmelisiniz.


1
Göre man mount, async zaten varsayılan.
nohillside

1

Hayır, bu açıkça Mac OS ile ilgili bir sorun. Aynı Macintosh üzerinde çalışan bir sanal makinede Linux kullanarak aynı işlemi yaptığımda çok daha hızlı performans elde ediyorum. Yani, VM yerel işletim sisteminden yaklaşık 5 kat daha hızlıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.