Werbung
Auf der EuroBSD-Konferenz hielt Streaming-Anbieter Netflix einen interessanten Vortrag über die aktuell verwendete Hardware und welche Schritte man gehen muss, um die ideale Kombination aus Hard- und Software zu finden, um das Videostreaming möglichst effizient zu gestalten. Ziel ist es natürlich, dass ein Server bei Netflix möglichst viele Videos gleichzeitig in möglichst hoher Auflösung ausliefern kann. Die Anbindung dieser Server an das Netz ist noch einmal ein anderer Punkt. Im Rahmen des Vortrags (PDF) wurde aufgezeigt, welche Limitierungen Netflix in der Evaluation und Inbetriebnahme neuer Hardware begegnen.
Seit 2020 liefert Netflix über seine Infrastruktur Videos mit 200 GBit/s pro Server aus. Das nächste Ziel ist es nun die Datenrate auf 400 GBit/s zu verdoppeln. Dazu sollen die Server mit AMDs EPYC 7502P auf Basis des Rome-Designs (Zen-2-Architektur) eingesetzt werden. Die Prozessoren verfügen über 32 Kerne, die mit 2,5 GHz arbeiten. Außerdem sind die Server mit 256 GB DDR4-3200 ausgestattet, die am Speicherinterface mit acht Kanälen eine Bandbreite von etwa 150 GB/s erreichen. Die 128 PCI-Express-4.0-Lanes spielen ebenfalls noch eine Rolle.
Pro Server verbaut sind zwei Mellanox ConnectX-6 Dx, die per PCIe 4.0 x16 angebunden sind und jeweils zwei 100GbE-Ports zur Verfügung stellen. Die Videodaten liegen auf 18 WD SN720 NVMe-Laufwerken mit einer Kapazität von jeweils 2 TB, die per PCIe 3.0 x4 angebunden sind. Die initialen Ergebnisse brachten aber nur eine Netzwerkdatenrate von 240 GBit/s, was offensichtlich durch eine Limitierung in der Speicherbandbreite begründet war.
Um den Datenfluss im Server zu optimieren, versuchte es Netflix mit verschiedenen NUMA-Konfigurationen. Mit der Non Uniform Memory Architecture (NUMA) werden Speichercontroller und per PCIe angebundene Geräte den Cores zugewiesen, die diesen am nächsten sind, bzw. deren Speichercontroller und PCIe-Interface am nächsten liegen. Innerhalb der NUMA-Domains müssen die Prozesse jedoch so ausgeführt werden, dass möglichst wenig Daten zwischen den NUMA-Knoten ausgetauscht werden müssen. Ansonsten produziert diese Kommunikation zwischen den NUMA-Knoten zum einen Latenzen, zum anderen müssen die Daten dann über den Infinity Fabric der EPYC-Prozessoren ausgetauscht werden und dieser hat ebenfalls ein Limit von etwa 47 GB/s pro Link, bzw. insgesamt etwa 280 GB/s.
Über ein sogenanntes Siloing versuchte Netflix sowohl die speicher- als auch die netzwerkspezifischen Prozesse auf den NUMA-Knoten zu konzentrieren, dessen Anbindung die beste an den Speicher und das PCIe-Gerät ist. Da es aber vier NUMA-Knoten und nur zwei Netzwerkkarten und zudem unterschiedlich viele NVMe-Laufwerke an jedem NUMA-Knoten gibt, waren einige Tricks notwendig, um das System entsprechend auszubalancieren.
Am Ende erreicht Netflix über eine Single-NUMA-Konfiguration besagte 240 GBit/s, mit vier NUMA-Knoten aber immerhin etwa 280 GBit/s.
Damit war man aber noch weit von den gewünschten 400 GBit/s entfernt. Als nächstes wurden Software-Optimierungen ins Auge gefasst. Um die Engpässe der Hardware zu umgehen, wurde die TLS-Implementierung im FreeBSD-Kernel (kTLS) verwendet. Dabei werden weite Teile der Bearbeitung und Kommunikation zwischen dem NVMe-Speicher und der Netzwerkhardware vom Prozessor ausgelagert. Dies betrifft vor allem die TLS-Verschlüsselung, die dann nicht mehr auf den Zen-2-Kernen des Prozessors stattfindet, sondern auf der Netzwerkkarte. Die dafür notwendigen Ressourcen sind darauf vorhanden und es deutet sich schon seit geraumer Zeit an, dass der Netzwerkhardware in dieser Hinsicht eine immer wichtigere Rolle zukommt.
Auch hier wurden wieder verschiedene NUMA-Konfigurationen getestet. Am Ende wurde ein Datendurchsatz von etwa 380 GB/s erreicht. Die Auslastung des Prozessors lag ohne NUMA bei 60 %, mit vier NUMA-Knoten bei 50 %.
Andere Hardware fiel bei den Tests durch
Außerdem wurde andere Hardware getestet. Die Ampere-Altra-Prozessoren fielen trotz 80 Neoverse-N1-Kernen bei 3 GHz durch, da hier die Konfiguration des PCI-Express-Interfaces Probleme machte. Dennoch wurden 320 GBit/s erreicht.
Einen Intel Xeon 8352V auf Basis von Ice Lake-SP hatte man ebenfalls getestet, allerdings gab es hier Probleme mit der PCI-Express-Konfiguration (PCIe Relaxed) und somit fehlen hier die Ergebnisse mit einer optimierten kTLS-Konfiguration. 230 GBit/s konnten erreicht werden, was für das gesteckte Ziel noch klar zu wenig war.
Netflix arbeitet zudem am nächsten Schritt. Erste Hardware für Server, die 800 GBit/s erreichen sollen, liegt schon vor. Die Pandemie macht jedoch auch von einem Gewinner des "Zuhausebleibens" nicht Halt, weswegen es zu Verzögerungen kam.