Sind Netzwerke jetzt schneller als Festplatten?

126

Dies ist eine Frage zum Software-Design

Ich habe früher an der folgenden Regel für die Geschwindigkeit gearbeitet

cache memory > memory > disk > network

Jeder Schritt entspricht dem 5- bis 10-fachen des vorherigen Schritts (z. B. ist der Cache-Speicher 10-mal schneller als der Hauptspeicher).

Es scheint, dass Gigabit-Ethernet eine geringere Latenz aufweist als die lokale Festplatte. Daher sind Vorgänge zum Auslesen einer großen entfernten In-Memory-Datenbank möglicherweise schneller als das Lesen lokaler Datenträger. Das fühlt sich für einen Oldtimer wie mich wie eine Irre an. (Ich habe nur einige Zeit damit verbracht, einen lokalen Cache auf der Festplatte zu erstellen, um Netzwerk-Roundtrips zu vermeiden - daher meine Frage)

Hat jemand Erfahrung / Zahlen / Ratschläge in diesem Bereich?

Und ja, ich weiß, dass der einzige Weg, dies herauszufinden, das Bauen und Messen ist, aber ich habe mich über die allgemeine Regel gewundert.

bearbeiten :

Dies sind die interessanten Daten aus der oberen Antwort:

  • Hin- und Rückfahrt innerhalb desselben Datencenters 500.000 ns

  • Festplattensuche 10.000.000 ns

Das ist ein Schock für mich; Mein mentales Modell ist, dass eine Netzwerkrundreise von Natur aus langsam ist. Und es ist nicht - es ist 10x schneller als ein Plattenrundgang.

Jeff attwood hat diesen guten Blog zum Thema http://blog.codinghorror.com/the-infinite-space-between-words/ gepostet.

pm100
quelle
11
Manchmal ja manchmal nein. Welches Netzwerk? Welche Scheibe?
John Gardeniers
1
Die anderen interessanten Daten von Top-Antwort: 1 MB sequentielles Lesen von Netzwerk vs. Festplatte. Ich vermute, dass die "Roundtrip" -Zeit keine signifikante Datenübertragung zulässt.
Paul
Paul: Kommt auf deine MTU an, da bin ich mir sicher. (1 MB MTU? Super!)
Matt Simmons
Ich würde es begrüßen, wenn einige dieser Antworten angesichts der weit verbreiteten Verfügbarkeit von 10-Gbit / s-Netzwerkgeräten überdacht würden.
Küken
Gigabit-Netzwerk vs RAID 5?
SoilSciGuy

Antworten:

137

Hier sind einige Zahlen, nach denen Sie wahrscheinlich suchen, wie von Jeff Dean, einem Google Fellow, zitiert:

Zahlen, die jeder wissen sollte

L1 cache reference                             0.5 ns
Branch mispredict                              5 ns
L2 cache reference                             7 ns
Mutex lock/unlock                            100 ns (25)
Main memory reference                        100 ns
Compress 1K bytes with Zippy              10,000 ns (3,000)
Send 2K bytes over 1 Gbps network         20,000 ns
Read 1 MB sequentially from memory       250,000 ns
Round trip within same datacenter        500,000 ns
Disk seek                             10,000,000 ns
Read 1 MB sequentially from network   10,000,000 ns
Read 1 MB sequentially from disk      30,000,000 ns (20,000,000)
Send packet CA->Netherlands->CA      150,000,000 ns

Es ist aus seiner Präsentation mit dem Titel Designs, Lessons and Advice from Building Large Distributed Systems und Sie können es hier erhalten:

Der Vortrag wurde auf der Large-Scale Distributed Systems and Middleware (LADIS) 2009 gehalten .

Andere Information


Es heißt, dass gcc -O4 Ihren Code per E-Mail an Jeff Dean sendet , damit dieser ihn neu schreibt.


David d C e Freitas
quelle
+1 Sehr interessant!
9.
1
Einige Präsentationen haben unterschiedliche Werte, die in Klammern angegeben sind. Ich nehme an, die in der Klammer waren falsch und er hat die Werte aktualisiert.
David d C e Freitas
1
Ist das alles vor der SSD-Ära? siehe hier für weitere up-to-date Zahlen.
Matt
Ich habe diese Zahlen tatsächlich verwendet, um eine Präsentation zu erstellen, die zeigt, warum sich SSD-Laufwerke amortisieren , und um unseren Büroleiter davon zu überzeugen, dass wir schnellere Maschinen für die Arbeit benötigten. Enthält die Nummern für die technischen Informationen, richtet sich jedoch so weit wie möglich an das Non-Tech-Management.
Brichins
19

