Multicore und Virtualisierung

Stefan Kuppinger,

Die Tücken der Software-Migration

Mit Virtualisierung können mehrere Betriebssysteme simultan auf einer Hardware ausgeführt werden. Allerdings gibt es einige Randbedingungen zu beachten. Zehn Fragen lenken den Blick aufs Wesentliche.

Hypervisor-Lösungen lassen sich nach Architekturtyp und der eingesetzten Virtualisierungstechnik gliedern.

© National Instruments

Mehr und mehr Entwickler von Embedded- Systemen ziehen den Einsatz von Virtualisierungstechnologien für ihre Anwendungen in Betracht, aus gutem Grund: Virtualisierung reduziert Hardwarekosten, isoliert Betriebssysteme und verringert den Platzbedarf. Virtualisierung ist eine Technologie, welche die simultane Ausführung von mehr als einem Betriebssystem auf einem Computer ermöglicht, zum Beispiel Antriebsregelung und Ablaufsteuerung mit einem Echtzeit-Betriebssystem parallel zur Bedienoberfläche einer Maschine und Datenauswertungen unter Windows.

Die entscheidende Systemsoftware, mit der dieses Ziel erreicht wird, ist der sogenannte Hypervisor oder Virtual Machine Monitor (VMM). Auf den ersten Blick erscheint dies wie der Traum eines jeden Ingenieurs. Dennoch gibt es wichtige Aspekte zu berücksichtigen, bevor ein Hypervisor-System eingesetzt wird. Außerdem kann jede Hypervisor-Lösung eine andere Software- Architektur nutzen und unterschiedliche Funktionen beinhalten, aus denen sich spezifische Einschränkungen ergeben.

Die folgenden Fragen sollten sich Entwickler auf jeden Fall stellen, um die Vielzahl an Virtualisierungsverfahren einzugrenzen und letztendlich eine fundierte Entscheidung treffen zu können:

Anzeige

Welcher Hypervisor-Typ ist notwendig?

Die Virtualisierung bietet viele Vorteile, jedoch nie ganz ohne Kompromisse bei der Auswahl der Hypervisor-Software.

© National Instruments

Die Hypervisor-Systeme lassen sich in zwei Kategorien aufteilen: Typ-1-Hypervisor-Software - auch Bare-Metal-Hypervisor genannt - führt mehrere virtuelle Maschinen parallel und ohne Verwendung eines Betriebssystems aus. Hier behält der Hypervisor selbst die direkte Kontrolle über die Kommunikation mit der Systemhardware.

Dagegen steuert ein Typ-2-Hypervisor (Hosted-Hypervisor) eine oder mehrere Instanzen eines Betriebssystems in Containern, den virtuellen Maschinen (VMs). Er setzt auf einem „Host"-Betriebssystem auf, gewöhnlich ein Standardbetriebssystem wie Microsoft Windows. Die Unterschiede sind entscheidend dafür, welche Betriebssysteme als Systemplattform nutzbar sind. Die meisten Embedded-Anwendungen basieren auf der Typ-1-Architektur, da diese Hypervisoren auch Echtzeit-Betriebssysteme unterstützen und einen direkten Zugriff des Gast-Betriebssystems auf die Hardware ermöglichen.

Diese beiden Funktionen werden von Typ-2-Lösungen in der Regel nicht unterstützt. Aufgaben, wie etwa das Testen von Beta-Software oder die Ausführung von Anwendungen, die für unterschiedliche Betriebssysteme geschrieben wurden, sind mit einem Typ-2-Hypervisor besser umzusetzen, der sich gewöhnlich einfacher installieren und konfigurieren lässt.

Welche Virtualisierungstechnik ist am Sinnvollsten?

Es gibt drei grundlegende Techniken, um die Virtualisierung innerhalb einer Hypervisor- Lösung (Typ-1 oder Typ-2) umzusetzen: Durch binäre Übersetzung des Befehlssatzes (Binary Translation Technology) wandelt der Hypervisor „privilegierte" Befehle zur Laufzeit in „unprivilegierte" Befehle, so dass mehrere Betriebssysteme ohne Konflikte nebeneinander genutzt werden können.

Hardwaregestützte Hypervisor-Systeme nutzen dagegen die Virtualisierungsfunktionen des Prozessors (zum Beispiel Intels Virtualization Technology), um dem Hypervisor bei Bedarf die Kontrolle zu übergeben. Beide Technologien unterstützen unmodifizierte Gast-Betriebssysteme. Das kann eine wichtige Voraussetzung sein, wenn der Quellcode des Gast-Betriebssystems nicht verfügbar ist. Als dritte Variante stellen einige Hypervisor-Systeme eine Programmierschnittstelle bereit, über die der Hypervisor manuell aufrufbar ist.

