Zum Hauptinhalt springen
"Wir haben gerade von einem T1 (1,544 Mbit/s) auf einen T3 (44,736 Mbit/s) aufgerüstet, warum dauert es dann immer noch 90 Minuten, diese Datei zu kopieren?"

 

Die einfache Antwort ist, dass mehr Kapazität nicht gleichbedeutend mit schnelleren Bytes ist. Wenn Sie Ihre Kapazität um das 29-fache (44.736 / 1.544) erhöhen, können Sie vielleicht 29 Dateien in denselben 90 Minuten kopieren, aber Sie werden wahrscheinlich nicht in der Lage sein, diese eine Datei schneller zu kopieren. Ich habe dieses Thema bereits im letzten Jahr in dem Blog mit dem Titel "Application Performance Problems and Latency" angesprochen, aber ich denke, dass Dateiübertragungen und copy_file einen Blog mit mehr Fokus erfordern.

 

Der Schlüssel liegt in der Fenstergröße, d. h. wie viele Bytes kann der sendende Host bzw. die Anwendung senden, ohne anzuhalten und auf eine Bestätigung vom empfangenden Host bzw. der Anwendung zu warten. Einige Anwendungen wie FTP verfügen nicht über eine Bestätigung der Anwendungsschicht und verlassen sich auf TCP. In diesem Fall hängt die Fenstergröße davon ab, was die TCP-Schicht des entfernten Hosts ankündigt, bis zu 64K Bytes, was das Maximum ist, das STCP unterstützt. Einige Anwendungen verfügen über ein Fenster der Anwendungsschicht; für diese Anwendungen ist das begrenzende Fenster das kleinere der beiden Fenster von TCP und Anwendung.
Der maximale Durchsatz wird wie folgt berechnet

 

W / RTT = T
Wo
W ist die Fenstergröße in Bytes
RTT ist die Round-Trip-Zeit in Sekunden
T ist der Durchsatz in Bytes pro Sekunde
Die Round-Trip-Zeit ist die Zeit, die benötigt wird, um Daten zu senden und eine Bestätigung zu erhalten. Bei großen Entfernungen, d. h. landesweit, hängt diese Zeit in erster Linie von der Entfernung ab, die die Bytes zurücklegen müssen, sowie von der Verarbeitungsgeschwindigkeit der gesamten Netzausrüstung zwischen den Endpunkten. Die Verarbeitungsgeschwindigkeit des empfangenden Hosts, die Paketgröße (TCP-MSS-Wert, siehe "Ein einfacher Weg zur Verbesserung des Durchsatzes über Subnetze") und natürlich die Bandbreite der langsamsten Verbindung spielen eine geringere Rolle.

 

Beträgt die RTT beispielsweise 0,050 Sekunden und das Fenster 64K, so beträgt der maximale Durchsatz 1.310.720 Bytes pro Sekunde (64 * 1024 / 0,050). Solange die ungenutzte Kapazität der Verbindung größer ist als der Durchsatz, führt eine Erhöhung der Kapazität nicht zu einer Beschleunigung der Übertragungszeit.
T ist der maximal mögliche Durchsatz. Nichts, was Sie tun (außer das Fenster zu vergrößern oder die RTT zu verringern), kann dafür sorgen, dass es schneller geht, ABER ungünstige Netzbedingungen können dafür sorgen, dass es deutlich langsamer geht.

 

Zur Schätzung der Übertragungszeit wird einfach die Dateigröße durch den Durchsatz geteilt.

 

F/ W * RTT = Ti
Wo
F ist die Dateigröße in Bytes
W ist die Fenstergröße in Bytes
RTT ist die Round-Trip-Zeit in Sekunden
Ti ist die Zeit in Sekunden für die Übertragung der Datei

 

OSL hat eine Anwendungsfenstergröße von 4K, das OpenVOS-Dateisystem meldet Dateigrößen in Blöcken von 4K Bytes. Um die Zeit für das Kopieren einer Datei zwischen zwei OpenVOS-Systemen mit dem copy_file-Befehl abzuschätzen, ist es einfach

 

