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

Game-Lag-Whitepaper › L9 Spielprozess auf dem Server

Überlastetes Gebiet auf einem einzelnen Thread (Hotspot) Single-threaded hot zone

Ursachen-ID sp-hotzone · Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Server-Infrastruktur (Infrastrukturteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Ist jedes Gebiet einem einzelnen Thread zugeordnet und drängen sich viele Spieler an einem Ort, läuft nur dieser eine Kern auf 100 %.

Warum Ein Thread ist für ein Gebiet (Kanal) zuständig → Folge Drängen sich Spieler an einem Ort, ist nur dieser Kern ausgelastet, die übrigen Kerne haben Luft → Auf dem Bildschirm Nur dieses Gebiet laggt, andere Gebiete laufen normal

Symptome
Zeitlupe, Input-Lag
Faktoren
Stillstand
Wer ist betroffen
Bestimmter Ort oder Kanal
Wann
Bei großem Andrang
Zuständigkeit
Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Server-Infrastruktur (Infrastrukturteam)
Aufgaben Entwicklungsteam
Auf Kanäle verteilen, innerhalb des Gebiets parallelisieren, Spielerzahl begrenzen.
Aufgaben Infrastrukturteam
CPU-Auslastung pro Kern in Monitoring und Alarmierung aufnehmen (im Durchschnitt über den ganzen Server geht die Auslastung eines einzelnen Kerns unter).
Größenordnungen
Auf einem Server mit 16 Kernen erscheint die Gesamt-CPU-Auslastung bei einem Kern auf 100 % nur als etwa 6 %. Finden lässt sich das nur über die Auslastung pro Kern.
Im Graphen
Steigt mit Spielerzahl und Last · CPU-Auslastung pro Kern, CPU pro Thread
Wo nachsehen
Mit mpstat -P ALL 1 die Auslastung pro Kern und mit pidstat -t 1 die CPU pro Thread des Spielprozesses prüfen, mit der Spielerzahl der Zone vergleichen, für die der am stärksten belastete Thread zuständig ist
Spricht dafür
Gesamt-CPU des Servers niedrig, nur ein Thread (ein Kern) klebt nahe 100 %, und zur selben Zeit drängen sich Spieler in der Zone dieses Threads
Spricht dagegen
Mehrere Kerne gleichmäßig hoch: Überlast des ganzen Servers. Nur %soft (Empfangsverarbeitung) eines Kerns hoch: eher NIC-Interrupts auf nur einem Kern
Prüfmittel
Mit Infrastruktur-Tools prüfbar (ohne Spielcode)
Mehr dazu
Dass andere Gebiete normal laufen, gilt nur, wenn jedes Gebiet seinen Tick unabhängig ausführt. Warten die Threads mehrerer Gebiete in jedem Tick aufeinander und gehen gemeinsam zum nächsten Tick über, bremst das am stärksten belastete Gebiet den Tick des ganzen Servers.
Reale Fälle
CCP Games 2014: EVE Online: Serverüberlast in der großen Flottenschlacht um HED-GP

Quellen

  1. Time Dilation – How’s That Going? CCP Games
    Time Dilation in EVE Online wirkt pro Node, daher werden auch entfernte Sonnensysteme auf demselben Node langsamer, große Schlachten laufen auf verstärkten Nodes mit nur 4 Sonnensystemen
  2. mpstat(1) — Linux manual page sysstat
    Zeigt Auslastung pro Prozessor und Gesamtdurchschnitt getrennt an (-P ALL), %soft ist der Zeitanteil für die Verarbeitung von Software-Interrupts
  3. pidstat(1) — Linux manual page sysstat
    -t zeigt zusätzlich Statistiken pro Thread des Prozesses an (CPU-Auslastung u. a.)

Verwandte Ursachen

Gleiche Schicht: L9 Spielprozess auf dem Server

Ursachen aus anderen Schichten mit demselben Symptom (Zeitlupe)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen