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.
quelle
Antworten:
Hier sind einige Zahlen, nach denen Sie wahrscheinlich suchen, wie von Jeff Dean, einem Google Fellow, zitiert:
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.
quelle
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.
quelle
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
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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 ...
quelle
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
quelle
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.
quelle
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.
quelle
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.
quelle
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?
quelle