F * RTT = Ti
Wo
F ist die Dateigröße in Blöcken
RTT ist die Round-Trip-Zeit in Sekunden
Ti ist die Zeit in Sekunden für die Übertragung der Datei

 

Bei einer Verbindung mit einer RTT von 0,050 Sekunden benötigt OSL etwas mehr als 41 Minuten, um eine Datei mit 50.000 Blöcken zu kopieren (50.000 * 0,05). Der maximale Durchsatz liegt bei 81.920 Byte pro Sekunde (4096 / 0,050). Solange die ungenutzte Netzwerkkapazität Ihrer Verbindung größer als 81.920 Byte pro Sekunde ist, wird die Zeit, die zum Kopieren der Datei benötigt wird, durch Hinzufügen von Kapazität nicht verringert.

 

Die einfachste Art, die Round-Trip-Time zu messen, ist mit ping. Leider gibt ping nicht nur eine Zahl für die RTT an, sondern mehrere, und die Zahlen können zum Beispiel stark variieren:

 

ping 172.16.1.80
Pinging host 172.16.1.80 : 172.16.1.80
ICMP Echo Reply:TTL 53 time = 418 ms
ICMP Echo Reply:TTL 53 time = 107 ms
ICMP Echo Reply:TTL 53 time = 91 ms
ICMP Echo Reply:TTL 53 time = 100 ms
Host 172.16.1.80 replied to all 4 of the 4 pings
ready 12:03:15

 

Wenn Sie an der Berechnung des bestmöglichen Durchsatzes interessiert sind, verwenden Sie die niedrigste Zahl. Wenn Sie sich für eine vernünftige Schätzung dessen interessieren, was Sie erwarten sollten, verwenden Sie eine Ping-Zahl von 10, werfen Sie die beiden höchsten und die beiden niedrigsten Zahlen weg und bilden Sie den Durchschnitt für den Rest.

 

ping 172.16.1.80 -count 10
Pinging host 172.16.1.80 : 172.16.1.80
ICMP Echo Reply:TTL 53 time = 89 ms
ICMP Echo Reply:TTL 53 time = 96 ms
ICMP Echo Reply:TTL 53 time = 95 ms
ICMP Echo Reply:TTL 53 time = 105 ms
ICMP Echo Reply:TTL 53 time = 186 ms
ICMP Echo Reply:TTL 53 time = 87 ms
ICMP Echo Reply:TTL 53 time = 90 ms
ICMP Echo Reply:TTL 53 time = 90 ms
ICMP Echo Reply:TTL 53 time = 89 ms
ICMP Echo Reply:TTL 53 time = 96 ms
Host 172.16.1.80 replied to all 10 of the 10 pings
ready 12:12:39
calc 96 + 95 + 90 + 90 + 89 + 96
556
ready 12:12:49
calc 556 / 6
92.6666666666667
ready 12:12:57

 

Wie ich bereits sagte, kann ein feindliches Netzwerk die Dinge erheblich verlangsamen. Ping-Zeitüberschreitungen sind ein Hinweis darauf. Zeitüberschreitungen bedeuten also, dass diese Berechnungen wahrscheinlich sehr optimistisch sind. Übertragungen können auch durch ausgelastete Festplatten und/oder CPUs verlangsamt werden, die den Sender daran hindern, die Daten so schnell wie möglich zu lesen und zu senden, oder die den Empfänger dazu veranlassen, die Daten langsamer zu lesen als sie ankommen, wodurch sich Anwendungsbestätigungen verzögern (was die Umlaufzeit erhöht) und möglicherweise die TCP-Empfangspuffer gefüllt werden, was den sendenden Host dazu veranlasst, die Übertragung zu beenden. Die einzige Möglichkeit, um festzustellen, ob eine dieser Bedingungen zutrifft, ist eine Paketverfolgung.

© 2024 Stratus Technologies.