Was ist die leistungsstärkste Hardwarekonfiguration?

35

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.

  1. Die SD-Karte
  2. Ein USB-Stick
  3. 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

Dan B
quelle
1
Zu Ihrer Information können die Antwortenden sudo hdparm -t /dev/sdxein nützliches Instrument für das Benchmarking verwenden.
Jivings
2
Ich habe keine Benchmarks, aber es ist allgemein bekannt: ssd> hdd> flash> sd> optische Medien
Alexander - Reinstate Monica
+1 - Guter Punkt zum SD-Anschluss - liegt er am selben Bus wie der USB- / Ethernet-Anschluss? Funktioniert es besser, die Last auf SD und angeschlossenem USB-Speicher zu teilen?
Jon Egerton
@XAleXOwnZX Sicher, wenn die Busse, auf denen diese Geräte betrieben werden, mit der maximalen Leistung des Geräts übereinstimmen, dann ist dies die Reihenfolge. Ich wette jedoch, dass Ihre Bestellung eher wie folgt aussieht: ssd = hdd = flash> optical, da der Raspberry Pi nur über USB verfügt und SD kann sich an einer beliebigen Stelle in dieser Liste befinden, je nachdem, ob es einen eigenen Bus hat, der von den USB-Anschlüssen getrennt ist.
Dan B
Das ist ein guter Punkt, aber HDD> Flash sicher. Meine USB-Festplatte erreicht 30 MBit / s im Vergleich zu 5-10 bei meinem Flash-Laufwerk
Alexander - Reinstate Monica

Antworten:

35

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 Bildbeschreibung hier eingeben

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,

Bildbeschreibung hier eingeben

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

Bildbeschreibung hier eingeben

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.

  1. Wie schnell verarbeitet der interne USB Daten von SD?
  2. Wie viel CPU wird zum Lesen / Schreiben auf SD und dann auf LAN verwendet?
  3. Wie viel CPU wird zum Lesen / Schreiben auf einem USB-Stick verwendet?
  4. Hat das Kopieren von Daten direkten Einfluss auf die CPU-Auslastung?
  5. Wie gut kann der eingebettete USB / LAN-Chip Daten von 2 Quellen zurück in den LAN-Port lesen und wirkt sich dies proportional auf die CPU aus?
  6. Es ist nicht erforderlich zu testen, ob das LAN 10 MB / s erreicht, da der Zustand, in dem sich der USB-Hub befindet, einen Engpass darstellt.

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.

Bildbeschreibung hier eingeben

Piotr Kula
quelle
1
+1 Gute Antwort. Können Sie bitte Quellen für Ihre Bilder angeben?
Jivings
1
Diese Antwort fügt der Frage, die erklärt, warum jedes der verschiedenen Speichermedien sehr unterschiedliche Leistungszahlen aufweisen kann, in hervorragender Weise Details hinzu. Vielen Dank für die zusätzlichen Informationen, die ich in erster Linie selbst zu der Frage hätte hinzufügen sollen.
Dan B
1
USB ist immer noch rund 30 MB / s, also ausreichend für ein 100-Mbit-Netzwerk.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen ja das stimmt. Eine meiner Fragen bezieht sich jedoch auf die Leistung des eingebetteten USB-Hubs. Wie schnell ist es wirklich? und hängt es von der ARM-CPU ab - auch was passiert, wenn Sie Form 2-Quellen über LAN kopieren? Das ist ein Benchmarking wert. Ich sage nicht, dass es das nicht tun wird - aber es könnte in manchen Situationen ein Problem sein.
Piotr Kula
Klingt so, als hättest du Erfahrung auf dem Gebiet. Könnten Sie tatsächliche Messungen durchführen?
Thorbjørn Ravn Andersen
3

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.

Chris Stratton
quelle
Sie benötigen keine Karte, von der Sie booten können. Das Betriebssystem / Bootloader benötigt es! Sie können über die serielle Schnittstelle oder das LAN booten, wenn Sie den Bootloader entsprechend geändert haben. Wenn Sie technisch genug sind, können Sie dem RPI 3 GB RAM hinzufügen - aber das ist völlig unangebracht. Fakt ist, alles läuft über einen blöden USB-Hub! bleeeh
Piotr Kula
Befindet sich der Bootloader, zumindest der, den Sie ändern könnten, nicht auf der SD-Karte? Möglicherweise können Sie ein internes Boot-ROM von einer anderen Quelle laden, wenn Sie einige Konfigurations-Pinbelegungen ändern.
Chris Stratton
Ich bin fast sicher, dass der BCM-Chip genau wie Arduino einen Bootloader hat. (Wie das BIOS auf dem PC) Es muss ein erstes Programm geben, um das nächste Programm zu laden und so weiter. Ändern Sie den Bootlaoder auf RPi .. Warten Sie ein oder zwei Jahre.
Piotr Kula,
Das ATMEGA eines Arduino ist ein Beispiel für einen Mikrocontroller, der eigenständig mit internem Flash betrieben werden kann. Ein Booloader ist dort vom Benutzer anpassbar. Der SOC des Pi scheint dagegen aus der Klasse der größeren Systemteile zu stammen, die externe Speicher benötigen. Diese haben normalerweise einen Bootloader, aber es ist ein Masken-ROM, das nicht mehr geändert werden kann, wenn sie das Werk verlassen. In einem herkömmlichen Produkt, das auf so etwas basiert, gibt es einen externen 4-8 MByte-Flash-Chip. Aber der Pi scheint stattdessen die austauschbare SD-Karte zu verwenden, um das Problem zu vermeiden, dass jemand einen gelöteten Flash beschädigt.
Chris Stratton
Das ist interessant. Enthält also die FAT-Partition diese Startdaten? oder ist es irgendwo anders auf einem versteckten Teil der SD gespeichert? In theroy könnten Sie dann in einem noch einfacheren Versuch versuchen, den Ladevorgang auf ein anderes "gehacktes" Gerät umzuleiten ...
Piotr Kula
0

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.

Angel Genchev
quelle
JEDE SD-Karte der Klasse 10, die ich jemals getestet habe, ist> 19 MB / s Schreibgeschwindigkeit. Ich hatte eine Klasse 6 mit 14 MB / s. SanDisk Extreme SDs mit 45 MB / s erreichen 50 MB / s Lese- und 47 MB ​​/ s Schreibgeschwindigkeit, was eine Überraschung war. Lexar 400x SDs sind die schnellsten, die ich bei 70 MB / s Lesegeschwindigkeit getestet habe, aber etwa 30 MB / s Schreibgeschwindigkeit. Bei USB 2.0 gibt es praktisch keinen Unterschied zwischen schnellen SD-Karten, Festplatten und SSDs. Alle USB 2.0-Schnittstellen, die ich mit einer Geschwindigkeit von ca. 35 MB / s durcheinander gebracht habe. Ich habe USB 2.0-Sticks gesehen, die eine maximale Geschwindigkeit von 10 MB / s haben, einige sogar noch niedriger. Bei vielen USB 3.0-Sticks ist die Schreibgeschwindigkeit auf 10-20 MB / s begrenzt, selbst an USB 3.0-Ports!
Therealstubot
0

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

NookaV
quelle
Ich glaube, Sie haben ein Konfigurations- / Netzwerkproblem, weil ich eine Datei mit bis zu 24 Mbit / s direkt auf meinen USB-Stick hochladen kann. Und ich denke, ich könnte besser mit Ethernet als mit Wi-Fi umgehen. Ich habe verwendet vsftpd.
Morgan Courbet