Was passiert, wenn eine Internetverbindung schneller als die Speicherschreibgeschwindigkeit ist?


28

Was passiert, wenn man versucht, eine Datei mit einer Geschwindigkeit von 800 MB / s (100 MB / s) auf eine Festplatte mit einer Schreibgeschwindigkeit von 500 MB / s (62,5 MB / s) herunterzuladen? Würde das System die Downloadgeschwindigkeit begrenzen?


5
Dies ist und war seit der Gründung von Netzwerken eine ganz normale Situation, wenn Sie sich in einem schnellen Netzwerk befinden, wie an einer Universität außerhalb der Geschäftszeiten.
Peter - Reinstate Monica

4
Da Sie programmieren können, können Sie dies leicht selbst beobachten. Schreiben Sie einen einfachen TCP-Server und -Client (Sie sollten Beispiele für die Socket-Bibliothek Ihrer Wahl finden können), lassen Sie den Server Daten so schnell wie möglich bereitstellen und ändern Sie den Client so, dass er diese Daten nur mit einer bestimmten Geschwindigkeit liest (schlaf zwischen den lesungen). Stellen Sie sicher, dass die Daten intakt empfangen werden. Sie können sogar die mit wireshark oder ähnlichem gesendeten Pakete beobachten.
Carsten S

3
Nach einer Erfahrung wie in @ PeterA.Schneiders Beitrag beschrieben, kann ich Ihnen sagen, dass Sie die RAM-Puffer des Betriebssystems berücksichtigen müssen. Bis sie voll sind, können Sie die heruntergeladenen Daten effektiv mit der RAM-Geschwindigkeit speichern. (In der Regel in Tausenden von Megabyte pro Sekunde.)
Niemand

@Nobody Und natürlich gibt es immer die absurden Pipes, die das Internet-Backbone bilden und die Daten so schnell übertragen, dass der RAM Ihres typischen Computers nicht einmal mithalten kann!
Cort Ammon - Reinstate Monica

Ihr Computer generiert eine ICMP-Anforderung, die ihn auffordert, langsamer zu arbeiten. Bei diesen mageren Geschwindigkeiten können Sie jedoch genauso gut eine SSD oder eine M.2-SSD erhalten, und jetzt ist Ihre Schreibgeschwindigkeit so hoch, dass 100 MB / s einfach sind. Einige M.2 sind 1500MB / s schreiben. Fügen Sie zwei oder mehr in ein RAID ein, und Sie können diese Geschwindigkeit um ein Vielfaches steigern. Eine normale SSD kann je nach Kapazität und Marke zwischen 300 und 450 MB / s liegen. storagereview.com/samsung_960_pro_m2_nvme_ssd_review
Cybernard

Antworten:


41

Viele Protokolle, einschließlich des im Internet am häufigsten verwendeten TCP-Protokolls, verwenden eine sogenannte Flusskontrolle. Flusskontrolle bedeutet einfach, dass TCP sicherstellt, dass ein Absender einen Empfänger nicht überfordert, indem Pakete schneller gesendet werden, als der Puffer geleert werden kann. Die Idee ist, dass ein Knoten, der Daten empfängt, eine Art Feedback an den Knoten sendet, der die Daten sendet, um ihn über seinen aktuellen Zustand zu informieren. Zwei-Wege-Feedback ermöglicht es beiden Maschinen, ihre Ressourcen optimal zu nutzen und Probleme aufgrund von Hardware-Abweichungen zu vermeiden.

https://en.wikipedia.org/wiki/Flow_control_(data)


2
... im Idealfall. Bufferbloat bedeutet, dass wahrscheinlich mehrere Switches einen ständig wachsenden Stapel von Paketen speichern und auf die Weiterleitung warten (was durch ein Übertragungsprotokoll, das gelegentliche ACKs erfordert, möglicherweise etwas gemindert wird).
Eric Towers

3
Sie könnten erwähnen, dass dies TCP (hey, es hat die Kontrolle in seinem Namen) von UDP unterscheidet, das ungeachtet der Kapazität des Verbrauchers gerne weiter sendet.
Peter - Reinstate Monica

5
@Fabian Das passiert sowieso die ganze Zeit. Über den Festplatten-Cache des Betriebssystems können Daten viel schneller als beschrieben an die Festplatte gesendet werden. Der RAM-Cache wird so schnell wie möglich gefüllt und auf die Festplatte geschrieben. Abhängig von der Größe des (nicht verwendeten) Arbeitsspeichers in Ihrem Computer puffert das Betriebssystem möglicherweise einige Dutzend bis Hunderte von MB einer Datei im Arbeitsspeicher, bevor sie die Festplatte erreicht. Die Cache-Größe ist jedoch ein Kompromiss, da Daten, von denen die Anwendung annimmt, dass sie bereits auf der Festplatte vorhanden sind, möglicherweise nicht für eine bestimmte Zeit gespeichert sind. Dies kann zu unerwartetem Datenverlust bei einem (Strom-) Ausfall oder ähnlichem führen.
JimmyB