Diese Paravirtualisierung erzielt im Vergleich zur binären Übersetzung oder zum hardwaregestützten Ansatz häufig eine schnellere Ausführungsgeschwindigkeit. Voraussetzung für eine Paravirtualisierung ist, dass der Quellcode des Gast-Betriebssystems für die Modifizierung zur Verfügung steht und Entwickler die Funktionsweise der Hypervisor-Software im Detail kennen müssen.

Für welche Betriebssysteme und Befehlssatz-Architekturen wird Hypervisor-Support benötigt?

Einerseits muss der Hypervisor die für ein System vorgesehenen Betriebssysteme und Befehlssatz-Architekturen unterstützen, die bei der Applikation zum Einsatz kommen. Zum anderen sind bei der Bewertung von Hypervisor-Optionen die künftigen Planungen zu berücksichtigen: Wird der bisher genutzte Prozessor-Typ in Zukunft möglicherweise abgelöst? Wird Support für weitere Betriebssysteme notwendig und stellt der Hypervisor-Anbieter regelmäßig Updates auf neue Versionen der bisherigen Betriebssysteme bereit?

Welche Anforderungen werden an die Kommunikation zwischen den Betriebssystemen gestellt?

Ein Vorteil der Virtualisierung ist die direkte Kommunikation zwischen den Betriebssystemen. Zwei der wichtigsten Kommunikationsmethoden sind emulierte (virtuelle) Schnittstellen (COM und LANPorts) und gemeinsam genutzter Speicher (Shared Memory). Die emulierten Schnittstellen ermöglichen Programmierern, die vertrauten Programmierschnittstellen so zu verwenden, als würden sie über ein Standardprotokoll wie TCP/IP kommunizieren.

Das erleichtert beispielsweise die Portierung bestehender Anwendungen, die nicht für virtualisierte Systeme geschrieben wurden. Bei einer Kommunikation über gemeinsam genutzten Speicher definiert der Hypervisor Abschnitte im Arbeitsspeicher (RAM), auf den beide Betriebssysteme zugreifen können. Spezielle Funktionen verhindern, dass beide Systeme simultan auf denselben Speicherblock zugreifen, und unterstützen den Aufbau von FIFO oder Umlaufspeicher (FIFO: First-In, First-Out).

In welchem Umfang sind virtuelle Maschinen voneinander zu isolieren?

Virtualisierung isoliert mehrere Gast-Betriebssysteme bis zu einem gewissen Grad. Einige Hypervisor-Lösungen gehen aber einen Schritt weiter und gewährleisten, dass ein Betriebssystem die Daten oder Abläufe eines anderen Betriebssystems auf demselben Rechner nicht beeinträchtigen kann. Das kann beispielsweise im Bereich sicherheitsrelevanter Anwendungen (Luft- und Raumfahrt) von Bedeutung sein. Hier ist eine Virtualisierung nur möglich, wenn der Hypervisor die entsprechenden Sicherheitsstandards erfüllt.

Verhalten bei einem Neustart?

Ein wichtiger Aspekt ist das Verhalten des Embedded-Systems bei einem Ausfall oder Neustart eines Gast-Betriebssystems. Was passiert mit den anderen Betriebssystemen auf dem virtualisierten Rechner? Damit ein Betriebssystem unabhängig von anderen neu starten kann, muss es seine ihm zugewiesenen Ein- und Ausgangsgeräte zurücksetzen können.

Generell stellt der Neustart eines Betriebssystems eine Herausforderung dar, wenn ein Betriebssystem für den Zugriff auf Komponenten wie die Festplatte von einem anderen abhängt. Dementsprechend muss bei der Programmierung speziell auf solche Abhängigkeiten geachtet werden.

Wie groß wird der Integrationsaufwand?

Hypervisor-Software gibt es in den unterschiedlichsten Formen, als maschinennaher Code, der einen Entwicklungsaufwand von Wochen oder Monaten erfordern kann, bis hin zu einsatzbereiten Setup-Dateien, die mehrere Betriebssysteme innerhalb weniger Stunden zum Laufen bringen. Im Allgemeinen sind handelsübliche Typ-1-Hypervisor leicht zu installieren.

Typ-2-Hypervisor können einen höheren Integrationsaufwand erfordern, speziell wenn bei Paravirtualisierung das Betriebssystem angepasst werden muss. Bei großen Stückzahlen (Mobiltelefone) können die Leistungsverbesserungen den Integrationsaufwand eines speziellen Hypervisors sehr wohl rechtfertigen. Bei geringeren Stückzahlen sparen einsatzbereite Typ-1-Lösungen wie der NIReal- Time-Hypervisor Zeit und Aufwand.

Welches Multiprocessing wird benötigt?

Bei den Hypervisor-Angeboten sollte darauf geachtet werden, ob sie symmetrisches Multiprocessing (SMP), asymmetrisches Multiprocessing (AMP) oder eine Kombination beider Verfahren unterstützen. Bei SMP handelt es sich um einen Satz identischer Prozessoren, bei AMP hingegen kommen verschiedene Prozessoren zum Einsatz. Verwendet das virtualisierte System nur einen einzigen Prozessor, unterstützen einige Hypervisor-Systeme auch die gemeinsame Nutzung von Prozessorzeit, so dass mehrere Betriebssysteme auf einem Kern ausgeführt werden können.

Wie wirkt sich ein Hypervisor auf die Leistung aus?

Bei der Virtualisierung sollte man die damit verbundenen Leistungseinbußen nicht außer Acht lassen. Aufrufe des Hypervisors setzen voraus, dass der Prozessorzustand gesichert und wiederhergestellt wird, was Prozessor-Ressourcen in Anspruch nimmt. Die leistungsstärksten Hypervisor- Lösungen minimieren die Anzahl der Hypervisor-Aufrufe und können so die von ihnen verursachte Latenz gering halten.

Auswahl des Lizenzmodells und der Supportvereinbarungen

Die Auswahl eines Hypervisors kann erhebliche wirtschaftliche Auswirkungen haben. Neben den Anschaffungskosten werden bei vielen Lösungen Lizenzkosten pro Gerät sowie jährliche Wartungs- und Supportgebühren fällig. Des Weiteren kann neben Software-Upgrades auf aktuelle Betriebssysteme und Prozessorarchitekturen auch der Zugang zu neuen Hypervisor- Funktionen entscheidend sein.

Johannes Bauer ist Technical Marketing Engineer bei National Instruments in München.

Rahman Jamal ist technischer Marketing Director Central Europe bei National Instruments in München.

Labview 2010

Im Zeichen der Zeit

Entwicklungszeit, Verarbeitungszeit, Zykluszeit, Produktionszeit - Zeit spielt in allen Ingenieursdisziplinen eine wichtige Rolle. Dem trägt National Instruments mit der aktuellen Labview-Version Rechnung, die Anfang August auf der NI Week im texanischen Austin vorgestellt wurde. Hinsichtlich Technologie ist die Beschleunigung der Programmausführungszeit die markanteste Neuerung von Labview 2010: Verschiedene Benchmarks, die von praxisbezogenen Anwendungen bis zu Low-Level-Funktionen reichen, belegen eine durchschnittliche Leistungssteigerung von 20 %.

Der Schlüssel zu dieser Verbesserung liegt im neuen Compiler der grafischen Programmier-Plattform, der Aufgaben wie die Speicherzuweisung und die Verwaltung von Threads abstrahiert. Um die Code-Ausführung zu beschleunigen, wurden eine „Low-Level Virtual Machine" (LLVM) sowie eine Open-Source-Compiler-Infrastruktur in den Compiler aufgenommen.

App-Store inklusive

Darüber hinaus führt das Unternehmen mit der Version 2010 eine offene eCommerce-Plattform für die Evaluierung und den Kauf von Add-on-Toolkits ein. Darüber lassen sich künftig benutzerspezifische Funktionen integrieren. Über 50 Add-ons von Drittanbietern und NI sind zum Start des „App-Stores" bereits verfügbar, darunter Bibliotheken für die Code-Wiederverwendung, verschiedene Vorlagen, Bedienelemente für Benutzeroberflächen und Schnittstellen zu anderen Softwarepaketen.

In puncto Entwicklungszeit-Ersparnis sorgt ein neuer IP-Integrationsknoten für Verbesserungen. Die Schnittstelle ist mit dem Core-Generator der Firma Xilinx kompatibel und ermöglicht die Einbindung von FPGA-IPs von Drittanbietern in Labview-Anwendungen. Außerdem wurde mehr als ein Dutzend spezieller Funktionen implementiert, die von erfahrenen Anwendern über das Forum „Idea Exchange" vorgeschlagen wurden.

Dieses Forum, in dem Anwender online Feedback geben können, stellt für National Instruments eine bedeutende Stufe in der Zusammenarbeit zwischen der Entwicklungsabteilung und Labview-Anwendern dar.

  • Xing Icon
  • LinkedIn Icon
Anzeige
Anzeige

Das könnte Sie auch interessieren

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Fraunhofer IMS

Förderprojekt zu eingebetteter KI

Das Projekt "Edge AI Plattform" geht in die dritte Förderrunde: Drei Fraunhofer-Institute entwickeln die Plattform zur Version 3.0 weiter, um Unternehmen einen noch effizienteren Zugang zu eingebetteter Künstlicher Intelligenz (KI) zu ermöglichen...

mehr...
Jetzt Newsletter abonnieren