한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Game-Lag-Whitepaper › L8 Sockets und Protokolle

Slow Start nach Leerlauf Slow start after idle

Ursachen-ID sk-slowstart · Hauptzuständig Server-Infrastruktur (Infrastrukturteam) · Beteiligt Server-Entwicklung (Entwicklungsteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Nach einer Weile Leerlauf verkleinert TCP das Congestion Window (die Menge, die auf einmal gesendet werden darf) wieder. Werden dann plötzlich große Datenmengen gesendet, gehen sie in mehreren Etappen hinaus.

Warum Über eine zuvor ruhende Verbindung werden große Datenmengen gesendet, etwa beim Betreten einer Stadt → Folge Congestion Window ist geschrumpft, die Übertragung verteilt sich auf mehrere Round Trips → Auf dem Bildschirm Direkt nach dem Betreten erscheinen Charaktere und NPCs in der Umgebung um einige Round Trips verspätet (je weiter weg der Server, desto auffälliger)

Symptome
Input-Lag, Unsichtbar / Geisterobjekte
Faktoren
Latenz
Wer ist betroffen
Nur ich
Wann
Beim Bewegen oder Zonenwechsel, Nach Inaktivität
Zuständigkeit
Hauptzuständig Server-Infrastruktur (Infrastrukturteam) · Beteiligt Server-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Daten beim Betreten reduzieren (Unverzichtbares zuerst senden).
Aufgaben Infrastrukturteam
tcp_slow_start_after_idle abschalten (Linux, gilt serverweit).
Größenordnungen
Bleibt eine Verbindung länger als ein RTO im Leerlauf, beginnt das Congestion Window zu schrumpfen. Nach langem Leerlauf fällt es auf etwa 14 KB (10 Pakete). 100 KB passen dann nicht mehr in einen Sendevorgang und brauchen 3 Round Trips.
Im Graphen
Nur einzelne Ausreißer · Übertragungszeit direkt nach dem Betreten (Spieler mit langer RTT)
Wo nachsehen
Wert von sysctl net.ipv4.tcp_slow_start_after_idle prüfen und im Moment des Betretens eines Gebiets nach Leerlauf in ss -ti der Verbindung kontrollieren, ob cwnd (Congestion Window) geschrumpft ist
Spricht dafür
Einstellung steht auf 1 (Standard), beim Betreten nach Leerlauf schrumpft cwnd auf etwa 10, die Übertragung verteilt sich auf mehrere Round Trips. Je länger die RTT des Spielers, desto später erscheinen die Objekte, mit 0 verschwindet das Problem
Spricht dagegen
cwnd bleibt groß, Objekte erscheinen trotzdem spät: serverseitige Verarbeitung beim Betreten („Spawn-Flut beim Betreten belebter Gebiete“)
Prüfmittel
Mit Infrastruktur-Tools prüfbar (ohne Spielcode)

Quellen

  1. IP Sysctl Linux kernel
    tcp_slow_start_after_idle standardmäßig an, nach Leerlauf über die Dauer eines RTO wird das Congestion Window verkleinert (Verfahren nach RFC 2861)
  2. RFC 5681: TCP Congestion Control IETF
    Wurde länger als ein RTO nichts gesendet, wird das Congestion Window auf höchstens das Restart Window min(IW, cwnd) verkleinert, danach Slow Start
  3. RFC 6928: Increasing TCP's Initial Window IETF
    Initial Window 10 Segmente, höchstens 14.600 Byte
  4. ss(8) — Linux manual page iproute2
    cwnd (Congestion Window) und ssthresh (Slow-Start-Schwelle) bei -i

Verwandte Ursachen

Gleiche Schicht: L8 Sockets und Protokolle

Ursachen aus anderen Schichten mit demselben Symptom (Input-Lag)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen