Viel Grips für Chips - Linux-Magazin

Die Seite wird erstellt Hertha Köster
 
WEITER LESEN
Viel Grips für Chips - Linux-Magazin
12/2017
Titelthema

                                                         Intel Parallel Studio XE 2018

                                                         Viel Grips für Chips
             Intel Studio

32
             www.linux-magazin.de

                                                         Niemand kennt die kleinsten Details von 80 Prozent aller in PCs verbauten Prozessoren so gut wie Intel. Das
                                                         legt den Verdacht nahe, dass die proprietäre Compilersuite des CPU-Herstellers das letzte Quäntchen Perfor-
                                                         mance aus den Chips kitzeln kann. Das Linux-Magazin hat nachgemessen. Kay Königsmann

                                                                                                                                                  mehreren Feldern Geschwindigkeitsvor-
                                                                                                                                                  teile feststellen [1]. Damals spielten dem
                                                                                                                                                  ICC (Intel C/C++ Compiler) die automa-
                                                                                                                                                  tische Vektorisierung und das Ausnutzen
                                                                                                                                                  von Befehlssatz-Erweiterungen wie MMX
                                                                                                                                                  oder SSE in die Karten (Tabelle 1).

                                                                                                                                                  Erfolge feiern dank Profile
                                                                                                                                                  Guided Optimization
                                                                                                                                                  Als besonderer Trumpf gegenüber dem
                                                                                                                                                  GCC erwies es sich, IPO (Interprocedural
                                                                                                                                                  Optimization) mit der Profil-geleiteten
                                                                                                                                                  ICC-Optimierung zu kombinieren. In ei-
                                                                                                                                                  nem dreistufigen Übersetzungsschema
                                                                                                                                                  griff der ICC nämlich auf Informationen
                                                                                                                                                  über den tatsächlichen Ausführungsfluss
                                                                                                                                                  zurück, um Befehle umzuordnen und an-
                                                                                                                                                  derweitig zu optimieren.
                                                                                                                                                  Die Entwickler übersetzten das zu op-
                                                                                                                                                  timierende Programm mit aktivierter
                                                                                                                                                  PGO-Instrumentalisierung (Profile Gui-
                                    © besjunior, 123RF

                                                                                                                                                  ded Optimization) und ließen es unter
                                                                                                                                                  Realbedingungen eine Zeit lang laufen.
                                                                                                                                                  Der Intel-Compiler erzeugte dabei so ge-
                                                                                                                                                  nannte PGO Segment Packets und zu-
                                                         Cloud Computing mit seinen vielen           ser Code soll auch performant auf den        sätzlichen PGO-Code, der ein Profil des
                                                         Anwendern, das große Hin und Her bei        Zielsystemen ablaufen. Aber nicht nur        laufenden Programms enthielt und die
                                                         Big Data sowie die gerade entstehenden      parallel ablaufender, effizienter Code       PGO-Segmente zeitgesteuert in Dateien
                                                         Programme, die Daten aus dem IoT ein-       trägt zur Verarbeitungsgeschwindigkeit       ablegte. In der dritten Phase, der Feed-
                                                         sammeln und verknüpfen, lassen erah-        bei, sondern auch die eingesetzte CPU.       back Compilation, versorgt man den
                                                         nen, was Software jetzt und künftig zu      Was liegt also näher, als dass Prozes-       Compiler mit diesen Daten, der somit
                                                         leisten hat. Entwickler solcher Lösungen    sorhersteller ihre tiefen Kenntnisse der     zielgerichtet übersetzen konnte. Mittler-
                                                         müssen schauen, wie sie diese Anforde-      Prozessorarchitektur nutzen, um die Vor-     weile beherrscht der GNU C-Compiler
                                                         rungen umsetzen können, oft müssen sie      teile der eigenen CPUs in die Übersetzung    diese Techniken auch.
                                                         ihre Anwendungen in mehrere Threads         des Codes in lauffähigen Programmcode
                                                         aufteilen, oft sogar fit machen für den     einfließen zu lassen.                        Diverse Produktlinien
                                                         Lauf auf Firmen- und Netzwerk-übergrei-     So versucht Chiphersteller Intel sich seit
                                                         fenden Clustern.                            den 2000er Jahren durch die Entwicklung      Intel bietet seine Compiler den Entwick-
                                                         Umfangreiche Entwicklungsumgebungen         und den Vertrieb eines eigenen Compi-        lern aktuell in zwei Produktlinien an. Das
                                                         wie Eclipse oder Microsofts Visual Studio   lers auch im Tools-Markt einen Namen         System Studio eignet sich laut Beschrei-
                                                         helfen den Programmieren lauffähigen        zu machen. Das gelang auch, ein Linux-       bung insbesondere für die Entwicklung
                                                         und sicheren Code zu erstellen. Und die-    Magazin-Artikel im Jahr 2004 konnte auf      von kleineren IoT- sowie Embedded-An-
Viel Grips für Chips - Linux-Magazin
12/2017
                                                                                                                                                                Titelthema
wendungen. Intel Parallel Studio XE 2018    den Message-Passing-Interface-Standard         schnittstelle für die Shared-Memory-Pro-
[2] hingegen richtet sich an Program-       (MPI), bei dem mehrere identische Pro-         grammierung bei Multiprozessor-Com-

                                                                                                                                         Intel Studio
mierer von Software mit vielen parallel     zesse miteinander kommunizieren. Die           putern parallelisiert Programme auf der
ablaufenden Threads. Sein Einsatzgebiet     Version enthält MPI-Bibliotheken, MPI-         Ebene von Schleifen, die sie in Threads
liegt somit insbesondere bei Entwicklun-    Analysewerkzeuge sowie Tools zur er-           separat ausführt.
gen für einzelne Workstations, Worksta-     weiterten Cluster-Diagnose.                    Windows- und Linux-Nutzer wählen ihre
tion-Cluster oder verteilten Clusterumge-   Allen genannten Editionen gibt Intel die       bevorzugte Version unter allen drei Editi-
bungen über Netzwerkgrenzen hinweg.         Fähigkeit zu Open MP (Open Multi-Pro-          onen aus. Mac-OS-Nutzern bleibt nur die                              33

                                                                                                                                         www.linux-magazin.de
In den drei Ausgaben Cluster Edition,       cessing, [3]) mit. Die seit 1997 von meh-      Composer Edition, denn Werkzeuge für
Professional Edition sowie Composer Edi-    reren Hardware- und Compilerherstellern        Apple-Cluster unter diesem Betriebssys-
tion vertreibt die Prozessorschmiede ihr    gemeinsam entwickelte Programmier-             tem bietet Intel nicht an, und als Analyse-
Parallel Studio.
Die drei Versionen unterscheiden sich        Tabelle 1: Benchmark-Ergebnisse aus dem Jahr 2004
hinsichtlich ihrer Bestandteile (Tabelle    LM-Bench-Test                      GCC 3.3.3       ICC 8.0.055         Leistungszuwachs
2). So enthält die Composer Edition den     Datei lesen                        667353          641146              +3,93 %
C/​C++-Compiler, einen Fortran-Compi-
                                            Datei lesen (Memmap)               355139          332860              +6,27 %
ler, eine (per separatem Download er-
                                            Datentransfer (Pipe)               51251           46309               +9,64 %
hältliche) Python-Unterstützung sowie
                                            Datentransfer (TCP/​IP-Socket)     404764          404371              +0,10 %
auf Intel-Prozessoren abgestimmte ma-
                                            Datentransfer (Unix-Socket)        61422           57660               +6,12 %
thematische Bibliotheken. Zusätzliche
Werkzeuge für die Leistungsprofilierung,    IP-Verbindungslatenz (TCP/​IP)     8727            8719                +0,09 %
zur optimierten Vektorisierung, zur Pro-    Kontextwechsel                     166269          168229              ‑1,18 %
totyp-Erstellung von Threads sowie De-      Dateisystem (Erstellen/​Löschen) 618093            611237              +1,11 %
bugwerkzeuge für die Speichernutzung        Datei (Memmap/​-unmap)             77508           70242               +9,37 %
und Threadanalyse erweitern die Com-        Seitenfehler (Datei)               1409            1351                +4,12 %
poser- zur Professional Edition.            IPC-Latenz (Pipe)                  31224           18243               +41,57 %
                                            Prozess-Erzeugung                  12832           12325               +3,95 %
