Linux-Benchmarks mit Meltdown-Patches

13.02.2018

Zwischen ein und 30 Prozent können angeblich die Einbußen der Kernel-Patches gegen die Meltdown-Lücken betragen. Wir haben mit einem Benchmark gemessen. 

Seit dem Bekanntwerden der Spectre- und Meltdown-Lücken in verschiedenen superskalaren Prozessoren, insbesondere Intel-CPUs, arbeiten Betriebssystem- und Prozessorentwickler an Gegenmitteln. Während Intel die hastig herausgegebenen Microcode-Updates zwischenzeitlich wieder zurückgezogen hat, sind im Linux-Kernel 4.15 zwei Gegenmaßnahmen gelandet, die zumindest die Auswirkungen der Meltdown-Lücke eindämmen sollen. Neben dem Retpoline-Patch, der die Unterstützung des Compilers erfordert, ist dies vor allem die sogenannte Kernel page-table isolation (KPTI, vormals KAISER), die ein Ausnutzen von Meltdown verhindern soll. 

In der menügeführten Konfiguration des Linux-Kernel ist KPTI unter den Security-Features zu finden und trägt die Beschreibung "Remove the kernel mapping in user mode". Die entsprechende Konfigurationsanweisung, die sich in der Kernelkonfigurationsdatei ".config" wiederfindet, lautet "CONFIG_PAGE_TABLE_ISOLATION". Die Direktive für den Retpoline-Patch lautet "CONFIG_RETPOLINE". 

Immer wieder wird betont, dass die Leistungseinbußen der Anti-Meltdown-Maßnahmen stark von der verwendeten Anwendung abhängt, insbesondere davon, wie oft sie zwischen User- und Kernelspace wechselt respektive wie oft und wieviel Daten sie über die CPU kopiert. Um wenigstens einen allgemeinen Anhaltspunkt für die Performance zu bekommen, haben wir die Benchmark-Suite UnixBench verwendet, die zahlreiche CPU- und I/O-lastige Messungen durchführt. Getestet haben wir auf einem System mit Intel Core i5-4570, 3,2 GHz und 8 GByte RAM. 

Dies sind die Ergebnisse:

 

 

Kernel 4.51 unprotected

Kernel 4.15 mit KPTI und Retpoline Patches

4 CPUs in system; running 1 parallel copy of tests

Execl Throughput

7167.0 lps

6342.8 lps

File Copy 1024 bufsize 2000 maxblocks

1526615.0 KBps

1065803.0 Kbps

File Copy 256 bufsize 500 maxblocks

408992.0 KBps

276593.0 Kbps

File Copy 4096 bufsize 8000 maxblocks

3519181.0 KBps

2838715.0 Kbps

Pipe Throughput

2950754.9 lps

1559632.3 lps

Pipe-based Context Switching

259666.9 lps

235455.2 lps

Process Creation

4399.9 lps

4067.0 lps

Shell Scripts (1 concurrent)

10403.4 lpm

9943.5 lpm

Shell Scripts (16 concurrent)

2138.2 lpm

2012.9 lpm

Shell Scripts (8 concurrent)

3919.5 lpm

3686.9 lpm

System Call Overhead

4923086.6 lps

1292055.1 lps

 

 

 

4 CPUs in system; running 4 parallel copies of tests

Execl Throughput

24512.5 lps

22124.9 lps

File Copy 1024 bufsize 2000 maxblocks

1587433.0 KBps

1511047.0 Kbps

File Copy 256 bufsize 500 maxblocks

416646.0 KBps

393616.0 Kbps

File Copy 4096 bufsize 8000 maxblocks

4657377.0 KBps

4556404.0 Kbps

Pipe Throughput

11215381.6 lps

5989954.6 lps

Pipe-based Context Switching

1665251.7 lps

1290998.3 lps

Process Creation

55744.4 lps

50788.1 lps

Shell Scripts (1 concurrent)

31430.1 lpm

29749.3 lpm

Shell Scripts (16 concurrent)

2503.2 lpm

2337.6 lpm

Shell Scripts (8 concurrent)

4809.8 lpm

4498.0 lpm

System Call Overhead

11852176.7 lps

4473667.3 lps

 

 

 

UnixBench Index

5670.6

4525.7

 

Wie man sieht, ist ein gepatchter Kernel in allen Belangen langsamer als ein ungepatchtes System, mal mehr mal weniger. Der UnixBench-Index in der letzten Zeile gibt die Performance des Systems in Relation zu einem bestimmten Referenzsystem an und ist als absoluter Leistungswert untauglich, liefert aber bei Messungen auf demselben Rechner einen guten Anhaltspunkt. Danach ist ein KPTI-gepatches Linux in unserem Benchmark etwa 20 Prozent langsamer als ohne Schutz. 

Ähnliche Artikel

comments powered by Disqus
Mehr zum Thema

Spectre und Meltdown: CPU-Bug macht OS-Updates nötig

Der als "Intel-Bug" bekannt gewordene Designfehler moderner CPUs macht umfangreichere Änderungen an Betriebssystemen nötig. 

Artikel der Woche

Setup eines Kubernetes-Clusters mit Kops

Vor allem für Testinstallationen von Kubernetes gibt es einige Lösungen wie Kubeadm und Minikube. Für das Setup eines Kubernetes-Clusters in Cloud-Umgebungen hat sich Kops als Mittel der Wahl bewährt. Wir beschreiben seine Fähigkeiten und geben eine Anleitung für den praktischen Einsatz. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Container

Wie setzen Sie Container ein?

  • Gar nicht
  • Docker standalone
  • Docker mit Kubernetes
  • Docker mit Swarm
  • Docker mit anderem Management
  • LXC/LXD
  • Rocket
  • CRI-O auf Kubernetes
  • Container auf vSphere
  • Andere (siehe Kommentare auf der Ergebnisseite)

Google+

Ausgabe /2018

Microsite