it-swarm.com.de

Sind Netzwerke jetzt schneller als Festplatten?

Dies ist eine Frage zum Software-Design

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

cache memory > memory > disk > network

Jeder Schritt ist das 5-10-fache des vorherigen Schritts (z. B. ist der Cache-Speicher 10-mal schneller als der Hauptspeicher).

Nun scheint es, dass Gigabit-Ethernet eine geringere Latenz hat als die lokale Festplatte. Daher sind Vorgänge zum Auslesen aus einer großen Remote-In-Memory-Datenbank möglicherweise schneller als lokale Festplattenlesevorgänge. Das fühlt sich für einen Oldtimer wie mich wie eine Häresie an. (Ich habe gerade einige Zeit damit verbracht, einen lokalen Cache auf der Festplatte zu erstellen, um Netzwerk-Roundtrips zu vermeiden - daher meine Frage)

Hat jemand irgendwelche Erfahrungen/Zahlen/Ratschläge in diesem Bereich?

Und ja, ich weiß, dass der einzige wirkliche Weg, dies herauszufinden, darin besteht, zu bauen und zu messen, aber ich habe mich über die allgemeine Regel gewundert.

edit :

Dies sind die interessanten Daten aus der Top-Antwort:

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

  • Festplattensuche 10.000.000 ns

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

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

131
pm100

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

Zahlen, die jeder kennen 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, Lektionen und Ratschläge zum Aufbau großer verteilter Systeme und Sie können es hier erhalten:

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

Andere Information


Es heißt dass gcc -O4 Ihren Code per E-Mail an Jeff Dean sendet, um ihn neu zu schreiben.


144

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

Die Busse SATA 3.0 und SAS) haben 6 Gbit/s im Vergleich zu einem Netzwerk mit 1 Gbit/s abzüglich Protokoll-Overhead. Mit RAID-10 15k SAS scheint das Netzwerk sehr langsam zu sein. Außerdem verfügen Sie über Festplatte Cache und auch die Möglichkeit von Solid-State-Festplatten, die je nach Szenario ebenfalls die Geschwindigkeit erhöhen können. Zufälliger oder sequentieller Datenzugriff spielt eine Rolle, ebenso wie die Blockgröße, in der Daten übertragen werden. Das hängt alles von der Anwendung ab das wird verwendet, um auf die Festplatte zuzugreifen.

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

21
JakeRobinson

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

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

10
Argote

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 Festplattenprobleme auf meinem Laptop und der DMA ging aus. Dies machte die Festplatte dramatisch langsamer und insbesondere langsamer als das Netzwerk. Aber als ich zu einem anderen Computer wechselte, habe ich war schneller als das Internet wieder in meinem ursprünglichen Zustand der Festplatte.

2
Charles

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 Speicher-Caches zu verwenden.

Die von Ihnen erwähnte Standard-Einschränkung gilt insofern, als es keine allgemeinen Regeln gibt. und dass man eigentlich die meiste Zeit mit gut konfigurierten Servern arbeiten und Metriken verwenden sollte, 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 zu verwenden.

Wenn Sie mit zwei Computern mit nahezu identischer Hardware arbeiten, beschleunigen die Latenz und der Netzwerk-Overhead den lokalen Speicher. Es ist wirklich gesunder Menschenverstand.

2

Es hängt davon ab, ob. Wenn es sich bei Ihrer E/A in erster Linie um Direktzugriff handelt, ist der flache Durchsatz im Vergleich zur verfügbaren Netzwerkbandbreite wahrscheinlich nicht so hoch. Der meiste Netzwerkverkehr wird jedoch letztendlich durch Prozesse generiert, die E/A beinhalten. Wenn der Arbeitssatz des Prozesses, der den Netzwerkverkehr generiert, in den Cache passt, wird er nicht durch die Festplattenbandbreite eingeschränkt. Wenn der Cache zerstört 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) trifft, ist ein Tabellen- oder Partitionsscan mit sequentieller E/A effizienter als ein Abfrageplan mit wahlfreiem Zugriff, der Indexsuchen und -suchen verwendet.

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

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

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.

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. Eine Sache, die Sie beachten müssen, ist, dass Sie zuerst eine Verbindung herstellen müssen, was auch Zeit braucht. Das Senden großer Teile des Datennetzwerks ist möglicherweise schneller als die Festplatte.

1
teuneboon

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

Ich denke, deshalb bin ich

Wenn eine Anwendung ausgeführt wird, bedeutet dies, dass der Host-Computer funktioniert, während für die Arbeit über das Netzwerk ein gemeinsames Protokoll erforderlich ist, das die Verfügbarkeit von Peers, die Kanalsicherheit usw. überprüft. Wenn die Peers unterschiedliche Plattformen verwenden, ist es schwieriger, das zu erreichen, was Sie auf einem Computer tun können Einzelmaschine.

Ich betrachte dies lieber im Hinblick auf Kompromisse als darauf, wer der Stärkste ist ...

1
Xaqron

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

1
Zepplock

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 dem, auf den Sie über das Netzwerk zugreifen würden? Wenn sich die Remote-Daten auf einer sehr schnellen SSD befanden und schneller als das von Ende zu Ende installierte Gigabit-Netzwerk waren, ist die Remote möglicherweise für große Streaming-Dateien schneller.

Wenn Sie jedoch zufällig auf kleine Dateneinheiten zugegriffen haben und das Netzwerk nicht fehlerfrei war oder viele Hops hatte und mehr als nur Sie darauf zugegriffen haben, würde ich wetten, dass ein lokaler Cache sogar auf einem mechanischen Laufwerk mit einer Geschwindigkeit von fast 100 schneller ist % der ganzen Zeit. Sie sprechen jedoch einen interessanten Punkt an und wie lange wird die lokale Speicherung von Daten erforderlich sein, wenn die Netzwerkgeschwindigkeit weiter steigt?

0
jim

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

0
Skizz

Die Festplatte ist über SCSI, SAS oder IDE Bus) mit der CPU verbunden. Dies ist ein internes Netzwerk, in dem ein bestimmtes Protokoll ausgeführt wird - SCSI oder ATAPI. Ethernet ist ausgelegt Wenn Sie eine 20 Jahre alte Laptop-Festplatte mit 10 GBit/s in RAM Speicher, der Gewinner wird immer das Netzwerk sein. Und wenn Sie einen Speicher kaufen, müssen Sie ihn mit Preis und Verwaltbarkeit vergleichen.

0

Eine Sache zu beachten ist, dass es vom Netzwerk abhängt. Angenommen, Sie sind für die Leistung auf einer Website verantwortlich. Diese Website ist natürlich über ein lokales Netzwerk mit einem Datenbankserver verbunden und über das Internet, das auch 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 Datenbank wie möglich im Speicher zu halten. In vielen Fällen ist dies häufig für den gesamten Inhalt plus einige Indizes erfolgreich. Abfragen an diese Datenbank werden genauso schnell oder sogar schneller sein als Abfragen an die Festplatte.

Auf der anderen Seite möchten bestimmte Webtechnologien (asp.net webforms viewstate, ich sehe Sie an) gerne viele Informationen als eine Art Cache zum und vom Client-Webbrowser übertragen. Wenn dies eine lokale LAN-Verbindung ist (und in der Verteidigung von asp.net Webform ist dies die meiste Zeit der Fall), ist es nicht so schlimm, aber im öffentlichen Internet kann dies absolut töten Leistung, so dass Sie sind oft viel besser dran, dies stattdessen auf eine Datenbank oder eine lokale Festplatte zu übertragen.

0
Joel Coel