SD kartım neden yavaş?


23

SD kartım yavaş çalışıyor gibi görünüyor. Bir ADATA 16 GB SDHC Sınıf 10 kartım var. Benzer özelliklere sahip bir kartı listeleyen uyumluluk listesine baktım ve "çalışıyor" olduğunu söylüyor. Küçük bir dizinde bir dizin listesi almak gibi basit görevler bile ilk istediğimde birkaç saniye sürebilir. SD kartımdan ne tür bir performans elde ettiğimi doğrulamak için kullanabileceğim herhangi bir araç var mı? Ayrıca, SD kartın daha hızlı yanıt vermesini sağlamak için yapabileceğim herhangi bir yapılandırma değişikliği var mı?

Raspberry Pi'yi başsız bir BitTorrent tohum kutusu olarak kullanıyorum, bu yüzden çalıştırdığım her şey sadece komut satırında çalışıyor. Maksimum miktarda bellek bulunduğundan emin olmak için 240/16 bölmesini kullanıyorum.

Güncellemeler

Adamski'nin "dd" ile önerdiği @Krzysztof gibi bazı testleri yaptıktan sonra, 20 MB / sn okuma hızı ve yaklaşık 10 MB / sn yazma hızı elde ettiğinde iyi sonuçlar aldım. Ancak, hala bazı G / Ç hız sorunları var gibi görünüyor. Test ederken, arka planda "dd" komutlarını çalıştırdım ve neler olup bittiğini görmek için üst sıralara koştum. "Mmcqd" işleminin% 5 ile% 10 arasında biraz işlemci kullanımı gerektirdiğini fark ettim. İnternete baktım ve "mmcqd" nin bir miktar CPU kullandığını bildiren birçok insan buldum. Daha sonra aynı anda okuma ve yazma testi yapmak için aşağıdaki komutu koştum

sudo dd if=/dev/mmcblk0 of=test.dat bs=1M count=1024

Bu komutu çalıştırırken sadece 977 kB / s verim elde ettim ve "mmcqd" işlemcinin her 5 ila 10 saniyede% 10 ila% 25 arasında olduğunu bildirdi, ardından hiçbir şey geri dönmeyecek. Bu yüzden biraz daha test yaptım. Aşağıdaki iki komutu arkaplanda koştum ve sonra neler döndüğünü izledim.

sudo dd if=/dev/mmcblk0 of=/dev/null bs=1M count=1024 &
sudo dd if=/dev/zero of=test.dat bs=1M count=1024 &

Bu durumda "mmcqd" işlemci kullanımının yaklaşık% 35'ini zirveye çıkarır, ancak çıktı okuma için 7.5 MB / sn ve yazma için yaklaşık 5.3 MB / sn idi.

Burada, ağır yazıların "mmcqd" nin sistemi kilitlemesine neden olduğu bir sorun var gibi görünüyor. Bu şanzıman-arka plan programının, SD kartı beklediğinde hızın çok yükselmesi durumunda neredeyse sıfıra düşmesine neden olur. Şanzıman-arka plan programı çalıştırırken ayrıca "mmcqd" kullanımının oldukça yüksek olduğunu görüyorum.


SD kartın bu soruna neden olduğundan emin misiniz? Sistemin başka bir bölümünü hariç tutmak için ilk önce başka bir kart kullanmayı deneyebilir misiniz?
Dawid Ferenczy Rogožan

Mmc cihazıyla ilgili mesajlar için sistem günlüğü ve çekirdek günlüğünü kontrol ettiniz mi? Bazı kartlar sadece Ahududu Pi'de çalışmıyor. Bazıları güvenilir çalışmak için biraz ince ayar gerektirir.
Joppe

SD kart bağlantısı taşındı
ray023

1
@ Ray023 Teşekkürler. Bağlantıyı güncelledim. Gelecekte, sadece soruyu düzenleyebilirsiniz. Bence yeni olduğunuz için, düzenleme hemen yapılmayacak, ancak orijinal posterin veya bazı diğer üst düzey kullanıcıların onaylaması için kaydedilecek.
Kibbee

Yanıtlar:


21

Test kartı okuma hızı:

Okuma hızını test etmenin iki kolay yolu vardır (listeleme dizini sadece bir okuma işlemidir):

  • dd komutunu kullanarak:

    sudo dd if=/dev/mmcblk0 of=/dev/null bs=8M count=100

    Bu işlem SD kartınızdan 800 MB veri okuyacak ve bunu / dev / null değerine atacaktır. Çok zaman alıyorsa, yalnızca 80 MB okumak için sayı = 100'den sayı = 10'a kadar değiştirebilirsiniz. Komut bittikten sonra okuma hızıyla bir mesaj yazdırmalıdır. En az birkaç MB / s almalısınız.

  • hdparm komutunu kullanarak:

    sudo hdparm -t /dev/mmcblk0

    Bu, size ilk komutla benzer hızda bir sonuç vermeli ve aynı zamanda en az MB / s olmalıdır.

Test kartı yazma hızı:

Bunu yapmak için yazma hızını test etmenin kolay bir yolu yoktur, bunun için karta bazı veriler yazmanız gerekir. Bunu düşük seviyede yapmak istiyorsanız (dosya sistemini atlayarak) karttaki bazı verileri geçersiz kılmak zorunda kalırsınız ve muhtemelen bunu yapmak istemezsiniz. Bu, kolayca devre dışı bırakılabildiği (ile swapoff -a), dd (ile dd if=/dev/zero of=/dev/{yourswappartitionnanehare} bs=8M count=25) ile test edilip sonra yeniden oluşturulabildiği (ile mkswap /dev/{yourswappartitionnanehare}) takas bölümünüz varsa yapılabilir .

Takas bölümünüz yoksa, dd komutunu kullanarak dosya sistemi yazma hızını test edebilirsiniz:

gg = = / dev / sıfır = / ev / pi / test dosyası bs = 8M sayısı = 25

Bu 200MB içinde dosya yaratacaktır /home/pi/testfile. İstediğiniz herhangi bir dosya adını kullanabilirsiniz.

Notlar:

  • Hızı test ederken, sisteminizde başka hiçbir programın çalışmadığından emin olun (torrent uygulaması vb.).
  • Testten sonra, dmesgmmc alt sistemi hakkında herhangi bir mesaj olup olmadığını görmek için komutun çıkışını kontrol edebilirsiniz .
  • En güncel bellenimin kurulu olduğundan emin olun. Zaman zaman SD kart hızından bağımsız olarak yamalar var.
  • Bazı gerilemeler olabileceğinden, bazı eski yazılımları da kontrol etmek isteyebilirsiniz. Bunu yapmanın en kolay yolu (ancak en iyisi değil), farklı tarihlere dayanan farklı sistem görüntülerini test etmektir. Zor yol, github kullanmak ve firmware dosyalarının geçmiş sürümlerini kullanıma almaktır.

İltifatlarım. MacBook Air'de, bir sınıf 6 4GB SD Kartına bir img dosyası yazarken 1.4 MB / sn elde ettim. PI üzerinde bir okuma testi 20 MB / saniye rapor etti !?
ScrollerBlaster

Bende de aynı şey var. Okuma hızım 500 MB / sn gibi bir şey. Yanlış bir şey mi anladım?
En Koyu N2O

12

SD kart performansı için erişimin sıralı (dd ile olduğu gibi) veya küçük bloklardaki rasgele erişim olup olmadığı çok önemlidir. SD kartlar, özellikle de yüksek sınıftakiler, fotoğraf veya video depolamak için iyi olan sıralı erişim için optimize edilmiş görünüyor. Ancak, bir çok küçük dosya okunup yazıldığından, bir SD kart işletim sistemi işletim sistemi çalıştırmak için rastgele erişim daha önemlidir. Sanırım bittorrent de biraz rasgele erişimler yaratıyor.

Bu iki tartışma konusu, çok sayıda SD kart kıyaslaması ve tartışma içeriyor. Genel olarak, rastgele yazma hızının, kartın işletim sisteminin çalıştırılmasının tepkisi için belirleyici olduğu bulundu. Bu hız, üreticilerin bildirmek istediği hız olan sıralı yazma hızlarından çok daha düşüktür. SD kart sınıfı sıralı hızlara dayanmaktadır ve daha düşük sınıflar (4 veya 6) ahududu kullanımı için daha uygun olabilir.

Iozone aracı birçok farklı erişim desenlerinin hızını ölçer. Buradaki ahududu üzerinde iozonun derlenmesi için kısa talimatlar verdim .


2
İlginç bir cevap. Güzel bir.
Jivings

