Prozessortechnik

Die Auswirkungen von Virtualisierung und Multicore

Seite: 2/2

Anbieter zum Thema

Der Hypervisor kontrolliert das Nutzungsmodell und die Sichtbarkeit der vorhandenen Schnittstellen sowie die Emulation weiterer Geräte, die als Konsole, Netzwerkanschluss zur Kommunikation o.ä. genutzt werden. Damit erlaubt die Virtualisierung komplett neue Anwendungsszenarien, die so bisher nicht möglich waren.

Multicore und Echtzeit

Verschiedene Experten sagen, dass sich Echtzeit und Multicore im Allgemeinen widersprechen. Dies ist darin begründet, dass die Echtzeit-Unterstützung eines Systems definiert ist als die Möglichkeit, den Zeitraum zwischen Eintritt eines Ereignisses und der Reaktion des Systems auf dieses Ereignis zu berechnen. Mit Multicore-Prozessoren wird diese Berechnung schwieriger, da die Gleichung zusätzliche Parameter erhält:

  • Systemarchitektur – abhängig vom Aufbau mit zwei oder mehr Prozessoren ist festzustellen, dass die Antwortzeit von Speicherzuordnung und anderen Parametern wie Cache-Architektur (Cache Alignment, Cache Ort) abhängt.
  • echte Parallelität – anders als bisher werden Prozesse im System nicht mehr pseudo-parallel, sondern tatsächlich parallel ausgeführt. Dies erfordert feinere Granularität und bessere Locking-Mechanismen. Schließlich können nun Funktionen wirklich parallel, nur um wenige Opcodes versetzt auf verschiedenen Kernen ausgeführt werden. So kann z.B. dieselbe Interrupt-Service-Routine parallel ausgeführt werden.

Diese zusätzlichen Parameter führen ein chaotisches Moment in die Gleichung ein, die dadurch fast unlösbar wird.

Bild 4: Ein echtzeitfähiger Hypervisor erlaubt dem RTOS, einen der CPU-Kerne zuzuteilen, während der oder die übrigen Kerne einem Standard-OS zur Verfügung stehen (Archiv: Vogel Business Media)

Hardware-Virtualisierung löst dieses Dilemma: Ein echtzeitfähiger Hypervisor erlaubt dem Echtzeit-Betriebssystem, einen der CPU-Kerne zuzuteilen, während der oder die übrigen Kerne einem Standard-Betriebssystem zur Verfügung stehen. Damit lassen sich innerhalb des Systems eine saubere Trennung zwischen Steuerung und Nutzerinterface sicherstellen und zwei normalerweise getrennte Aufgaben in einem System konsolidieren (Bild 4).

Aber auch die Hardware-Visualisierung ist nicht ohne geringe Zeitverlustemöglich. Somit verbleibt immer die Aufgabe, das Endsystem zu testen und korrekte Antwortzeiten sicherzustellen. Insgesamt erlaubt die Virtualisierung, die hohe Performance moderner Chipsätze und CPUs vollständig zu nutzen.

Schnelle Kommunikation, Aufteilung von Unteilbarem

Mehrere Kerne machen zudem Architekturen möglich, die aus parallel arbeitenden Systemen auf derselben Plattform bestehen. Auf dieser können z.B. unteilbare Aufgaben aufgeteilt werden, so dass trotzdem die vollen Fähigkeiten des Prozessors genutzt werden. Die Kommunikation zwischen beiden Systemen würde nun über eine virtuelle Netzwerkschnittstelle per Shared Memory oder direkt erfolgen – mit hohen Datenraten.

Mehrere Prozesse in mehreren Kernen

Die meisten Programmierer rechneten bisher nicht damit, dass echte Parallelität bei der Programmausführung möglich ist. Dies führt zu Kohärenz- und Locking-Problemen, die schwer zu finden und zu lösen sind, ohne dabei an Ausführungsgeschwindigkeit zu verlieren. Dies wiederum bedeutet Verlust der Vorteile durch die neue Architektur. Virtualisierung kann hier helfen, indem die Applikation plötzlich wieder „nur“ einen Kern zu sehen bekommt. Dabei erlaubt es die Virtualisierung, einige dieser Programme eigenständig auf einem Rechner zu sammeln und damit die zusätzliche Performance voll zu nutzen. Diese Anwendung dient mehr der Investitionssicherung in vorhandene Software ohne Neuentwicklung, ist aber ebenfalls eine wichtige Anwendung der Virtualisierung.

Weitere Modelle sollen hier nur kurz skizziert werden: Cluster in a Box; MTBF-Verbesserung und Funktionsaufteilung auf mehrere Systeme.

  • Cluster in a Box

Hochverfügbarkeit wird meist durch redundante Hardware hergestellt, wobei meist Softwarefehler zum Versagen des Systems führen. Zusätzliche Hardware bedeutet zusätzliche Kosten, zusätzlichen Platzbedarf, zusätzlichen Stromverbrauch. Hierfür gibt es in vielen Fällen gute Gründe, aber in diversen Fällen eine bessere Lösung. Ein solches Beispiel wäre ein Datenbank-Server, der hochverfügbar sein soll. Es würden also zwei Datenbankserver nebeneinander laufen, auf derselben Hardware, jeder jedoch mit „seiner“ eigenen Festplatte. Hardwareunterstützte Vollvirtualisierung bedeutet hier volle Ausnutzung vorhandener Ressourcen bei gleichzeitiger Sicherstellung der Hochverfügbarkeit.

  • MTBF-Verbesserung

Quasi ein Nebeneffekt der o.g. Lösung: mit zunehmender Komponentenzahl sinkt die MTBF (Mean Time Between Failures). Der vorgeschlagene Aufbau bedeutet umgesetzt, dass die Komponentenzahl sinkt, und sich damit die MTBF verbessert.

  • Mehrere Betriebssysteme für verschiedene Aspekte des Gesamtsystems

Hier würden nun mehrere Echtzeitsysteme verschiedene Aspekte der Gesamtlösung steuern, während sie auf derselben Hardware laufen. Damit lassen sich Fehlerbereiche trennen, d.h. eine Gesamtapplikation, bei der verschiedene Aufgaben auf einer Hardware abgewickelt werden, wird auf verschiedene virtuelle Maschinen aufgeteilt und damit die Betriebssicherheit der Gesamtanwendung erhöht. Zusätzlich können die jeweils zugrunde liegenden Betriebssysteme für die jeweilige Aufgabe optimiert werden, und es kann trotz verschiedener Anforderungen ein gemeinsames Gerät verbleiben.

*Christof Wehner ist Solution Architect bei RadiSys in Hallbergmoos/München.

(ID:241477)