Mehr oder minder massive                    IPC-Latenz (Sun-RPC)               169344          113342              +33,07 %
Parallelisierung                            Select (Datei/​TCP-Verbindung)     62676           60264               +3,85 %
                                            Signale (installieren/​auslösen)   53297           54053               ‑1,42 %
Die Cluster Edition empfiehlt der Her-
                                            Einfacher Systemcall               30970           30466               +1,63 %
steller für massiv parallel rechnende
                                            IPC-Latenz (TCP/​IP)               62500           60700               +2,88 %
Programme auf verteilten Systemen so-
                                            IPC-Latenz (UDP/​IP)               58845           57982               +1,47 %
wie für Workstation-Cluster. Die Edition
unterstützt – ihrer Aufgabe folgend –       IPC-Latenz (Unix-Socket)           54854           47464               +13,47 %
Viel Grips für Chips - Linux-Magazin
12/2017
Titelthema

                                                                                                                   Source-Entwickler       tikel gründen sich auf die Parallel Studio
                                                                                                                   vom Umfang her          Cluster Edition 2018.
             Intel Studio

                                                                                                                   der Professional
                                                                                                                   Edition.                Systemvoraussetzungen
                                                                                                                   Gegenüber der Stu­
                                                                                                                   denten- und Lehr-       Sehr viele Linux-Distributionen besitzen
                                                                                                                   kräfte-Version be-      die Voraussetzungen zur Installation von
34                                                                                                                 schränkt sich die       Parallel Studio XE. Intel führt auf seiner
             www.linux-magazin.de

                                                                                                                   Edition für Open-       offiziellen Website verschiedene Ausga-
                                                                                                                   Source-Entwickler       ben von Debian, Fedora, Red Hat, Suse
                                                                                                                   auf eine Installa-      sowie Ubuntu auf. Neben 2 GByte RAM
                                                                                                                   tion unter Linux –      schreibt Intel für die Cluster Edition min-
                                                                                                                   Programmierer für       destens 12 GByte freien Massenspeicher
                                                                                                                   Mac-OS- oder Win-       während des Installationsvorgangs vor,
                                    Abbildung 1: Wessen Distribution keine 32-Bit-Unterstützung hat, wählt im      dows-Systeme blei-      wobei die Cluster Edition nach der Ins-
                                    Installer diese Compiler-Version ab.                                           ben außen vor. Für      tallation rund 8,6 GByte belegt.
                                                                                                                   den Bezug der kos-      Die Software liefert Intel in einer TGZ-
                                    tool liefert Intel in der Mac-Version einzig tenlosen Suite muss der Open-Source-                      Datei aus. Löscht der Anwender das TGZ-
                                    den GNU Project Debugger.                               Entwickler nachweisen, dass sich sein          Archiv zwischen Entpacken und Start der
                                                                                            betreutes Projekt an die Bestimmungen          eigentlichen Installation nicht, erhöht
                                    Auch kostenlos zu beziehen                              der Open Source Initiative hält ([4], [5])     das den notwendigen freien Plattenplatz
                                                                                            und er dort aktiv mitarbeitet. Intel fordert   auf mindestens 16,5 GByte. Der Installer
                                    Außer den kommerziellen Editionen (Ta-                  zudem die Zustimmung zu den Non-               selbst unternimmt keine Anstalten, um
                                    belle 2, auch nicht personengebundene                   Commercial-Vertragsbedingungen und             eigene Vorhaben und freie Kapazitäten
                                    Mehrplatz-Lizenzen für mehr als 20 000                  ‑konditionen.                                  ins Verhältnis zu setzen; verfügt das Sys-
                                    Dollar sind erhältlich) bietet Intel kosten-            Nach Prüfung der Angaben erhält der Ent-       tem nicht über genügend Platz, bricht der
                                    lose Lizenzen für Studenten, Lehrkräfte wickler eine E-Mail mit einem Download­                        Kopiervorgang irgendwann während der
                                    sowie Open-Source-Entwickler an. Um-                    link zugesandt. Bis Mitte 2014 war Intel       Installation ab.
                                    fassen die Editionen für Studenten und                  weniger pingelig beim Nachweis des             Eine zusätzliche Voraussetzung zum pro-
                                    Lehrkräfte bei Verwendung auf Linux-                    nicht-kommerziellen Vorhabens. Zum             duktiven Einsatz des Compilers stellen
                                    und Windows-Systemen alle Komponen- Ausprobieren der Fähigkeiten der einzel-                           die Kernelheader-Dateien für den aktu-
                                    ten der Cluster Edition und unter Mac nen Studio-XE-Varianten genügt jedoch                            ellen Kernel dar. Ubuntu beispielsweise
                                    OS die Bestandteile der Composer Edi-                   bereits der Download der kommerziellen         lagert diese im Verzeichnis »/usr/src/
                                    tion, so entspricht die Version für Open- Free-Trial-Version. Die Tests in diesem Ar-                  linux‑headers‑XY/«.

                                     Tabelle 2: ICC-Editionen
                                                                                                                                           Installation der Suite
                                     Edition                             Composer             Professional         Cluster
                                     Plattformen für kommerziellen       Linux, Windows,      Linux, Windows       Linux, Windows          Zum Installieren meldet sich der Anwen-
                                     Einsatz                             Mac OS                                                            der auf dem Desktop in einem Terminal
                                     1 personengebundene Lizenz für      ca. 700 US-Dollar    ca. 1600 US-Dollar   ca. 2950 US-Dollar      an. Intel empfiehlt die Archivdatei in ein
                                     Linux und 1 Jahr                                                                                      temporäres Verzeichnis zu speichern,
                                     Kostenlos für                       Studenten, Lehr-     Open-Source-Deve- Studenten, Lehr-           vorzugshalber unterhalb von »/tmp/«.
                                                                         kräfte (Mac OS)      loper (Linux)     kräfte (Linux,             Der Anwender entpackt sie dort mit »tar
                                                                                                                Windows)
                                                                                                                                           ‑xvzf Datei.tgz«. Das oberste Verzeichnis
                                     C/​C++, Fortran, Python, Mathlib    x                    x                 x
                                                                                                                                           des entpackten Archivs enthält das Skript
                                     Vectorizing, Prototyping, Debugging –                    x                 x                          »install_GUI.sh«.
                                     Skalierung, MPI, Diagnose           –                    –                 x                          Das startet der Admin per »sudo« oder
                                                                                                                                           nach dem Wechsel in den Administra-
                                     Tabelle 3: Kernel-Compile-Zeiten                                                                      tormodus mit »sudo su«. Der sich nun
                                     Kernel des Testsystems übersetzt mit      »gcc ‑O2«          »gcc ‑O3«          »icc ‑O3«             auf dem Desktop entfaltende Installer
                                     »make bzImage«                                                                                        führt durch den Installationsprozess. Da
                                                                                                                                           Ubuntu keine IA-32-Bibliotheken mehr
                                     Per GCC                                   16:35 min          18:15 min          18:15 min
                                                                                                                                           mitbringt, wählt der Anwender in diesem
                                     Per ICC                                   28:00 min          28:01 min          27:03 min
                                                                                                                                           Fall die Intel-Compiler-Unterstützung für
                                     »make modules«
                                                                                                                                           diese Architektur im Installer ab (Abbil-
                                     Per GCC                                   01:03 min          01:06 min          01:07 min
                                                                                                                                           dung 1). Der Prozess lädt während der
                                     Per ICC                                   01:37 min          02:44 min          01:38 min
                                                                                                                                           Installation die notwendige Lizenzdatei
Viel Grips für Chips - Linux-Magazin
12/2017
                                                                                                                                                                       Titelthema
von einem Intel-Server, was eine Verbin-          eigentlichen Installation der Suite im            Der Anwender testet die grundsätzliche
dung zum Internet erfordert.                      temporären Verzeichnis; der Anwender              Funktionalität des Intel-Compilers am

                                                                                                                                                Intel Studio
Nach erfolgreicher Installation versucht          darf die Daten ohne Bedenken löschen.             besten durch ein einfaches Programm.
die Installationsroutine die „Getting                                                               Das klassische „Hello World!“ bietet sich
started“-Seite aufzurufen. Dies schlug            Erste Schritte                                    hierzu an (Listing 1). Der Befehl »icc
zumindest auf dem Referenzsystem fehl.                                                              HelloWorld.c« generiert die Datei »a.out«
Der Anwender findet das Dokument                       Vor dem produktiven Einsatz stellt der       im selben Verzeichnis. Ein Aufruf des
»getstart_clus_l.htm« bei Bedarf im Com-               Anwender sein System auf den neuen           Programms erzeugt die erwartete Mel-                               35

                                                                                                                                                www.linux-magazin.de
piler-Installationsverzeichnis unterhalb               Compiler ein. Das Skript, um die Umge-       dung (Abbildung 2).
von »documentation_2018/en/ps2018/«.                   bungsvariablen entsprechend zu setzen,
Ungefähr 3,9 GByte verbleiben nach der                 befindet sich im »bin/«-Verzeichnis der      Compiler bei der Arbeit
                                                                           Compiler-Installation.
                                                                           Der Aufruf erfolgt auf   Für einen ersten Vergleich zwischen den
                                                                           einem 64-Bit-System      beiden Konkurrenten GCC und ICC kann
                                                                           per »source compiler-
                                                                           vars.sh intel64«. Es      Listing 1: »HelloWorld.c«
                                                                           bietet sich an, diesen    01 
                                                                                                        #include 
                                                                           Aufruf in die Datei       02 
                                                                           ».bashrc« im Home-        03 main(void)
                                                                           verzeichnis einzutra-     04 {
                                                                           gen, um nicht nach
                                                                                                     05  printf("Hello World!\n");
                                                                           jedem Reboot das
                                                                                                     06  return 0;
Abbildung 2: Zu erwarten: Nach der Kompilierung per ICC startet das Hello- Skript manuell aufru-
                                                                                                     07 }
World-Programm ohne Umstände.                                              fen zu müssen.

Anzeige
Viel Grips für Chips - Linux-Magazin
12/2017
Titelthema

                                                                                                                     hauseigenen Com-          Produktivität in umfangreichen Projekten
                                                                                                                     piler auch Code für       insbesondere in der Testphase können
             Intel Studio

                                                                                                                     fremde CPUs, so-          lange Übersetzungszeiten sehr schmä-
                                                                                                                     fern es sich um           lern, und lange Wartezeiten führen stets
                                                                                                                     allgemein verbrei-        auch zu Frustration.
                                                                                                                     tet Prozessorfea-         Die in Tabelle 3 ermittelten Werte für
                                                                                                                     tures handelt. In         die Kompilierungszeiten eines aktuellen
