Meine SD-Karte scheint langsam zu laufen. Ich habe eine ADATA 16 GB SDHC Class 10-Karte. Ich habe die Kompatibilitätsliste überprüft, in der eine Karte mit ähnlichen Spezifikationen aufgeführt ist und die angibt, dass sie "funktioniert". Selbst einfache Aufgaben, wie das Auflisten eines Verzeichnisses in einem kleinen Verzeichnis, können beim ersten Anfordern einige Sekunden dauern. Gibt es Tools, mit denen ich überprüfen kann, welche Leistung meine SD-Karte erbringt? Kann ich auch Änderungen an der Konfiguration vornehmen, damit die SD-Karte schneller reagiert?
Ich verwende den Raspberry Pi als kopflose BitTorrent- Seedbox, sodass alles, worauf ich stoße, nur über die Befehlszeile ausgeführt wird. Ich verwende die 240/16 Aufteilung, um sicherzustellen, dass ich die maximale verfügbare Speicherkapazität habe.
Aktualisierung
Nachdem ich einige Tests durchgeführt hatte, die von @Krzysztof Adamski mit "dd" empfohlen wurden, erhielt ich einige gute Ergebnisse mit einer Lesegeschwindigkeit von 20 MB / s und einer Schreibgeschwindigkeit von etwa 10 MB / s. Es scheint jedoch immer noch einige Probleme mit der E / A-Geschwindigkeit zu geben. Beim Testen habe ich die "dd" -Befehle im Hintergrund ausgeführt und oben ausgeführt, um zu sehen, was los ist. Ich bemerkte, dass der "mmcqd" -Prozess ziemlich viel Prozessor beanspruchte, zwischen 5% und 10%. Ich habe mich im Internet umgesehen und festgestellt, dass viele Leute berichten, dass "mmcqd" einen beträchtlichen Teil der CPU verbraucht. Ich habe dann den folgenden Befehl ausgeführt, um das Lesen und Schreiben gleichzeitig zu testen
sudo dd if=/dev/mmcblk0 of=test.dat bs=1M count=1024
Bei der Ausführung dieses Befehls wurde ein Durchsatz von nur 977 kB / s erzielt, und "mmcqd" meldete alle 5 bis 10 Sekunden eine Prozessorauslastung zwischen 10% und 25%. Also habe ich noch ein paar Tests gemacht. Ich habe die folgenden zwei Befehle im Hintergrund ausgeführt und dann beobachtet, was oben los war.
sudo dd if=/dev/mmcblk0 of=/dev/null bs=1M count=1024 &
sudo dd if=/dev/zero of=test.dat bs=1M count=1024 &
In diesem Fall würde "mmcqd" einen Spitzenwert von etwa 35% der Prozessorauslastung aufweisen, der Durchsatz war jedoch mit etwa 7,5 MB / s beim Lesen und etwa 5,3 MB / s beim Schreiben viel besser.
Es scheint, dass hier ein Problem vorliegt, bei dem schwere Schreibvorgänge dazu führen, dass "mmcqd" das System blockiert. Dadurch verlangsamt sich der Übertragungsdämon auf fast Null, sobald die Geschwindigkeit zu hoch wird und auf die SD-Karte gewartet wird. Beim Ausführen von Transmission-Daemon sehe ich auch, dass die "mmcqd" -Verwendung ziemlich hoch wird.
quelle
Antworten:
Lesegeschwindigkeit der Karte testen:
Es gibt zwei einfache Möglichkeiten, die Lesegeschwindigkeit zu testen (das Auflisten des Verzeichnisses ist nur eine Leseoperation):
mit dem Befehl dd:
sudo dd if=/dev/mmcblk0 of=/dev/null bs=8M count=100
Dadurch werden 800 MB Daten von Ihrer SD-Karte gelesen und in / dev / null verworfen. Wenn es zu lange dauert, können Sie count = 100 in count = 10 ändern, um nur 80 MB zu lesen. Nach Beendigung des Befehls sollte eine Nachricht mit Lesegeschwindigkeit gedruckt werden. Du solltest mindestens ein paar MB / s haben.
mit dem Befehl hdparm:
sudo hdparm -t /dev/mmcblk0
Dies sollte zu einer ähnlichen Geschwindigkeit führen wie der erste Befehl und mindestens ein paar MB / s betragen.
Schreibgeschwindigkeit der Karte testen:
Es gibt keine einfache Möglichkeit, die Schreibgeschwindigkeit zu testen. Dazu müssten Sie tatsächlich einige Daten auf die Karte schreiben. Wenn Sie dies auf niedriger Ebene (ohne Dateisystem) tun möchten, müssen Sie einige Daten auf der Karte überschreiben, und Sie möchten dies wahrscheinlich nicht tun. Dies ist möglich, wenn Sie eine Swap-Partition haben, die einfach deaktiviert (mit
swapoff -a
), mit dd (mitdd if=/dev/zero of=/dev/{yourswappartitionnanehare} bs=8M count=25
) getestet und dann neu erstellt (mitmkswap /dev/{yourswappartitionnanehare}
) werden kann.Wenn Sie keine Swap-Partition haben, können Sie die Schreibgeschwindigkeit des Dateisystems auch mit dem Befehl dd testen:
dd if = / dev / zero von = / home / pi / testfile bs = 8M count = 25
Dadurch wird eine 200-MB-Datei in erstellt
/home/pi/testfile
. Sie können einen beliebigen anderen Dateinamen verwenden.Anmerkungen:
dmesg
Befehls überprüfen, um festzustellen, ob Meldungen zu mmc subsystem vorliegen.quelle
Für die Leistung der SD-Karte ist es sehr wichtig, ob der Zugriff sequentiell (wie bei dd) oder in kleinen Blöcken zufällig erfolgt. SD-Karten, insbesondere solche von hoher Klasse, scheinen für den sequentiellen Zugriff optimiert zu sein, was sich gut zum Speichern von Fotos oder Videos eignet. Für das Ausführen eines Betriebssystems der SD-Karte ist jedoch ein wahlfreier Zugriff wichtiger, da viele kleine Dateien gelesen und geschrieben werden. Ich würde vermuten, Bittorrent generiert auch etwas zufällige Zugriffe.
Diese beiden Diskussionsthreads enthalten viele SD-Karten-Benchmarks und -Diskussionen. Im Allgemeinen wurde festgestellt, dass die zufällige Schreibgeschwindigkeit für die Reaktionsfähigkeit des Betriebs eines Betriebssystems der Karte entscheidend ist. Diese Geschwindigkeit ist häufig viel niedriger als die Geschwindigkeit der sequentiellen Schreibvorgänge, die die Hersteller gerne melden. Die SD-Kartenklasse basiert auf sequentiellen Geschwindigkeiten, und niedrigere Klassen (4 oder 6) eignen sich möglicherweise besser für die Verwendung mit Himbeeren.
Das iozone- Tool misst die Geschwindigkeit vieler verschiedener Zugriffsmuster. Ich habe für die Erstellung iozone auf der Himbeere kurze Anleitung geschrieben hier .
quelle
Für den RasPI-Onboard-Slot gibt es eine große Diskussion auf der RasPI-Website: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=63&t=5057&sid=ee346e3e7cea48d2858a143bcf086362
Ich hatte nicht die Zeit, alle 12 Diskussionsseiten durchzulesen, aber es scheint ein Problem mit dem CLK-Signal zu sein.
quelle
Du schreibst "bittorrent" und das löst meine Vermutung / Antwort aus.
Das Torrent-Protokoll empfängt Pakete in zufälliger Reihenfolge von zufälligen Seedern.
Sobald Sie beginnen, Torrent auf einem Dateisystem zu verwenden, wird es ziemlich fragmentiert. Dies wird die Leistung stark beeinträchtigen.
Soweit ich weiß, läuft die SDCARD mit FAT / FAT32 und ist noch schlimmer für die Fragmentierung.
So finden Sie einen Weg, um Ihre SDCARD zu defragmentieren, oder kopieren Sie alle Dateien von ihr und installieren Sie das Betriebssystem neu.
Wenn Sie eine LOT schreiben (wie es die Bittorrent-Engine tun wird), wird Ihre SDCARD schneller zerrissen als bei normaler Verwendung. Ich sage nicht, dass es falsch ist, es zu tun. Aber - das könnte der Grund für Ihr Problem sein.
Ich wünschte, es gäbe einen Torrent-Client, der die heruntergeladenen Dateien automatisch an einen anderen Ort überträgt / verschiebt, sobald der Download + "reservierte Upload-Zeit" abgeschlossen ist.
Dann würde das Defragmentieren viel schneller gehen.
quelle