it-swarm.com.de

Was ist die Latenz innerhalb eines Rechenzentrums? Ich frage dies unter der Annahme, dass es Größenordnungen von Unterschieden gibt

Ich versuche etwas herauszufinden, auf das ich einfach keine gute Antwort finden kann.

Wenn ich einen REDIS-Cache (oder einen externen In-Memory-Cache) in einem Rechenzentrum und einen Anwendungsserver im selben Rechenzentrum habe, wie schnell ist die Netzwerkverbindung (Latenz, Durchsatz) zum Lesen von Daten? zwischen diesen beiden Maschinen?

Wird die "Geschwindigkeit" des Netzwerks beispielsweise immer noch mindestens eine Größenordnung höher sein als die Geschwindigkeit des RAM, das meine Daten aus dem Cache auf REDIS sucht?

Meine letzte Frage ist: Ist es wirklich nützlich, wenn all dies auf REDIS gespeichert ist? Im Gegensatz dazu, wenn REDIS dies alles stattdessen auf einer SSD zwischenspeichert? Speicher ist teuer. Wenn das Netzwerk tatsächlich kein Engpass innerhalb des Rechenzentrums ist, hat der Speicher einen Wert. Sonst nicht.

Ich denke, meine allgemeine Frage ist, ob es sich trotz der großen Unbekannten in Rechenzentren und der Unfähigkeit zur Verallgemeinerung sowie der Abweichungen um ausreichende Größenordnungen zwischen der Speicherlatenz in einem Computersystem und sogar den besten Netzwerken innerhalb eines DC dass die reduzierten Latenzen des Speichers keine signifikante Leistungsverbesserung bewirken? Ich verstehe, dass es viele Variablen gibt, aber wie nah ist es? Ist es so nah, dass diese Variablen eine Rolle spielen? Nehmen Sie zum Beispiel eine hyperbolische Haltung ein, ein Bandlaufwerk ist viel langsamer als das Netzwerk, daher ist das Band nicht ideal für einen Cache.

18
Neeraj Murarka

Es gibt verschiedene Versionen der "Latenzdiagramme, die jeder kennen sollte", wie zum Beispiel:

In Wirklichkeit gibt es mehr als nur Latenz. Es ist eine Kombination von Faktoren.

Wie hoch ist die Netzwerklatenz in einem Rechenzentrum? Latenz, nun, ich würde sagen, es ist "immer" unter 1 ms. Ist es schneller als RAM? Ist es in der Nähe von RAM? Das glaube ich nicht.

Aber die Frage bleibt, ist es relevant. Ist das das Datum, das Sie wissen müssen? Ihre Frage macht für mich Sinn. Da alles Kosten verursacht, sollten Sie mehr RAM, damit alle Daten in RAM) bleiben, oder es ist in Ordnung, von Zeit zu Zeit von der Festplatte zu lesen.

Ihre "Annahme" ist, dass wenn die Netzwerklatenz höher (langsamer) als die Geschwindigkeit der SSD ist, Sie nicht gewinnen, wenn Sie alle Daten in RAM, da Sie die langsame haben) auf dem Netzwerk.

Und es scheint so. Sie müssen jedoch auch die Parallelität berücksichtigen. Kann die Festplatte 1.000 gleichzeitige Anforderungen ausführen, wenn Sie 1.000 Anfragen für die Daten gleichzeitig erhalten? Natürlich nicht. Wie lange dauert es, bis diese 1.000 Anfragen bearbeitet sind? Im Vergleich zu RAM?

Es ist schwer, es auf einen einzigen Faktor wie schwere Lasten zu reduzieren. Aber ja, wenn Sie eine einzelne Operation ausführen würden, wäre die Latenz des Netzwerks so, dass Sie den Unterschied zwischen SSD und RAM wahrscheinlich nicht bemerken würden.

Genau wie bis zum Erscheinen der 12-Gbit/s-Festplatte auf dem Markt würde eine 10-Gbit/s-Netzwerkverbindung nicht durch einen einzelnen Stream überlastet, da die Festplatte der Engpass wäre.

Denken Sie jedoch daran, dass Ihre Festplatte viele andere Aufgaben ausführt, Ihr Prozess nicht der einzige auf dem Computer ist, Ihr Netzwerk möglicherweise andere Aufgaben enthält usw.

Außerdem bedeuten nicht alle Festplattenaktivitäten Netzwerkverkehr. Die Datenbankabfrage, die von einer Anwendung an den Datenbankserver gesendet wird, ist nur ein sehr minimaler Netzwerkverkehr. Die Antwort vom Datenbankserver kann sehr klein (eine einzelne Zahl) oder sehr groß (Tausende von Zeilen mit mehreren Feldern) sein. Um den Vorgang auszuführen, muss ein Server (Datenbankserver oder nicht) möglicherweise mehrere Festplatten suchen, lesen und schreiben, jedoch nur ein sehr kleines Bit über das Netzwerk zurücksenden. Es ist definitiv kein Eins-zu-Eins-Netzwerk-RAM.


Bisher habe ich einige Details Ihrer Frage vermieden - insbesondere den Redis-Teil.

Redis ist ein Open Source (BSD-lizenzierter) speicherinterner Datenstrukturspeicher, der als Datenbank-, Cache- und Nachrichtenbroker verwendet wird. - https://redis.io/

OK, das heißt, alles ist im Speicher. Entschuldigung, dieses schnelle SSD-Laufwerk hilft Ihnen hier nicht weiter. Redis kann Daten auf der Festplatte speichern, sodass sie nach einem Neustart in RAM) geladen werden können. Dies dient nur dazu, Daten nicht zu "verlieren" oder nach einem Neustart einen kalten Cache neu zu füllen. In diesem Fall also Sie müssen den RAM verwenden, egal was passiert. Sie müssen genug RAM, um Ihren Datensatz zu enthalten. Nicht genug RAM und Ich denke, Ihr Betriebssystem wird swap verwenden - wahrscheinlich keine gute Idee.

20
ETL

In Computersystemen gibt es viele Cache-Schichten. Das Einfügen einer in der Anwendungsschicht kann hilfreich sein, da API- und Datenbankabfragen zwischengespeichert werden. Und möglicherweise temporäre Daten wie Benutzersitzungen.

Datenspeicher wie Redis bieten einen solchen Dienst über ein Netzwerk (schnell) oder einen UNIX-Socket (noch schneller) an, ähnlich wie Sie eine Datenbank verwenden würden.

Sie müssen messen, wie Ihre Anwendung tatsächlich funktioniert, aber lassen Sie uns ein Beispiel erstellen. Angenommen, eine allgemeine Benutzeranforderung führt 5 API-Abfragen aus, die jeweils 50 ms dauern. 250 ms ist eine vom Benutzer feststellbare Latenz. Im Gegensatz zum Zwischenspeichern der Ergebnisse. Selbst wenn sich der Cache in einer anderen Verfügbarkeitszone in der Stadt befindet (nicht optimal), betragen die Treffer wahrscheinlich höchstens 10 ms. Welches wäre eine 5x Beschleunigung.

In der Realität haben die Datenbank- und Speichersysteme auch ihre eigenen Caches. Normalerweise ist es jedoch schneller, ein vorab abgerufenes Ergebnis zu erhalten, als die Ebenen des Datenbankmoduls und des Speichersystems erneut zu durchlaufen. Außerdem kann die Caching-Schicht die dahinter stehende Datenbank erheblich entlasten.

Ein Beispiel für einen solchen Cache in der Produktion finden Sie im Stack Overflow Infrastructure Blog on Architecture . Hunderttausende von HTTP-Anfragen, die Milliarden von Redis-Treffern generieren, sind von großer Bedeutung.

Speicher ist teuer.

DRAM bei Zugriffszeiten von 100 ns ist ungefähr 100-mal schneller als permanenter Festkörperspeicher. Es ist für diese Leistung relativ kostengünstig. Für viele Anwendungen bedeutet etwas mehr RAM) wertvolle Geschwindigkeit und Reaktionszeit.

3
John Mahowald