In den vergangenen Jahren haben sich industrielle Prozesse zunehmend in Richtung hochgradige Automatisierung entwickelt, um menschliche Interaktionen so weit wie möglich zu minimieren. Das Konzept des Industrial Internet of Things (IIoT) sieht dabei den Einsatz zahlreicher Sensoren und Aktuatoren vor. Die von den Sensoren erzeugte neue Datenmenge muss jedoch verarbeitet und in Steuerbefehle für die Aktuatoren umgewandelt werden. Da Cloud Computing (CC) aufgrund unvorhersehbarer Netzwerklatenzen nicht die richtige Wahl ist, wird Edge Computing (EC) eingesetzt, um Steueranwendungen auszuführen, die in der Regel Echtzeit-Anforderungen haben. Um den Einfluss der Anwendungen aufeinander zu minimieren, wird auf Edge-Servern oft Virtualisierung verwendet. Insbesondere die Container Virtualisierung mit ihren Vorteilen von kleinen Images und schnellen Startzeiten ist in industriellen Umgebungen hilfreich. Zur Erfüllung der zeitlichen Anforderungen einer Anwendung auf einem Edge-Server gibt es mehrere Möglichkeiten. Diese Arbeit verwendet den Hierarchical-Constant-Bandwidth-Server (HCBS)-Patch für den Linux-Kernel. Dieser Patch ermöglicht das Scheduling von Containern nach einem Earliest-Deadline-First (EDF)-Schema und Prozesse innerhalb von Containern nach einem Fixed-Priority (FP)-Schema. Der in der Container Virtualiserung übliche Orchestrator reduziert nicht nur den Energie- und Ressourcenverbrauch, indem nicht mehr benötigte Container gestoppt werden, sondern verbessert auch das Echtzeitverhalten des gesamten Systems. Denn der Orchestrator kann Container, deren Anwendungen Deadlines verpassen, auf einen anderen Server im Cluster mit mehr verfügbarer CPU-Zeit bewegen. Es stellen sich jedoch zwei Fragen, wenn Container Virtualisierung im Kontext von Echtzeitsystemen verwendet wird: 1.) Welcher Container muss auf welchem Server gestartet werden, um alle Anforderungen des Containers zu erfüllen, und wie viel CPU-Zeit benötigt er? 2.) Wie kann das Echtzeitverhalten zur Laufzeit aufrechterhalten werden, wenn Störungen durch andere Anwendungen dazu kommen? Für die Beantwortung von Frage Nummer 1 stellen wir mehrere Solver bereit, die wir hinsichtlich Leistung und Optimalität vergleichen. Bezüglich Frage Nummer 2 implementieren wir einen Mechanismus, der das Verpassen von Deadlines mithilfe von Time-Utility Funktionen reduziert, indem er die CPU-Zeit eines Containers erhöht oder diesen auf einen anderen Server verschiebt. Schließlich evaluieren wir unsere Controller anhand synthetischer Testfälle.
Sebastian WüstDennis SchwerdelPaul Müller
Stephen SolteszHerbert PötzlMarc E. FiuczynskiAndy BavierLarry Peterson
Holger GantikowSebastian KlingbergChristoph Reich
Stephen SolteszHerbert PötzlMarc E. FiuczynskiAndy BavierLarry Peterson