36                                                                                                                   der Dokumentation         4.13.5-Kernels zeigen, dass der Buildpro-
             www.linux-magazin.de

                                                                                                                     steht: „Intel garan-      zess für einen mit dem ICC kompilier-
                                                                                                                     tiert nicht die Ver-      ten Kernel fast doppelt so lange dauert
                                                                                                                     fügbarkeit, Funk­         wie bei einem mit dem GCC gebauten
                                                                                                                     tio­na­lität oder Effi-   Kernelimage, und zwar unabhängig vom
                                                                                                                     zienz der Optimie-        Einsatz der »‑O2«- oder »‑O3«-Optimie-
                                                                                                                     rung für Micropro-        rungen. Gleiches gilt für den Bau der
                                                                                                                     zessoren, die nicht       Kernelmodule. Dabei unterscheidet sich
                                    Abbildung 3: So war jede virtuelle Maschine für die Leistungstests konfiguriert. von Intel stam­           diese Tendenz selbst dann nicht, wenn
                                                                                                                     men.“                     der Build auf einem System unter einem
                                    die Kernel-Kompilierung dienen, die je-                  Die Garantie fürs letzte Quäntchen Op-            laufenden Ubuntu-Standardkernel oder
                                    den Compiler an seine Leistungsgrenze timierung bekommt offenbar weiterhin                                 mit einem durch den GCC oder durch
                                    führt. Im Jahr 2004 hatte ein Linux-Maga-                nur, wer eine Intel-CPU vorzuweisen hat.          den ICC kompilierten Kernel stattfindet.
                                    zin-Artikel [1] dies bereits mit dem dama-               Ein Auszug mittels »cat /proc/cpuinfo«
                                    ligen ICC versucht. Letztlich gelang das bringt diesbezüglich Gewissheit, mit In-                          Performance des erzeugten
                                    Unterfangen, es waren dabei allerdings tel-CPUs zeigt der Parameter »vendor_id«
                                                                                                                                               Codes messen
                                    eine Menge Fallstricke aus dem Weg zu                    den Wert »GenuineIntel« an – so auch
                                    räumen und viel Kernelcode anzupassen. in der Testumgebung (siehe Kasten „So                               Nach Erzeugung der GCC- und ICC-Ker-
                                    Mittlerweile ist der ICC ohne Vorarbeit                  haben wir getestet“).                             nelimages ist ein Benchmark das beste
                                    dazu in der Lage.                                        Die Zeit für einen Compilerlauf sind für          Mittel, um die mit dem jeweiligen Com-
                                    Nachdem Intel 2009 einen Rechtsstreit den erzeugten Binärcode zwar belanglos,                              piler erreichbare Systemperformance zu
                                    gegen AMD verloren hatte, optimieren die nicht aber für seinen Entwickler. Dessen                          beurteilen. Aussagekräftiger, als Daten-

                                     So haben wir getestet
                                      Die Installation der Cluster Edition erfolgte       erzeugte anschließend der Befehl »make               beziehungsweise dem von ihm verursachten
                                      auf einem Ubuntu-Desktop-System (Version            defconfig«. Eine zusätzliche Installation des        Effekt. Die Latenz ist also ein Maß für die (mög-
                                      17.04), das in einer virtuellen Maschine unter      »libncurses5‑dev«-Pakets auf dem Linux-Gast          lichst gering zu haltende) Wartezeit.
                                      VMware Fusion lief. Während der Ermittlung der      ermöglichte es, »make menuconfig« auszufüh-          Der Cyclictest misst Latenzen von Linux-
                                      Kompilierungs- und Latenzzeiten liefen in der       ren, um notwendige weiterer Kernelmodule zu          Kerneln sehr präzise, weshalb ihn die Tester
                                      virtuellen Maschine und auf dem Host nur die        berücksichtigen. Die Ergänzung der Konfigura-        zum Vergleich verschiedener Kernel und somit
                                      Grunddienste und keine weiteren Prozesse. Der       tion beschränkte sich jedoch auf Module, um          auch der beiden Compiler heranzogen. Mittels
                                      Host verfügte über 16 GByte RAM sowie eine          virtuelle SCSI-Festplatten einzubinden.              »phoronix‑test‑suite install cyclictest« instal-
                                      Intel-i7-CPU mit Hyperthreading. Der virtuellen     Die Zeiten der Kernelkompilierung ermittelte         lierten sie zunächst den Test. Der Befehl »pho-
                                      Maschine standen zwei Kerne und 4 GByte RAM         »time make bzImage« oder ein entsprechender          ronix‑test‑suite run cyclictest« startete einen
                                      zur Verfügung (Abbildung 3).                        »time make modules«-Befehl.                          Benchmarklauf (Abbildung 4). Der Mittelwert
                                      Für jeden Kompilierungsvorgang erhielt die zu-                                                           eines jeden der 24 durchgeführten Testläufe
                                                                                          Antwortverhalten des Kernels messen
                                      ständige »Makefile«-Datei im Wurzelverzeich-                                                             gründet sich auf jeweils sechs Durchläufe.
                                      nis des Kernels 4.13.5 für die unterschiedlichen    Die Suche nach einem freien Benchmark, der           Insgesamt 24*6=144 Einzelwerte flossen so in
                                      Testszenarien entsprechende Modifikationen.         die Performance des erzeugten Binärcodes ver-        die Ergebnisse ein. Rückschlüsse auf die Kom-
                                      Diese betrafen bei Kompilierung eines ICC-          gleichend beurteilen kann, führte die Tester zu      pilierzeiten und Binärcode-Latenzen der ICC-
                                      Kernels die Variablen »HOSTCC«, »HOSTCXX«,          Open Benchmarking [6]. Die dort propagierten         Suite unter Windows oder Mac OS lassen diese
                                      »HOSTCFLAGS«, »HOSTCXXFLAGS« sowie                  Leistungstests laufen innerhalb der Phoronix         Ergebnissen aber nicht zu.
                                      »CC«. Versuche einer Code-Optimierung un-           Test Suite [7] ab. Ubuntu hält diese Suite im        Die Auswahl des jeweiligen Kernels erfolgte vor
                                      ter Einsatz der »‑O3«-Option bedingten eine         Repository vor, sodass der Admin sie leicht per      dem Bootvorgang im Grub-Menü. Zur Anzeige
                                      entsprechende Änderung des Flag »‑O2«. Die          Paketmanager installieren kann.                      des Bootmenüs versahen die Tester in der Da-
                                      »Makefile«-Da­teien in den Kernel-Unterver-         Der Befehl »phoronix‑test‑suite list‑tests«          tei »/etc/default/grub« die Zeilen »GRUB_HID-
                                      zeichnissen änderten sich bei dieser Gelegen-       zeigt eine Liste möglicher Tests, die mit Cyc-       DEN_TIMEOUT=0« sowie »GRUB_HIDDEN_TIME-
                                      heit nicht.                                         lictest auch einen Benchmark zur Messung von         OUT_QUIET=true« am Zeilenanfang mit einem
                                      Mit »make mrproper« löschten die Tester             Latenzen enthält. Latenz bezeichnet allgemein        Kommentarzeichen (»#«). Danach führte der
                                      die bei früheren Kompilationen entstande-           die zeitliche Verzögerung zwischen dem Aus-          Befehl »update‑grub« die Konfigurationsände-
                                      nen Binaries. Die notwendige ».config«-Datei        lösen eines Prozesses und dessen Auswirkung          rungen im System durch.
Viel Grips für Chips - Linux-Magazin
12/2017
                                                                                                                                                                            Titelthema
durchsätze zu messen, ist beim Kernel,
dessen Antwortverhalten mit dem Bench-

                                                                                                                                                     Intel Studio
mark Cyclictest zu quantifizieren (siehe
Kasten „So haben wir getestet“).
Die durchaus überraschenden Ergebnisse
zeigt Abbildung 5 grafisch, Tabelle 4
listet noch einmal die genauen Werte.
Sie verdeutlichen, dass tendenziell GCC-                                                                                                                                    37

                                                                                                                                                     www.linux-magazin.de
kompilierte Kernel geringere Latenzzei-
ten zeigen als mit dem ICC übersetzte
– in den meisten Fällen um 20 Prozent
oder weniger.

Ernüchterung
Die aktuell ermittelten Werte der Kompi-    Abbildung 4: Beispiel der Cyclictest-Latenzmessung unter einem mit dem ICC kompilierten Kernel 4.13.5.
lierungs- und Latenzzeiten transportieren
eine schlechte Nachricht für Entwickler,    nicht mehr, die Bootzeiten zwischen mit                meldungen während des Buildprozesses
die nach einer einfachen Lösung für ei-     dem GCC und mit dem ICC kompilier-                     unterbleiben.
nen Performance-Schub suchen und des-       ten Kerneln sind praktisch gleich. Allen-              In Sachen Optionen warnt die offizielle
wegen auf den Intel-eigenen Compiler        falls lassen sich durch angepasste Com-                Dokumentation sowieso vor Blauäugig-
setzen (wollen).                            pilerflags in den Makefiles der Kernel-                keit: „Der Intel C++ Compiler unter-
Denn für die Kernelimages gilt das Ge-      Unterverzeichnisse die Kompilierzeiten                 stützt viele von den Compileroptionen
schwindigkeits-Versprechen von Intel        verkürzen, da die umfangreichen Warn-                  …“ – die Einschränkung „viele“ ist ernst
Viel Grips für Chips - Linux-Magazin
12/2017
Titelthema

                                    zu nehmen. Ein Pro-
                                    jekt einfach durch
             Intel Studio

                                    Austausch des Compi-
                                    lers in den Makefiles
                                    portieren zu wollen,
                                    gelingt selten.
                                    In die Bewertung der
38                                  Messwerte sollte zu-
             www.linux-magazin.de

                                    dem einfließen, dass
                                    Optimierungen im Be-
                                    triebssystem selbst
                                    schwere Kost sind: Bei
                                    den Wechseln vom
                                    Benutzer- in den Ker-
                                    nelmodus sichert die
                                    CPU nämlich nur ihre
                                    allgemeinen Register,
                                    aber nicht die der Pro-
                                    zessorerweiterungen.
                                    Das macht es schwer,
                                    im Kernel paralleli-        Abbildung 5: Ergebnisse der Latenzmessung über sechs Testläufe. Die Zeiten auf der y-Achse sind in Millisekunden aufgetragen. Die
                                    sierbaren SIMD-Code ermittelten ICC-Werte liegen signifikant über den Werten bei Verwendung des GCC.
                                    (Single Instruction
                                    Multiple Data) zu verankern. Software im           Intel-Compilers gegenüber dem GCC auf:                  [3]	Open MP: [http://www.openmp.org]
                                    Userspace unterliegt dieser Einschrän-             Nicht Intels Produkt ist schlechter gewor-              [4]	Open Source Initiative:
                                    kung nicht. Wie in [8] aufgezeigt, wartet den, sondern der freie Compiler ist heute                              [https://​­opensource.​­org]
                                    der ICC in anderen Fällen (Datenbankzu-            besser denn je. Insbesondere hantiert er                [5]	The Open Source Definition:
                                    griffe unter Gentoo Linux) durchaus mit            heute mit der PGO-Instrumentalisierung                        [https://​­opensource.​­org/​­osd]
                                    einem Performance-Schub auf.                       (Profile Guided Optimization), die vor                  [6]	Open Benchmarking:
                                                                                       Jahren noch ein Alleinstellungsmerkmal                        [https://​­openbenchmarking.​­org]
                                    Fazit                                              des ICC war.                                            [7]	Phoronix Test Suite:
                                                                                       Nun ist es an Intel, sich wieder einen                        [http://​­www.​­phoronix‑test‑suite.​­com]
                                    Dass Konkurrenz das Geschäft zum Vorsprung herauszuarbeiten. Ein erster [8]	Kay Königsmann, „Gentoo-Software opti-
                                    Wohle der Kunden belebt, gilt für Com-             Ansatzpunkt sollten die Übersetzungszei-                      miert übersetzen“:
                                    piler allemal. Schon allein deshalb war            ten sein, denn auch für vielbeschäftigte                      Linux-Magazin 06/​11, S. 42,
                                    und ist es gut, dass Intel sein Produkt am         Entwickler gilt: Zeit ist Geld. (jk)                n        [http://​­www.​­linux‑magazin.​­de/​­Ausgaben/​
                                    Markt hält, auch wenn die Absicht des                                                                            ­2011/​­06/​­ICC‑fuer‑Gentoo]
                                    PC-Prozessor-Quasimonopolisten wohl
                                    eher die ist, die eigenen CPUs über op- Infos                                                              Der Autor
                                    timierten Code attraktiv zu halten. Und            [1]	Ingo A. Kubbilun, „Linux-Kernel mit dem            Kay Königsmann arbeitet seit 1999 im IT-Bereich,
                                    dass der ICC ein Jahrzehnt lang messbar                   Intel-Compiler übersetzen“:                      zunächst als Datenbank- und Java-Dozent, später
                                    schnellere Binaries produziert hat als der                Linux-Magazin 07/​04, S. 34,                     auch im Projektmanagement von IT-Projekten.
                                    GCC und andere, war für diese Alternati-                  [http://​­www.​­linux‑magazin.​­de/​­Ausgaben/​  Debian GNU/​Linux sowie IT-Security bilden die
                                    ven ein guter Ansporn.                                    ­2004/​­07/​­Aufgedreht‑Kernel‑Tuning]           Schwerpunkte seiner heutigen Tätigkeit. Er ist
                                    An dieser Stelle löst sich wohl auch das [2]	Intel Parallel Studio XE: [https://​­software.​              Autor zahlreicher Fernlehrgänge im Erwachse-
                                    Rätsel um das schlechte Abschneiden des                  ­intel.​­com/​­en‑us/​­parallel‑studio‑xe]        nen-Weiterbildungsbereich.

                                     Tabelle 4: Latenzmessungen per Cyclictest
                                     Kernel                          Ubuntu original                 4.13.5                          4.13.5                          4.13.5
                                     Übersetzt mit                   »gcc ‑O2«                       »gcc ‑O2«                       »gcc ‑O3«                       »icc ‑O3«
                                     Testlauf 1                      760 ms                          826 ms                          1091 ms                         1062 ms
                                     Testlauf 2                      788 ms                          845 ms                          802 ms                          1005 ms
                                     Testlauf 3                      803 ms                          801 ms                          1014 ms                         1148 ms
                                     Testlauf 4                      788 ms                          804 ms                          1121 ms                         1187 ms
                                     Testlauf 5                      740 ms                          1091 ms                         875 ms                          1138 ms
                                     Testlauf 6                      1021 ms                         866 ms                          903 ms                          1119 ms
Sie können auch lesen