Ich weiß, dass die genauen Benchmark-Zahlen von Hersteller zu Hersteller variieren, aber im Allgemeinen, wenn Sie nur High-End-Flash-Laufwerke, SD-Karten und USB-Festplatten in Betracht ziehen und Ihr Raspberry Pi über einen Ethernet-Switch mit einem Netzwerk verbunden ist, was die schnellste Konfiguration eines Netzwerks ist Datenübertragung Standpunkt? Ich suche nur nach Antworten, bei denen die Leute tatsächlich die unten aufgeführten Konfigurationen ausprobiert haben und echte Ergebnisse erzielen, nicht die Theorie.
Natürlich muss eine SD-Karte verwendet werden, da diese für mindestens einen Teil des Startzyklus erforderlich ist. Nehmen wir jedoch an, dass auf jedem der unten aufgeführten Geräte eine zusätzliche Datenpartition vorhanden ist, die die höchsten Netzwerkübertragungsgeschwindigkeiten auf dem Raspberry Pi aufweist.
- Die SD-Karte
- Ein USB-Stick
- Eine USB-Festplatte
Diese Frage ist nicht trivial, da sich der Verarbeitungsaufwand für eines der mit der Ethernet-Kommunikation verbundenen Speichergeräte auf die Übertragungsrate auswirken kann. Außerdem wird der Ethernet-Port des Raspberry Pi über den USB-Bus gesteuert, sodass der Durchsatz im Allgemeinen davon beeinflusst werden sollte die Koordination von Ethernet-Datenübertragung und USB-Mediendatenübertragung. Ich weiß nicht, ob sich die SD-Karte auf demselben gemeinsam genutzten USB-Bus befindet wie die USB-Anschlüsse und der Ethernet-Anschluss, aber wenn dies nicht der Fall ist, wäre dies in Bezug auf die Leistung ein ziemlich großer Vorteil.
Bearbeitet, um die Netzwerkübertragung als Voraussetzung für den Benchmark zu berücksichtigen
sudo hdparm -t /dev/sdx
ein nützliches Instrument für das Benchmarking verwenden.Antworten:
Beim Benchmarking müssen Sie immer feststellen, an welche Grenzen Sie stoßen. Denn wenn Sie erwarten, 100 MB aus diesem LAN herauszuholen, dann täuschen Sie sich nur selbst!
Schauen Sie sich dieses Block-Design des RaspberryPI Model-B an
Deshalb stellen wir hier eine sehr wichtige Tatsache fest. Der USB-Controller hat einen Ethernet-Engpass , da er aus dem von uns erstellten Block-Digramm mit dem USB-Hub verbunden ist. (Keine eindeutige Angabe, ob ein anderer Bus oder einfach nur USB2 verwendet wird?)
Ohh schau - ein weiteres Blockdiagramm,
Das wirft jetzt noch mehr Licht auf die Situation. Der 10/100-Controller ist mit dem USB-Hub verbunden. Leider gibt es auch hier keine Angabe darüber, wie schnell der Hub mit dem LAN-Controller kommuniziert. Erwarten Sie die Schlüsseltatsache, dass USB-Geschwindigkeit und LAN ausgehandelt werden Für USB-Umgebungen mit gemischter Geschwindigkeit.
Wo ist die SD-Karte?
Es hat sich herausgestellt, dass die SD-Karte direkt mit dem BCM2835 verbunden ist (Seite 65). Sie zeigen sehr detailliert, wie sich die Leistung auf die verschiedenen Konfigurationsebenen auswirkt. Es ist wichtig zu beachten, dass die SD-Karte mit einem dedizierten Takt unabhängig von der CPU / GPU mit voller Geschwindigkeit betrieben werden kann (unabhängig von der verwendeten Karte und dem verwendeten Standard - es werden einige Standards unterstützt).
Was bedeutet das?
Wenn Sie die schnellere SD-Karte und das beschissene USB-Laufwerk (4 GB / 8 GB) testen, werden Sie höchstwahrscheinlich massive Leistungsunterschiede feststellen. Nun stellt sich die Frage, wie die CPU / GPU die Kommunikation mit diesem wunderbaren eingebetteten Gerät (USB / LAN-Chip) handhabt und mit welcher Geschwindigkeit sie kommunizieren kann.
Sehen Sie, wie weit die Theorie tatsächlich gehen kann, bevor wir überhaupt ein Benchmarking durchführen? Ein weiterer wichtiger Punkt ist: Wie steuert die CPU den Datenfluss? Verwendet es den empfohlenen separaten Uhrenkanal?
In einer idealen Welt würde man denken, dass dieses LAN / USB damit umgehen würde. Aber das erfordert eine MCU. Sehen wir irgendwo in diesem Blockdiagramm eine MCY? NEIN!
Die CPU muss also IO DATA anfordern, sendet es an den USB-Port und geht dann an den LAN-Port (über denselben USB-Hub). Ja. Dies kann zu Geschwindigkeitsproblemen führen.
Es ist auch eine großartige Sache zu beachten, was passiert, wenn Sie auf einen USB-Stick und von der SD-Karte alles über LAN kopieren. Es wird etwas Verkehr verursachen.
Wir müssen verschiedene Aspekte vergleichen
Wenn wir herausfinden, was wir messen wollen, können wir eine reale Frage stellen.
Jetzt, da du weißt, wofür du kämpfst, fordere ich dich auf, dir selbst zu antworten.
Das ist vielleicht ein sehr guter Ausgangspunkt.
Verweise
Aber meistens,
Mein eigenes technisches Wissen und meine Einschätzungen basieren auf meiner eigenen Erfahrung. Das OP hat eine sehr gute Frage gestellt, aber es ist unverständlich, dass Sie ohne theoretisches Verständnis eines Systems dazu verurteilt sind, die praktischen Probleme zu bewerten / lösen.
Ergebnisse
(4) Diese Antwort zeigt einige bodenständige Piratenversuche. Und es beweist, dass intensive Datentransaktionen die CPU direkt beeinflussen (nur nicht sicher, ob es sich um die SD-Karte handelt oder ob Daten innerhalb des BCM-Chips auf den USB / LAN-Chip verschoben werden).
(6) Es wurde nachgewiesen, dass der einzige Flaschenhals die Quelle sein wird (z. B. eine langsame SD-Karte). Der USB-Hub schafft es, Daten mit 90% + zu pumpen, aber die Beantwortung der Fragen 4 und 5 kann diese Leistung direkt beeinflussen.
Mit einigen Nachforschungen und Beiträgen anderer Benutzer beginnen wir, vorläufige Ergebnisse zu ermitteln und zu erhalten.
Hier ist ein schönes Diagramm , um zu veranschaulichen, womit wir es zu tun haben.
quelle
Offensichtlich wäre die höchste Leistung mit einer Ramdisk.
Das wird für ein an ein Netzwerk angeschlossenes Speichergerät nicht viel ausmachen, aber dann ist der pi nicht unbedingt die beste Wahl für diese feste Anwendung.
In einigen Fällen, in denen die Flexibilität des PIS eindeutig geeignet ist, können die tatsächlichen Speicheranforderungen klein genug sein, um explizit von einer Ramdisk oder implizit vom RAM über den Disk-Caching-Mechanismus ausgeführt zu werden (Linux-Ramdisks sind ohnehin nur Disk-Caches ohne Sicherungsdisk).
Sie würden immer noch eine Karte zum Booten benötigen, aber als Nebeneffekt des RAM-Betriebs könnten Sie die Karte schreibgeschützt lassen und das Risiko einer Beschädigung minimieren.
quelle
USB HDD oder USB SSD sollten Ihnen die schnellste Leistung bieten. Die SD-Karten schreiben ungefähr 12 MB / s für Class10-Geräte und USB kann bis zu 30 MB / s erreichen.
Ich bin nicht damit einverstanden, dass der USB-Hub das Ethernet auf RPi in den Griff bekommt, da der HUB 400 MBit / s und das Ethernet 100 MBit / s unterstützen kann. Theoretisch kann er also bis zu 4 x Fast Ethernet 100 MBit / s-Ports unterstützen.
quelle
Ich erhalte mit einem USB-Stick max. 4 MBit / s und das Gleiche für USD HDD. Währenddessen werden die Dateien einfach über die Windows-Netzwerk-Heimnetzgruppe auf das mit der Himbeere verbundene Gerät übertragen.
Ich habe mindestens das Zehnfache erwartet, aber es ist mir nicht gelungen, die Übertragungsgeschwindigkeit zu erhöhen. Ich habe versucht, FTP direkt auf eine USB-Festplatte zu übertragen (dieses Gerät überträgt bei Anschluss an meinen Laptop +60 MBit / s), aber die Ergebnisse sind sehr schlecht. 100 KB / s! Dies führt zu stundenlangem Datenverkehr mit nur wenigen 100 MB.
Ich bewege jetzt die Festplatte zwischen Laptop und Raspberry Pi zur Datenübertragung :-(
quelle
vsftpd
.