Auswirkungen des Spectre-, Meltdown- und Foreshadow-Schutzes auf die Leistung von Linux 4.19

Eine der häufigsten Fragen in letzter Zeit ist, wie sich der Schutz gegen Meltdown / Spectre und jetzt auch gegen L1TF / Foreshadow auf die Linux-Leistung auswirkt. Der Start der Linux 4.19-Kernel- Entwicklung in diesem Monat hat nicht nur für x86_64, sondern auch für POWER / s390 / ARM das Feuer angeheizt. Um einen allgemeinen Überblick über die Auswirkungen von Patches auf die Leistung zu erhalten, habe ich drei Intel Xeon-Systeme und zwei AMD EPYC-Systeme sowie eine virtuelle Maschine auf jeder Seite getestet, um die Standardleistung des Linux 4.19-Kernels mit und ohne entsprechende Patches zu bewerten.



Auf allen Computern wurde ein System mit dem am vergangenen Wochenende veröffentlichten Linux-Kernel 4.19-rc1 installiert. Zu den relevanten Patches unter Intel gehören die Seitentabellenisolation (PTI / KPTI) für Meltdown und verschiedene Spectre-Patches gegen spekulative Ausführung von Befehlen, einschließlich Löschen des __user-Zeigers mithilfe von Retpoline über IBPB IBRS_FW, Patch für Speculative Store Bypass-Sicherheitsanfälligkeit mit prctl und seccomp und auch PTE-Inversion und bedingtes Cache-Leeren in virtuellen Maschinen - dies gilt für L1TF / Foreshadow.

Standardmäßig bietet der Linux-Kernel keinen vollständigen Schutz vor Sicherheitslücken, indem die Intel HT / SMT-Unterstützung deaktiviert wird. Denken Sie also daran, wenn Sie virtuelle Maschinen verwenden und nicht vertrauenswürdigen Code oder Benutzerzugriff auf die VM gewähren. Wenn Sie den vollständigen Schutz auswählen und SMT deaktivieren, sind die Auswirkungen auf die Leistung aufgrund der Halbierung der Anzahl verfügbarer Threads viel deutlicher . Cloud-Dienstanbieter scheinen Scheduler einfach so zu konfigurieren, dass SMT-Flows nicht durch Benutzer geleitet werden. Dies vermeidet die offensichtlich enormen Kosten für die Deaktivierung von Hyper Threading. Jetzt vergleichen wir nur den Schutz des Stock / Standard-Kernels.



AMD EPYC bietet standardmäßig nur Schutz für die entsprechenden Schwachstellen, die sie betreffen: Dies löscht den __user-Zeiger für Spectre V1, AMD Retpoline IBPB für Spectre V2 und deaktiviert den Speculative Store Bypass (SSBD) für Spectre V4.



Nach dem Testen aller Konfigurationen auf dem Linux 4.19-rc1-Standardkernel wurden die Tests zur Laufzeit mit verschiedenen Schutzschaltern wiederholt. Alle Systeme wurden mit Ubuntu 18.04.1 LTS x86_64 mit Linux-Kernel 4.19-rc1 über Ubuntu Mainline Kernel PPA, das neueste Mikrocode / BIOS, GCC 7.3 und EXT4-Dateisystem getestet.



Systemkonfigurationen im Test:

  • Intel Xeon E3-1280 v5 Skylake auf MSI Z170A SLI PLUS-Motherboard, 16 GB DDR4 und 256 GB Toshiba RD400 NVMe SSD.
  • Intel Xeon E5-2687W v3 Haswell auf MSI X299 SLI PLUS-Motherboard, 32 GB DDR4 und 80 GB Intel 530 SATA 3.0 SSD.
  • Zwei Intel Xeon Gold 6138 Tyan 1U-Racks mit 96 GB RAM und Samsung 970 EVO NVMe SSD 256 GB.
  • Virtuelle KVM-Maschine auf dem oben genannten Xeon Gold-Server mit zwei Prozessoren. Diese VM war der einzige aktive Prozess auf dem Computer und wurde für den Zugriff auf 80% der Kerne / Threads der CPU (64 Threads), 48 GB RAM und eine virtuelle Festplatte mit 118 GB konfiguriert. Während des Tests wurde der Schwachstellenschutz sowohl auf dem Host als auch auf der VM deaktiviert.
  • AMD EPYC 7601 auf einem Tyan 2U-Server mit 128 GB RAM und 280 GB Intel Optane 900p NVMe SSD.
  • Die virtuelle KVM-Maschine auf dem oben genannten AMD EPYC 7601-Server. Sie hat Zugriff auf 80% der CPU-Kerne / Threads (52 Threads), 48 GB RAM und eine virtuelle Festplatte mit 120 GB.
  • AMD EPYC 7551 Server auf einem Gigabyte MZ31-AR0 Motherboard mit 32 GB RAM und Samsung 960 EVO 256 GB NVMe SSD.

Offensichtlich sind die Konfigurationen der Maschinen unterschiedlich und sie sollen nicht miteinander verglichen werden, nämlich um den Ein / Aus-Schutz gegen Schwachstellen von Prozessoren auf dem Linux 4.19-Kernel zu überprüfen. Aus Gründen der Übersichtlichkeit werden daher alle Daten auf die Leistung jedes Systems normiert. Alle Tests aus der Phoronix Test Suite .

Für den Artikel wurden Tests ausgewählt, die sich auf Spectre / Meltdown beziehen, dh mit intensiven Input-Output- oder Kernel-Interaktionen. Die Last liegt nur bei der CPU und hängt nicht stark vom Prozessor-Cache ab.



Das CompileBench-Profil ist wahrscheinlich der einfachste Weg, um die Auswirkungen von Spectre / Meltdown zu zeigen. Auf dem Linux 4.19-Kernel weisen Intel-Prozessoren bei aktiviertem Schutz einen Leistungsabfall von 7 bis 16% auf, während AMD-Prozessoren einen Leistungsabfall von 3 bis 4% aufweisen.



Eine ähnliche Situation bei Untertests beim Lesen eines kompilierten Baums. Intel-Prozessoren weisen einen Leistungsabfall von 14 bis 15% auf, AMD-Prozessoren einen Rückgang von 4 bis 5%.



Bei realen Aufgaben wie dem Kompilieren des Linux-Kernels beträgt der Leistungsunterschied etwa 2%.



Der Hackbench-Kernel-Scheduler-Benchmark leidet ebenfalls unter einer Sicherheitsaktivierung. Bei Intel-Prozessoren ist die Leistung mit Ausnahme von Xeon Gold um etwa 20% reduziert. AMD EPYC-Systeme machen keinen großen Unterschied.



Der PostgreSQL-Datenbankserver ist eine der realen Anwendungen, die nach der Installation des Schutzes auf Prozessoren unter Leistungseinbußen litten. In diesem speziellen Test betrug der Unterschied für Intel-Prozessoren 5-8% und für EPYC 1%.







Ein weiteres echtes Programm mit Leistungseinbußen aufgrund von Spectre / Meltdown ist der grafische Editor von GIMP. Der Unterschied für Intel beträgt 5-10%, für AMD - 0-2%.



Das Redis DBMS auf dem Intel Skylake E3 v5-System verlangsamt sich um 11% und auf anderen Intel-Prozessoren - um 5-7% beträgt der Unterschied zwischen AMD EPYC-Systemen 1-5%.



Der Nginx-Webserver auf getesteten Xeon-Systemen im Linux 4.19-Kernel zeigte einen Leistungsunterschied von bis zu 20% und auf AMD EPYC - von 1-2% auf 6%.



Ebenso läuft der Apache-Webserver während der Standardinstallation nach Aktivierung des Schutzes auf Intel-Prozessoren viel langsamer und auf AMD-Prozessoren praktisch ohne Änderungen.



Im Test für die Geschwindigkeit beim Erstellen von OSBench-Dateien verlangsamt sich das System unter Intel Xeon um 13-16% und das EPYC-System um 6-9%.



Der Test zum Erstellen von Threads zeigt auch einen spürbaren Unterschied zwischen Intel- und AMD-Prozessoren.





Beim Starten von Programmen und Erstellen von Prozessen gibt es einen kleineren, aber spürbaren Unterschied im Standardbetrieb des Linux 4.19-Kernels im Vergleich zum deaktivierten Schutz.

So sieht es mit der Leistung von Prozessoren auf dem Linux 4.19-Kernel nach der Installation von Patches aus. Beachten Sie, dass, wenn Ihre Systeme für unzuverlässige Benutzer / Code offen sind, insbesondere in virtuellen Maschinen, möglicherweise zusätzliche Aktionen zum Schutz erforderlich sind, z. B. l1tf = full, bis hin zum Deaktivieren von SMT / HT oder zum obligatorischen Leeren des L1-Cache verringert die Systemleistung weiter. Die Wirkung dieser Schutzmaßnahmen gegen L1TF / Foreshadow wurde in einem früheren Artikel ausführlicher beschrieben .

Vielleicht werden wir in Zukunft ähnliche Tests unter Linux 4.19 mit Desktop-Prozessoren und entsprechenden Workloads durchführen.

Source: https://habr.com/ru/post/de421931/


All Articles