Obwohl Kostenoptimierung für IT Infrastruktur schon immer ein Thema war, gab es wahrscheinlich nie einen besseren Zeitpunkt, das eigene Setup und die damit verbundenen operativen Kosten zu hinterfragen. Das ist einem starken Trend geschuldet: Cloud Plattformen und ihren immer besseren und günstigeren Angeboten. Doch wenn schon Cloud, welches Betriebssystem sollte man nutzen?
Unsere bisherigen Tests haben vermuten lassen, dass Linux sehr viel besser performt als Windows. Allerdings haben alle Vergleiche bis jetzt gehinkt, da die Linux-Version des Tableau Servers immer den Vorteil hatte, Hyper zu nutzen. Da es dieses Feature für die Windows-Version nicht gab, war unklar, wie groß sich dieser Vorteil im direkten Vergleich ausgewirkt hätte.
In den letzten Jahren hatten wir also immer die Vermutung, dass Tableau Server schneller auf Linux läuft; Einen hinreichenden Beweis dafür gab es aber nicht. Das wollen wir jetzt ändern, es ist Zeit für einen ausführlichen Test – los gehts!
Der Versuchsaufbau
Das Test-Setup ist ein wenig gekünstelt. Mir war es wichtig, die Server schnell auszulasten, ohne dass sie durch die Datenquelle oder meine Maschine limitiert sind. Ich wollte außerdem nicht zu viel Zeit damit verbringen, Arbeitsmappen zu erstellen, die dann wiederum zum “Bottleneck” werden, weil z.B. Inhalte oder Berechnungen zu lange laden. Darüber hinaus wollte ich sicherstellen, dass sich die Performance zwischen Normalbetrieb und starker Auslastung einwandfrei ohne weitere Variablen messen lässt.
Obwohl ich mich bemüht habe, die Test-Szenarien nah an der Realität zu gestalten, können eure Ergebnisse durch spezifische Anwendungen und Arbeitsmappen abweichen.
Versetzen wir uns also zurück in den Matheunterricht und formulieren zu Beginn unsere erwartete Hypothese, basierend auf den bisherigen Beobachtungen: Linux wird im Schnitt ca. 5 – 10% schneller sein als Windows. AMD wird ähnlich gut performen wie Intel, vielleicht mit ein paar Abstrichen.
Testmethoden/ Testkriterien:
- Schritt 1: Wie lange braucht ein komplett neu aufgesetzter und leerer Server für einen tsm restart?
- Linux Messung über time-p tsm restart
- Windows Messung über measure-command {tsm restart}
- Schritt 2: Wie sehen die durchschnittlichen Antwortzeiten und Fehlerraten aus, wenn man TabJolt mit 1, 5, 10, 15 and 30 Threads gleichzeitig testet?
- Zwei Arbeitsmappen gleichzeitig mit insgesamt vier Dashboards werden mit einer Snowflake Datenbank verglichen, in der die Datensätze vorher gecached werden
- Schritt 3: Nach den vorherigen Tests, wie lang dauert ein Extrakt Refresh von einer CitiBike Tabelle?
Die Ergebnisse
Was den tsm restart Test angeht, ist der Gewinner eindeutig Linux. Hier die durchschnittlichen Zeiten:
- Linux (AMD): 320 Sekunden
- Linux (Intel): 329 Sekunden
- Windows (AMD): 521 Sekunden
- Windows (Intel): 540 Sekunden
Interessanterweise waren die Linux-Zeiten auch die konsistentesten mit einer Abweichung von nur sieben Sekunden. Im Vergleich dazu lag die Windows Standardabweichung bei 26 Sekunden.
Nun zum TabJolt Test. Auch hier ist der Gewinner eindeutig Linux, denn Windows ist im Durchschnitt 48% langsamer:
Details zu den jeweiligen Testläufen findest du am Ende dieses Blog Posts.
Zu guter Letzt noch die Ergebnisse aus unserem Extrakt Refresh Test. Auch hier ist Linux erster mit durchschnittlich 10% Vorsprung:
- Linux (AMD): 300 Sekunden
- Linux (Intel): 318 Sekunden
- Windows (AMD): 330 Sekunden
- Windows (Intel): 5355 Sekunden
Fazit
Nun ist es mit wissenschaftlicher Genauigkeit bewiesen: Linux ist schneller als Windows! Doch welche anderen Faktoren sollte man beachten, wenn man sich für eine Tableau Server Plattform entscheidet?
- Unterhaltskosten: Linux ist bei allen Cloudanbietern im Schnitt 40 – 50% günstiger als Windows, da die Lizenzkosten miteingepreist sind
- Administration: Linux hat kein grafisches User Interface. Alle administrativen Aufgaben müssen per Kommandozeile eingegeben werden, was zu Beginn einschüchtern kann. Das TSM Web Interface ist bei beiden Plattformen allerdings identisch
- Datenquellen Kompatibilität: Nicht alle Datenquellen werden von Tableau Server auf Linux unterstützt. Gehe vorher noch mal Tableaus Treiber Liste [https://www.tableau.com/products/techspecs] durch (Treiber mit Sternchen sind nur für Windows)
Unser Test zeigt eindeutig, dass Tableau Server nicht nur günstiger, sondern auch performanter auf Linux läuft. Neben schnellerer Wartungsarbeiten und kürzerer Dashboard-Ladezeiten erwarten dich außerdem niedrigere Kosten.
Darüber hinaus lassen sich weitere 10% Kosten sparen, wenn man die AMD CPUs den Intel-Konkurrenten vorzieht. Dabei bekommt man identische, wenn nicht sogar etwas bessere Performance.
Die Auswertung für Nerds
Es wäre ja kein ordentlicher wissenschaftlicher Test, wenn ich meine Ergebnisse nicht im Detail zeigen würde. Die Server waren alle AWS c5.4xlarge (Intel) oder c5a.4xlarge (AMD) Instanzen mit Ubuntu 18.04 der Windows Server 2019 als Betriebssystem. Tableau Server war jeweils auf einem GP3 Speicher installiert. Hier noch eine Übersicht, was jede dieser Instanzen pro Monat bei einer „Durschnittlaufleistung“ von 732 Stunden kosten würde:
- 4xlarge (Windows): $1065
- 4xlarge (Windows): $1020
- 4xlarge (Linux): $530
- 4xlarge (Linux): $480
Der TabJolt Test im Detail: Die Grafiken zeigen initiale Fehler zu Beginn bei der Linux-Intel Kombination, danach sehen die Läufe aber fast identisch aus. Auf Windows sind die Ladezeiten sehr viel länger, sowohl auf der Intel- als auch auf der AMD-Instanz:
Oben: Linux AMD (Lauf 5) vs. Intel (Lauf 6)
Oben: Windows Intel (Lauf 8) vs. AMD (Lauf 9)
Bitte achtet darauf, dass die Skalen auf der y-Achse zwischen den Diagrammen unterschiedlich ausfallen!
Für die TabJolt Tests mit 30 Threads hat unsere Windows-Umgebung im Schnitt doppelt so lang gebraucht wie die von Linux. Dazu hat Windows noch 11 Fehler zurückgegeben. Es ist allerdings keiner dieser Fehler beim ersten Lauf aufgetreten, was darauf schließen lässt, dass es einen Bug mit TabJolt und Windows gibt. Die Anzahl an Tests, die auf der Linux-Plattform zurückgegeben werden, ist im Schnitt doppelt so groß wie die der Windows-Umgebung, da die Dashboards auf Linux doppelt so schnell geladen werden. Die Antwortzeit auf Windows ist im Schnitt 44% langsamer. Bei den Tests mit 15 Threads setzt sich dieser Trend fort. Windows ist ca. 31% langsamer. Mit 10 Threads ist Windows im Schnitt 45%, mit 5 Threads 52% langsamer. Alles in allem läuft der gleiche Test auf der Windows-Instanz also 50% langsamer:
Oben: 30 Threads Linux (Lauf 6) verglichen zu Windows (Lauf 8)
Oben: 15 Threads Windows (Lauf 19) im Vergleich zu Linux (Lauf 24)
Oben: 10 Threads Windows (Lauf 17) vs. Linux (Lauf 26)
Führt man diese Tests mit Hyper-Arbeitsmappen und nicht mit Live Verbindungen durch, so kann man sichergehen, dass Festplattenlesegeschwindigkeiten sowie Anfragen an die Datenbank kein Bottleneck sind. Mit 10 Threads war Windows 39% langsamer. Mit 15 Threads, 42% und mit 30 Threads 37% langsamer:
Oben: 15 Threads Linux (Lauf 27) gegen Windows (Lauf 30)
Weitere Analyse und Ergebnisse
Durch alle Tests hindurch war Linux anderthalb mal bis doppelt so schnell wie Windows. Diese Beobachtung ist vielleicht nicht eins zu eins in den Alltag übertragbar, der generelle Trend aber schon. Beide Instanzen liefen in Kombination mit den gp3 Laufwerken auf AWS und wurden mit identischen IOPS- und throughput-Settings konfiguriert. Daher sollte es nur auf die Fähigkeit des Betriebssystems ankommen, wie schnell vom Speicher gelesen werden kann.
Da wir Hyper- und damit keine Live-Verbindung genutzt haben, können wir Snowflake und hier anfallende Lese- oder Schreibgeschwindigkeiten als Schwachstelle ausschließen. Dieser Aufbau erlaubt uns auch, die initialen Geschwindigkeiten zu messen, bevor Daten im Arbeitsspeicher gecached werden. Dann gibt es noch den Punkt, dass sowohl die Snowflake- als auch die Hyper-Daten im Arbeitsspeicher des Tableau Servers liegen. Daher sollte der Performanceunterschied nur aus der Fähigkeit stammen, wie schnell das Betriebssystem die Dashboards bereitstellen kann. Ein Test über fünf Minuten muss hier reichen, um klarzustellen, dass diese Zahl richtig ist und nicht die Abfrage an die Datenbank beinhaltet.
Extrakte neu zu laden, ist da etwas komplizierter zu vergleichen, da die beiden Betriebssysteme jeweils für das eine oder andere optimiert sein können. Da wir aber die gleichen Server- und Treiber-Versionen genutzt haben, sollten die erhaltenen Ergebnisse sicher miteinander zu vergleichen sein!