2
@Fabian: Dies können Sie im Dateikopierdialog von Windows ab 8.1 sehen. Im erweiterten Modus wird die Übertragungsrate angezeigt, und Sie können beobachten, dass die erste Hälfte einer Sekunde oder so sehr schnell ist. Wenn die Datei größer ist als die, die während dieser Übertragung hätte übertragen werden können, sinkt die Geschwindigkeit erheblich auf eine konstante Rate. Diese hohe Geschwindigkeit am Anfang war dem Cache zu verdanken. Nach dem Befüllen wird die Geschwindigkeit reduziert.
vsz

1
@EricTowers Nein, Bufferbloat tritt nur auf, wenn eine Netzwerkverbindung der Engpass ist. (Möglicherweise wird auf der Festplatte eine Art Pufferblase angezeigt, die andere Festplattenvorgänge verlangsamt, andere Netzwerkverbindungen jedoch nicht beeinträchtigt.)
user253751 28.11.17

12

was würde passieren?

  • Die Bytes, die nicht rechtzeitig auf die Festplatte geschrieben werden können, werden vorübergehend irgendwo zwischengespeichert. Sehr wahrscheinlich werden einige von ihnen in der Anwendung gepuffert, die den Netzwerkverkehr in Festplattenverkehr "umwandelt" (dh Ihren Browser), und bei längeren Überlastungen in den untergeordneten Teilen des Stapels (dh dem Netzwerksubsystem Ihres Computers) PC) hätte auch Puffer auf niedrigeren Niveaus, die sich bis zur vollen Füllung füllen würden.
  • Die Information, dass die Daten zu schnell kommen, würde dann auf irgendeine Weise an den Absender zurückgesendet. Im Falle von TCP / IP würde dies bedeuten, dass es einen Teil des TCP-Protokolls gibt, der dem Absender mitteilt, dass er das Senden beenden soll. Auf der Wikipedia-Seite zu TCP / IP heißt es am besten:

    Die [TCP] -Verantwortung umfasst eine vom zugrunde liegenden Netzwerk unabhängige Ende-zu-Ende-Nachrichtenübertragung sowie Fehlerkontrolle, Segmentierung, Flusskontrolle, Überlastungskontrolle und ...

  • Letztendlich würde das "System" (nicht unbedingt der Computer des Empfängers, sondern das Gesamtsystem aus Absender, Netzwerk und Empfänger) die Download-Geschwindigkeit indirekt "begrenzen". Es gibt jedoch zu keinem Zeitpunkt eine "Geschwindigkeits" -Variable. Sowohl der Netzwerkverkehr als auch der Festplattenverkehr sind blockbasiert, das heißt, die Verzögerungen zwischen diesen Blöcken würden (auf der schnelleren Netzwerkseite) lang genug werden, bis die "Nettogeschwindigkeit" (der Durchsatz) im Durchschnitt der langsameren Geschwindigkeit entspricht HDD.

Würde das System die Downloadgeschwindigkeit begrenzen?

Nicht wirklich. Vor ein paar Dutzend Jahren kommunizierten Computer tatsächlich mit synchronen Geschwindigkeiten (dh Modems mit festen Geschwindigkeitseinstellungen). Dies geschieht auf relativ niedrigem Niveau auch heute; Das heißt, Ihr DSL- oder Kabelmodem verfügt wahrscheinlich über eine festgelegte Geschwindigkeit, mit der es mit seiner direkten physischen Uplink-Komponente kommuniziert. All dies ist jedoch im Jahr 2017 so kompliziert, dass fast alle Komponenten recht dynamisch sind. In der guten alten Zeit waren Modems oft nur physisch in der Lage, eine bestimmte Geschwindigkeit zu sprechen, und diese musste sogar vor dem Einwählen eingerichtet werden. Es gibt (gab) einige Netzwerkprotokolle wie ATM, die versuchten, ein synchrones Weitverkehrsnetz zu erhalten. aber sie sind im Vergleich zu TCP / IP nicht so gut gelaufen.

Heutzutage wird die effektive Geschwindigkeit normalerweise immer implizit durch Pufferung, Flusssteuerung und dergleichen erreicht.

Beachten Sie auch, dass es in Ihrem Beispiel noch mehr Teilnehmer geben kann. Die Netzwerkschnittstelle könnte mehr Arbeit zu tun haben (andere Verbindungen zu Ihrem PC). Ein Teil des Netzwerks auf dem Weg könnte beschäftigt sein (ein Familienmitglied, das surft oder sich Videos ansieht). Die Festplatte führt möglicherweise drei Schreibvorgänge für große Dateien gleichzeitig aus. Es macht also keinen Sinn, eine "Geschwindigkeit" festzulegen, die begrenzt werden kann.


2

Das Herunterladen von Dateien erfolgt (normalerweise) über ein Protokoll namens TCP. In TCP sendet der Absender keine Daten, bis der Empfänger zum Empfang bereit ist.

Was passiert ist, dass Ihr Computer eine gewisse Menge an RAM reserviert, um die empfangenen Daten vorübergehend zu speichern, bevor sie auf Ihre Festplatte geschrieben werden (dies wird als Puffer bezeichnet). Dann fragt es den Absender nach gerade genug Daten, um den Puffer zu füllen. Während des Datenempfangs werden Daten aus dem Puffer auf die Festplatte geschrieben. Es werden jedoch keine weiteren Daten angefordert, solange der Puffer fast voll ist.

Der Gesamteffekt ist, dass der Sender einfach darauf wartet, dass der Empfänger aufholt, bevor er weiter sendet.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.