4x sınıf 10 aldığım için çok ilginç ... dang! :-(
BerggreenDK

@ BerggreenDK : Belki gelecekte kartları farklı bir amaç için iyi kullanırsınız ve daha sonra belki de 10. sınıf kart aldığınız için mutlu olursunuz.
Neverland

1
Rastgele yazma hızının, önyükleme sırası veya dizin listesi gibi tipik görevlerde çok az etkisi olması gerekir. Torrentler için bile, 4KB yazma özellikli test sonuçları önemli değildir: tipik yığın boyutları yaklaşık 1 MB'dir ve boş RAM'iniz olmadıkça, disk önbelleği bunları daha büyük sıralı yazmalara göre gruplandırır.
Dmitry Grigoryev


0

"Bittorrent" yazıyorsun ve bu benim tahminim / cevabımı tetikliyor.

Torrent protokolü rastgele sıralayıcılardan rasgele sırayla paketleri alır.

Herhangi bir dosya sisteminde torrent kullanmaya başladığınızda, oldukça parçalanmış olur. Bu performans büyük zaman zarar verecek.

SDCARD hakkında bildiklerime göre, çalışan FAT / FAT32 ve parçalanma işlemlerinde daha da kötüleşiyor.

Bu yüzden SDCARD'ınızı birleştirmenin bir yolunu bulun veya tüm dosyaları ondan kopyalayın ve daha sonra işletim sistemini yeniden yükleyin.

Son olarak, bir LOT (bittorrent motoru kullanacağı gibi) yazmak, SDCARD'ınızı normal kullanımdan daha hızlı yırtacaktır. Bunu yapmanın yanlış olduğunu söyleyemem, infact kendime benzer olduğunu düşündüm. Ama - bu senin sorunun sebebi olabilir.

İndirme + "ayrılmış yükleme süresi" tamamlandıktan sonra, indirilen dosyaları otomatik olarak başka bir hedefe aktaracak / taşıyacak bir torrent istemcisi olsaydı.

O zaman birleştirme çok daha hızlı olacaktı.


Parçalanma SD Kartlara nasıl uygulanır? Parçalanmanın sadece disklerin dönmesi ile ilgili bir sorun olduğunu düşündüm, çünkü dosya sıralı olmayan sektörlerde yer alacaktı, bu da okuma / yazma başlığının bir dosyaya erişmek için her yere taşınmasını gerektiriyordu. SD kart gibi katı hal depolarında bu bir sorun değil. Ancak, bittorrent'in neden olduğu yazma işlemlerinin sayısı konusunda sizinle aynı fikirdeyim. Bunun problemle alakası olduğunu düşünüyorum. Bunu RPI'deki az miktarda bellekle birleştirin (benimki 256 MB'tır) ve yavaş disk erişimi için bir reçete gibi görünüyor. Ayrıca SD kartlar genel olarak yavaştır.
Kibbee

Eh, FAT / FAT32 yapısı çok sayıda dosya almaya başladığınızda kötü ve yavaştır. Ve küçük Ahududu birlikte hareket etmek için çok fazla güce sahip değil. Böylece yoluna çıkan her şey onu yavaşlatıyor. Ama yine, bu sadece benim tahminim. Bu konuda hiçbir bilgim yok.
BerggreenDK,

1
RPI, FAT / FAT32'yi bile kullanmıyor. Dosya sistemi EXT4'tür.
Kibbee,

3
Cevap, bittorrentte muhtemelen dosyalara küçük parçalar halinde rasgele sırada veri yazan iyi bir noktaya değindi. Bu tür bir rastgele yazma türü, SD kartlarda çok verimsizdir. Ancak birleştirmenin yardımcı olacağını sanmıyorum. Aslında, FAT Pi'de kullanılır, ancak yalnızca önyükleme bölümü için kullanılır.
Frepa

1
@Kibbee: SD kartların neden kendilerine ait parçalanma sorunları olduğunu anlamak için raspberrypi.stackexchange.com/questions/8850/… adresindeki cevabımı görün . Fiziksel disk parçalanmasını önleyen birçok yazılım tekniği (örneğin dosyaları önceden tahsis etmek gibi) SD kartlarda işe yaramaz, çünkü sektörlere veriler tahsis edilmek yerine onlara yazıldığında sektörler yerleştirilir (veya taşınır).
supercat
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.