Technische Merkmale
Basis von SUSE Linux Enterprise Real Time ist der neueste Echtzeit-Linux-Kernel mit dem neuesten Real Time-Patchset der Open Source-Community: preempt RT. Mit diesem Set können Sie Preemption mit adaptiven Spinlocks sowie Thread-Run-Interrupts und die Übernahme von Prioritäten unterstützen. Die Lösung umfasst zudem Unterstützung für CPU-Shielding, Ressourcenzuweisung, hochauflösende Zeitgeber und Kernel-Treiber für den neuesten Open Source-RDMA-Software-Stack der OpenFabrics Alliance: OpenFabrics Enterprise Distribution (OFED).
Adaptive Spinlocks
SUSE Linux Enterprise Real Time wurde so modifiziert, dass bestimmte Bereiche des herkömmlichen Linux-Betriebssystem-Kernels nun unterbrochen werden können bzw. präemptiv sind, was bislang nicht der Fall war. Sie können Latenzzeiten minimieren und die Vorhersehbarkeit von Antwortzeiten verbessern, wenn Sie dafür sorgen, dass ein nicht-unterbrechbarer Betriebssystemprozess einen benutzerspezifischen hochprioritären Prozess nicht blockiert oder anderweitig verhindert, dass dieser ausgeführt wird. Die Spinlocks wurden u. a. so modifiziert, dass sie deaktiviert oder ausgesetzt werden können. Dadurch werden die ihnen zugewiesenen Ressourcen für die Ausführung von Prozessen mit höherer Priorität freigegeben. Adaptive Spinlocks beschleunigen Betriebssystem-Kontextwechsel und verbessern damit maßgeblich die Leistung durchsatzkritischer Workloads.
Thread-Run-Interrupts
Kernel-spezifische Interrupt-Threads gehören ebenfalls zu den Anpassungen, die den Real Time-Kernel noch präemptiver machen. Interrupts sind Prozesse, die entweder von der Hardware (Hard-Interrupt) oder der Software (Soft-Interrupt) initiiert werden. Ihre Initiierung führt dazu, dass der Linux-Kernel vom Prozessmodus in den Interrupt-Modus geschaltet wird. Bei einem herkömmlichen Betriebssystem sind Prozesse im Interrupt-Modus nicht präemptiv. Bei SUSE Linux Enterprise Real Time hingegen werden diese Interrupts von Kernel-Threads eingeschlossen. Diese Kernel-Threads wiederum können unterbrochen werden, sodass Hard- und Soft-Interrupts zwecks Ausführung von Prozessen mit höherer Priorität ausgesetzt werden können.
Übernahme von Prioritäten
Hiermit ist gemeint, dass Prozesse mit niedriger Priorität in der Lage sind, eine höhere Priorität anzunehmen. Dies ist insbesondere dann hilfreich, wenn ein hochprioritärer Prozess erst ausgeführt werden kann, nachdem ein Prozess mit niedriger Priorität abgeschlossen ist. Bei SUSE Linux Enterprise Real Time wird von Kernel-Services, die über einen Prozess mit hoher Priorität initiiert werden, nicht beliebig lange auf den Abschluss anderer Kernel-Services gewartet, die über Prozesse mit niedriger Priorität (mit dem erforderlichen Semaphor) ausgelöst wurden. Stattdessen wird den Prozessen mit niedriger Priorität eine höhere Priorität zugewiesen bzw. sie übernehmen die Priorität des hochprioritären Prozesses, bis das Semaphor freigegeben ist. Darüber hinaus umfasst Real Time eine alternative glibc, mit deren Hilfe die Übernahme von Prioritäten auch auf den Benutzerbereich ausgedehnt wird. Anwendungen mit dieser alternativen glibc können eine Ausweitung der Übernahme von Prioritäten auf ihre POSIX-Mutexe anfordern.
CPU-Shielding und -Zuweisung
Mit SUSE Linux Enterprise Real Time haben Benutzer die vollständige Kontrolle über die Zuweisung von Prozessen und Threads an CPUs. So kann beispielsweise festgelegt werden, dass Prozesse mit Echtzeitanforderungen ausschließlich auf dedizierten CPUs oder Prozessorkernen ausgeführt werden. CPUs, die für die Ausführung von Echtzeitaufgaben zuständig sind, können komplett von anderen Prozessen isoliert werden, die ihnen nicht ausdrücklich zugewiesen worden sind. Auf diese Weise wird sichergestellt, dass für hochprioritäre Prozesse stets Ressourcen zur Verfügung stehen und dass sie selbst bei höheren Systemlasten nur minimal beeinträchtigt werden. Dies wiederum resultiert in einer insgesamt größeren Zuverlässigkeit und besseren Vorhersehbarkeit.
Hochauflösende Zeitgeber
Die POSIX-Zeitgeber-Kernel-Services mit niedriger Auflösung (40 Millisekunden) wurden durch eine neue Implementierung mit einer Auflösung von etwa zwei Mikrosekunden ersetzt. Die Zeit, die das System auf die Verarbeitung von Interrupts, Systemaufrufen, Kernel-Daemons und Benutzeranwendungen verwendet, kann nun in Nanosekunden ausgewiesen werden.