1 Punkte von GN⁺ 2024-07-14 | Noch keine Kommentare. | Auf WhatsApp teilen

Optimierung des Tablebase-Servers

Lösung der Tail-Latency-Probleme
  • Der 7-Steine-Syzygy-Tablebase-Server hatte Schwierigkeiten, Anfragen zu verarbeiten, während RAID-Integritätsprüfungen liefen
  • Mit einem neuen Ansatz wurde auf dm-integrity in LVM umgestellt, sodass Datenblöcke nun beim Lesen jeweils manuell geprüft werden
  • Um 17 TiB Tablebases ohne Downtime zu migrieren, wurde ein zweiter Server für Benchmark-Tests eingerichtet
Neue Hardware-Konfiguration
  • 32 GiB RAM
  • 2 x 201 GiB NVMe (der vorherige Server hatte keinen SSD-Speicher)
  • 6 x 5.46 TiB HDD (der vorherige Server hatte nur 5 Festplatten)
  • Betriebssystem: Debian bookworm
Die Bedeutung von Monitoring
  • Mit RAID 5 ist eine Wiederherstellung nach dem Ausfall einer einzelnen Festplatte möglich, außerdem werden zufällige Lesezugriffe auf alle Festplatten verteilt
  • Erste Tests zeigten brauchbare Leistung, aber erst durch Monitoring wurde erkannt, dass nicht alle Festplatten gleichmäßig beteiligt waren
Benchmark-Ergebnisse
  • Der Server erhält 10 bis 35 Anfragen pro Sekunde
  • Für den Benchmark wurden 1 Million Anfragen aufgezeichnet
  • Die durchschnittliche Antwortzeit ist schnell, aber die Tail-Latency ist hoch
  • pread zeigt bessere Leistung als mmap
Vergleich von mmap und pread
  • mmap: bildet Dateien in den Speicher ab und behandelt Festplattenzugriffe transparent, macht aber die Fehlerbehandlung schwierig
  • pread: meldet Lesefehler über Rückgabewerte von Systemaufrufen
  • pread ist vermutlich schneller, weil speicherabgebildete Datenblöcke beim Überschreiten von Seitengrenzen zwei Festplattenlesevorgänge auslösen können
Der kontraproduktive Effekt von POSIX_FADV_RANDOM
  • POSIX_FADV_RANDOM gibt dem Betriebssystem den Hinweis, dass Dateizugriffe zufällig sind, um den Druck auf den Page-Cache zu verringern, zeigte in der Praxis jedoch den gegenteiligen Effekt
  • Das Zugriffsmuster auf die Tablebases ist möglicherweise nicht wirklich zufällig
Nutzung des begrenzten SSD-Speichers
  • Um den SSD-Speicher effizient zu nutzen, werden Sparse-Block-Längenlisten und Block-Längenlisten auf der SSD gespeichert, sodass höchstens ein langsamer Festplattenlesevorgang garantiert ist
  • Statt RAID 1 wird RAID 0 verwendet, um auf Redundanz zu verzichten und die Leistung zu optimieren
Parallelisierung von Lesezugriffen
  • Um in der Benutzeroberfläche DTZ-Werte für alle Züge anzuzeigen, erzeugt eine durchschnittliche Anfrage 23 WDL-Probes und 70 DTZ-Probes
  • Durch Parallelisierung der Anfrageverarbeitung wird die Tail-Latency reduziert
Leistung in der Praxis
  • Es wurde bestätigt, dass die Optimierungen aus dem Benchmark-Szenario auch in der realen Umgebung helfen

# Zusammenfassung von GN⁺

  • Dieser Artikel beschreibt den Prozess zur Optimierung des Tablebase-Servers von Lichess
  • Es werden verschiedene Ansätze zur Reduzierung der Tail-Latency erprobt und per Benchmark auf ihre Leistung überprüft
  • Behandelt werden unter anderem der Vergleich von mmap und pread, die negativen Effekte von POSIX_FADV_RANDOM, die Nutzung von SSD-Speicher und die Parallelisierung von Lesezugriffen
  • Der Artikel kann für Entwickler nützlich sein, die sich für Server-Optimierung interessieren; ein ähnliches Projekt ist etwa Stockfish

Noch keine Kommentare.

Noch keine Kommentare.