Es gibt viele Variablen, wenn es um Netzwerk oder Festplatte geht, aber im Allgemeinen ist die Festplatte schneller.

Die SATA 3.0- und SAS-Busse haben 6 Gbit / s im Vergleich zu 1 Gbit / s im Netzwerk abzüglich des Protokoll-Overheads. Mit RAID-10 15k SAS wirkt das Netzwerk langsam. Darüber hinaus verfügen Sie über einen Festplatten-Cache und die Möglichkeit von Solid-State-Festplatten, die je nach Szenario auch die Geschwindigkeit erhöhen können. Zufälliger oder sequentieller Datenzugriff spielt eine Rolle, ebenso wie die Blockgröße, in der Daten übertragen werden. Dies hängt von der Anwendung ab, mit der auf die Festplatte zugegriffen wird.

Jetzt habe ich noch nicht einmal die Tatsache angesprochen, dass alles, was Sie über das Netzwerk transportieren, sowieso von oder zu der Festplatte kommt ... also ist die Festplatte wieder schneller.

JakeRobinson
quelle
1
Erwähnenswerte Punkte für RAID, mit dem Sie parallele Lesevorgänge durchführen können, die Sie in naher Zukunft wahrscheinlich nicht in ein Netzwerk einbinden werden. Wenn es sich um lokale Laptop-Festplatten handelt, ist die Kombination aus schnellem SAN und schnellem Netzwerk möglicherweise schneller. Besonders mit den SSDs in diesem SAN.
Michael Dillon
10
Netzwerke sind von Natur aus parallelisierbar - wovon redest du? Es ist unglaublich trivial, aus mehreren Systemen in einem Netzwerk insgesamt zu lesen. Dies ist der ganze Punkt hinter Systemen wie Hadoop und MPI, ganz zu schweigen von dem offensichtlichen BitTorrent.
jgoldschrafe
2
Mit SONET / SDH sind 38 Gbit / s noch schneller als mit SAS. Und die Netzwerkaggregation kann mit so etwas wie en.wikipedia.org/wiki/Link_aggregation
Mircea Vutcovici
10
@Jake Wenn Sie von 6 Gbit / s sprechen, möchten Sie möglicherweise klar zwischen der Schnittstellenbandbreite und der Geschwindigkeit unterscheiden, mit der eine Festplatte tatsächlich Daten liefern kann.
NPE
4
Ich habe in meiner Frage gesagt, dass ich über eine Remote-In-Memory-Datenbank im Vergleich zu einem lokalen On-Disk-Cache
sprach
10

Nun, das hängt davon ab, ob die Netzwerkressource über die angeforderten Daten verfügt (im Speicher oder ähnlichem) oder ob sie diese einfach von einer Festplatte lesen würde.

In manchen Fällen kann der Durchsatz höher sein, aber ich glaube, dass die Latenz höher sein wird.


quelle
Sie meinen, dass die Suchzeit auf der Festplatte länger als eine 10-Gbit / s-Anforderung ist?
Mircea Vutcovici
1
@Mircea, er meint, dass das 10-Gbit-Netzwerk seine Daten von irgendwoher abrufen muss, so dass es auf die Latenz dieser Quelle plus die Latenz des Netzwerks beschränkt ist.
Chris S
Der Speicher könnte eine RAM-Disk sein. Siehe: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based
Mircea Vutcovici
2

IMX ist die Festplatte noch schneller. Die theoretische Übertragungsrate des Netzwerks ist hoch, aber in der Praxis kommt man dem nicht nahe.

Vor ungefähr zwei Jahren hatte ich Probleme mit der Festplatte meines Laptops und der DMA ging aus. Dadurch wurde die Festplatte erheblich langsamer und insbesondere langsamer als das Netzwerk. Aber als ich zu einem anderen Computer wechselte, war ich schneller als im Internet auf meinen ursprünglichen Festplattenzustand zurückgekehrt.

Charles
quelle
2

Meine Erfahrung mit Gigabit-Netzwerken zeigt, dass Sie mit dem richtigen Server die lokale Leistung in Bezug auf Durchsatz und Latenz übertreffen können. Siehe Netzwerktests: Erhalten wir Gigabit-Leistung?

Für alle praktischen Zwecke würde ich empfehlen, Netzwerk- und lokalen Speicher als gleichwertig zu behandeln und nur Speichercaches zu verwenden.

Der von Ihnen erwähnte Standardvorbehalt ist insofern richtig, als es keine allgemeinen Regeln gibt. und das eigentlich die meiste Zeit sollte man mit gut konfigurierten Servern arbeiten und Metriken verwenden, um die beste Methode der Datenübertragung zu bewerten.

Wenn Sie einen Low-End-Computer mit einer langsamen Festplatte verwenden, ist es mit ziemlicher Sicherheit schneller, eine Gigabit-Netzwerkverbindung zu einem Server mit einem schnellen Speicherarray herzustellen.

Wenn Sie mit zwei Computern mit nahezu identischer Hardware arbeiten, wird der lokale Speicher durch die Latenz und den Netzwerkaufwand beschleunigt. Es ist wirklich gesunder Menschenverstand.

Richard Harrison
quelle
2

Es hängt davon ab, ob. Wenn es sich bei Ihrer E / A in erster Linie um einen Direktzugriff handelt, ist der flache Durchsatz im Vergleich zur verfügbaren Netzwerkbandbreite wahrscheinlich nicht so hoch. Der größte Teil des Netzwerkverkehrs wird jedoch letztendlich durch Prozesse generiert, die E / A-Vorgänge umfassen. Wenn der Arbeitssatz des Prozesses, der den Netzwerkverkehr generiert, in den Cache passt, wird er nicht durch die Festplattenbandbreite eingeschränkt. Wenn der Cache überlastet wird, wird die Festplatte zu einem Engpass.

Ich arbeite an Data Warehouse-Systemen, und die kanonische DW-Abfrage ist ein Tabellenscan. Wenn Ihre Abfrage mehr als ein paar Prozent der Zeilen in der Faktentabelle (oder Partition) enthält, ist ein Tabellen- oder Partitionsscan mit sequentiellen E / A-Vorgängen effizienter als ein Abfrageplan mit wahlfreiem Zugriff, der Indexsuchen und -suchen verwendet.

Netzwerkspeicher (z. B. SANs) funktionieren bei Streaming-Workloads in der Regel nur dann gut, wenn sie entsprechend optimiert sind. Wenn das SAN für eine allgemeine Konsolidierungsumgebung verwendet wird, wird es mit ziemlicher Sicherheit nicht optimal für eine Streaming-Last wie ein Data Warehouse optimiert. Ich habe in einem Whitepaper eines Anbieters gesehen, dass Sie ungefähr die dreifache Anzahl von Festplatten benötigen, um den gleichen Durchsatz in einem SAN zu erzielen, das nicht für Streaming-E / A-Vorgänge optimiert ist wie für ein solches.

Meine Erfahrung stimmt damit überein. Tatsächlich habe ich noch nie ein Data Warehouse in einer Konsolidierungsumgebung bereitgestellt, in der ich denselben ETL-Prozess auf meinem Desktop-PC nicht wesentlich schneller ausführen konnte . Ich habe auch von Vertriebsmitarbeitern eines großen Anbieters von SAN-Geräten erfahren, dass viele ihrer Kunden Direct-Attach-Speicher für das DW-System verwenden, weil SANs nicht schnell genug sind.

Netzwerkspeicher ist pro IOPS mindestens eine Größenordnung teurer als Direct-Attach-Speicher für Workloads mit wahlfreiem Zugriff und näher an zwei Größenordnungen teurer für Streaming.

Betroffen vonTunbridgeWells
quelle
1

Die Erfahrung, die ich damit gemacht habe, ist, dass wenn Sie eine 1-Gbit-Verbindung haben und versuchen, eine Datei herunterzuladen, Ihre Festplatte normalerweise der Engpass ist. Beachten Sie jedoch, dass Sie zuerst eine Verbindung herstellen müssen, was auch Zeit in Anspruch nimmt. Zum Senden großer Datenmengen ist das Netzwerk möglicherweise schneller als die Festplatte.

teuneboon
quelle
1
Es sei denn, die Festplatte ist auch der Engpass auf der anderen Seite der Netzwerkverbindung ...
@Argote: Richtig, aber wenn die Serversoftware korrekt geschrieben wurde, wird sie vor dem Schreiben auf die Festplatte im Arbeitsspeicher zwischengespeichert.
Amphetamachine
1

Ja, im Allgemeinen sind Netzwerke jetzt schneller als Festplatten, aber dies kann sich mit der Zeit ändern.

Ich denke, also bin ich

Wenn eine Anwendung ausgeführt wird, bedeutet dies, dass der Hostcomputer arbeitet, während für die Arbeit über das Netzwerk ein gemeinsames Protokoll erforderlich ist, das die Verfügbarkeit von Peers und die Kanalsicherheit überprüft einzelne Maschine.

Ich ziehe es vor, dies in Bezug auf Kompromisse zu betrachten und nicht, wer der Stärkste ist ...

Xaqron
quelle
4
Ich bezweifle, deshalb könnte ich sein.
John Gardeniers
1

Für diesen Vergleich müssen Sie einen genauen Anwendungsfall beschreiben. Festplatten haben Suchzeit + Übertragungsrate und Cache. Netzwerke haben Latenz, Übertragungsrate und Protokoll-Overhead ...

Ich denke, dass Ihr ursprünglicher Cache-Speicher> Speicher> Festplatte> Netzwerk im Allgemeinen immer noch wahr ist

Zepplock
quelle
0

Die Festplatte ist über SCSI-, SAS- oder IDE-Bus mit der CPU verbunden. Welches ist ein internes Netzwerk, in dem ein bestimmtes Protokoll ausgeführt wird - SCSI oder ATAPI. Ethernet ist für größere Entfernungen ausgelegt und kann viel langsamer als SAS / SCSI / IDE sein. Welches ist schneller, hängt von den Technologien ab, die Sie vergleichen. Wenn Sie eine 20 Jahre alte Laptop-Festplatte mit einem 10-Gbit / s-RAM-Speicher vergleichen, ist das Netzwerk immer der Gewinner. Und wenn Sie einen Speicher kaufen, müssen Sie ihn mit dem Preis und der Verwaltbarkeit vergleichen.

Mircea Vutcovici
quelle
0

Nun, es gibt Light Peak, das eine Netzwerkgeschwindigkeit von 100 GBit / s anstrebt und sich der RAM-Geschwindigkeit annähert. Natürlich kann das Netzwerk nur so schnell Daten liefern, wie der Absender die Daten generieren kann, dh wenn der Absender die Daten von einer Festplatte liest, erhält der Empfänger die Daten auch mit der gleichen Geschwindigkeit wie die Festplatte ein superschnelles Netzwerk.

Skizz
quelle
0

Beachten Sie, dass dies vom Netzwerk abhängt. Angenommen, Sie sind für die Leistung einer Website verantwortlich. Diese Website ist natürlich über ein lokales Netzwerk mit einem Datenbankserver verbunden und auch über das Internet, das ebenfalls eine Art Netzwerk darstellt, mit Websurfern verbunden.

In vielen Fällen kann eine dedizierte Verbindung zwischen dem Webserver und dem Datenbankserver über statische IP-Adressen und ein Crossover-Kabel oder automdx eingerichtet werden, um die Latenz gering zu halten und eine dedizierte Verbindung für den Datenverkehr bereitzustellen, da diese sehr schnell sein soll. Der Datenbankserver erledigt alle Arten von Arbeiten, um so viel wie möglich von der Datenbank im Arbeitsspeicher zu halten, und in vielen Fällen gelingt dies häufig für den gesamten Inhalt plus ein paar Indizes. Abfragen an diese Datenbank sind genauso schnell oder sogar schneller als Abfragen an die Festplatte.

Auf der anderen Seite möchten bestimmte Webtechnologien (asp.net webforms viewstate, ich schaue Sie an) viele Informationen zum und vom Client-Webbrowser als Cache übertragen. Wenn es sich um eine lokale LAN-Verbindung handelt (und in der Verteidigung von asp.net webform ist dies häufig der Fall), ist dies nicht so schlimm, aber im öffentlichen Internet kann dies die Leistung absolut beeinträchtigen , sodass Sie häufig besser drängen können stattdessen auf eine Datenbank oder eine lokale Festplatte.

Joel Coel
quelle
0

Persönlich denke ich, dass es mehrere Faktoren gibt, die berücksichtigt werden müssen. Wie schnell ist beispielsweise der Speicher oder die Festplatte, auf die Sie lokal zugreifen, im Vergleich zu der Festplatte, auf die Sie über das Netzwerk zugreifen würden? Wenn sich die Remote-Daten auf einer sehr schnellen SSD befanden und schneller als das durchgehend installierte Gigabit-Netzwerk waren, ist die Remote-Datenquelle möglicherweise schneller für große Streaming-Dateien.

Wenn Sie jedoch zufällig auf kleine Dateneinheiten zugegriffen haben und das Netzwerk nicht fehlerfrei war oder viele Sprünge hatte und mehr als nur Sie darauf zugegriffen haben, würde ich wetten, dass ein lokaler Cache schneller ist, selbst wenn er sich auf einem quirlig mechanischen Festplattenlaufwerk befindet (fast 100) % der ganzen Zeit. Aber Sie sprechen einen interessanten Punkt an und wie lange wird die lokale Speicherung von etwas erforderlich sein, wenn die Netzwerkgeschwindigkeit weiter zunimmt?

Jim
quelle