Die Echtzeit-Kernel-Fähigkeit existiert seit mehr als einem Jahrzehnt im Open-Source-Ökosystem. Ebenso ist die Unterstützung von Red Hat Enterprise Linux (RHEL) für den Echtzeit-Kernel seit mehreren Jahren verfügbar. Dennoch interpretieren viele Systemadministratoren die Kernkonzepte und das tatsächliche Betriebsverhalten falsch. In diesem Artikel beschreibe ich einige seiner Hauptfunktionen, Unterschiede zum Standardkernel und schnelle Installationsschritte.
Ursprünglich führte Red Hat ein Produkt namens „Red Hat Enterprise MRG“ ein, wobei MRG für Messaging, Echtzeit und Grid stand. MRG 2 basierte auf RHEL 5- und RHEL 6-Versionen, während MRG 3 vollständig auf RHEL 6 basierte. Ab RHEL 7 war das MRG-Produkt veraltet und „RHEL for Real-Time“ wurde als separates Produkt eingeführt.
Was ist der Echtzeit-Kernel?
Ein Echtzeit-Kernel ist nicht unbedingt besser oder besser als ein Standard-Kernel. Stattdessen erfüllt es unterschiedliche Geschäfts- oder Systemanforderungen. Es ist ein optimierter Kernel, der darauf ausgelegt ist, eine niedrige Latenz, konsistente Reaktionszeit und Determinismus aufrechtzuerhalten. Im Vergleich dazu konzentriert sich ein Standard-RHEL-Kernel auf durchsatzorientierte Operationen und eine faire Aufgabenplanung. Der Echtzeitkernel ist auch als kernel-rt
bekannt oder preempt-rt
.
Der einfachste Weg, einen Echtzeit-Kernel zu identifizieren, ist die Ausführung von uname -r
Befehl auf dem Terminal und suchen Sie dann nach rt Schlüsselwort in der Kernel-Version. Wenn rt fehlt, verwendet das System den Standard-Kernel.
Die folgende Ausgabe ist ein Beispiel:
#uname -r
3.10.0-1127.10.1.rt56.1106.el7
Einige wichtige kernel-rt
Mechanismen umfassen:
- Die Priorität einer Aufgabe wird unter hoher Last überprüft (1-99).
- Tasks mit hoher Priorität (99) werden für die CPU-Ausführung bevorzugt.
- Verwendet nicht die Completely Fair Scheduling (CFS)-Richtlinie.
- Verwendete Planungsrichtlinien sind SCHED_FIFO oder SCHED_RR.
- Behält eine Ausführungszeit mit geringer Latenz bei.
- Bietet die Möglichkeit, Reaktionszeiten zu messen, aufzuzeichnen und zu konfigurieren.
Um weiter zu verstehen, wie kernel-rt
sich von einem Standardkernel unterscheidet, erklärt das folgende Diagramm, wie kernel-rt
verwendet wird hält niedrige Latenz- und Antwortzeiten im System aufrecht.
Im obigen Diagramm blau Diagramme stellen die Antwortzeit (ms) auf einem optimierten Standard-RHEL7-Kernel dar, während grün Punkte stellen die Antwortzeit (ms) auf einem optimierten RHEL7 kernel-rt
dar . Der grüne Abschnitt zeigt Konsistenz, geringe Latenz und geringe Reaktionszeit. Weitere Informationen zu diesem Diagramm und den zugehörigen Tests finden Sie im offiziellen Red Hat-Leitfaden „Why Use Red Hat Enterprise Linux for Real Time to Optimize Latency.“
Im Folgenden habe ich einige weitere Unterschiede aufgeführt, die für den Vergleich von RHEL für Echtzeit mit Standard-RHEL wichtig sind:
- Kexec und vmcore – Installation und Konfiguration sind die gleichen wie bei Standard-RHEL.
- Module von Drittanbietern – Alle Module müssen mit
kernel-rt
neu kompiliert werden vor der Verwendung. irqbalance
Daemon - standardmäßig deaktiviert.- Planungsrichtlinie - Nur SCHED_FIFO oder SCHED_RR wird verwendet.
- Interrupt (IRQs) – Verwendet dedizierte CPUs, um Prozesse voneinander zu isolieren.
RHEL für Echtzeit installieren
Lassen Sie uns eine schnelle Installation durchführen und die anderen Pakete beobachten, die Teil eines kernel-rt
sind Installation. Ein separates ISO-Image von kernel-rt
steht zur frischen Versorgung zur Verfügung. Ein Benutzer/Administrator kann auch den kernel-rt
installieren RPM-Paket auf einem vorhandenen Standard-RHEL-System, gefolgt von einem Neustart.
Schritt 1 :Laden Sie das ISO-Image namens RHEL for Real-Time herunter aus dem Red Hat Kundenportal und Bereitstellung. Sie können auch eine vorhandene Standard-RHEL-Box verwenden und den rhel-7-server-rt
aktivieren Repository zum Abrufen von kernel-rt
Pakete.
Schritt 2 :Führen Sie eine Gruppeninstallation durch, um alle RT-spezifischen Pakete gleichzeitig zu installieren.
Schritt 3 :Alle abhängigen Pakete prüfen.
Schritt 4 :Starten Sie das System neu und wählen Sie dann kernel-rt
aus der Boot-Konsole.
Benutzer sollten die RT-Gruppeninstallation durchführen, da sie alle notwendigen kernel-rt
bereitstellt abhängige Pakete. Die folgende Tabelle zeigt kurze abhängige Paketdetails:
- kernel-rt - Echtzeit-Kernel
- rt-setup - Wichtigstes Paket für die Einrichtung der RT-Umgebung.
- rtctl - Konfiguriert Scheduling-Prioritäten für Kernel-Threads.
- rt-test, rt-checks, rteval - Wird verwendet, um Systemfähigkeiten und -lasten zu testen.
Lassen Sie mich Ihnen ein sehr kurzes reales Szenario geben, das veranschaulicht, warum die Installation der RT-Gruppe von entscheidender Bedeutung ist. Einer der führenden Telekommunikationskunden führte den Echtzeit-RHEL-Kernel (3.10.0-693.11.1.rt56.632.el7) als Drei-Blade-Clusterumgebung auf dem HP ProLiant BL460c Gen9-Computer aus. Sie beobachteten Verkehrsverzögerungen und Zeitüberschreitungen in der Clusterumgebung. Eine große Anzahl von UDP-Self-Heartbeat-Paketen (HB) fehlte oder wurde gelöscht. Wir haben festgestellt, dass es keine Probleme mit Netzwerkkarten oder Clustermodulen gab, nachdem wir pcap
analysiert hatten und strace
Pakete. Die weitere Diagnose ergab, dass das rt-setup
Paket fehlte, weil kernel-rt
wurde ohne eines der abhängigen Pakete zwangsweise installiert.
Umgebung | Verpasste HBs in 7 Tagen | Verpasste HBs in 7 Tagen mit rt-setup |
---|---|---|
hostname-a12 | 138 | 0 |
hostname-a13 | 113 | 0 |
hostname-a14 | 118 | 5 |
Dieses rt-setup
Paket ist verantwortlich für die Konfiguration und Ausführung von rt-entsk
Daemon, der die IPI-Generierung und die Verzögerung von Echtzeitaufgaben verhindert.
Die folgenden Aufzählungspunkte zeigen einige der wichtigsten Funktionen von rt-setup
(v2.0-6):
- Erstellt Echtzeitgruppen.
- Fügt Echtzeit-Grenzwertkonfiguration für PAM hinzu.
- Fügt
/usr/bin/rt-setup-kdump
hinzu um kdump in RT zu konfigurieren. - Fügt udev-spezifische Regeln für Threaded-IRQs und
/dev/rtc
hinzu zugreifen. - Fügt
/usr/bin/slub_cpu_partial_off
hinzu umcpu_partials
auszuschalten in der SLUB. - Fügt den net-socket timestamp statischen Schlüssel-Daemon hinzu (
rt-entsk
).
Schluss machen
Es lohnt sich, einen Echtzeit-Kernel auszuführen und sein Potenzial zu evaluieren, da viele Anwendungen davon profitieren können. Kernel-rt
kann optimiert werden, um Leistungsprobleme weiter zu reduzieren. Tools wie ftrace
werden mit RHEL für Echtzeit bereitgestellt und sind sehr nützlich zum Analysieren und Debuggen von Latenzproblemen. Diese Details sind jedoch nicht Gegenstand dieses Artikels.
Den Echtzeit-Kernel gibt es schon lange, aber viele Systemadministratoren sind sich nicht sicher, wie sie damit arbeiten sollen. In diesem Artikel habe ich definiert, was der Echtzeitkernel tut. Ich habe Ihnen auch Informationen zur Installation gegeben. Vielleicht hilft der Echtzeit-Kernel Ihrem Unternehmen dabei, noch mehr Linux-Leistung zu erzielen!
[ Kostenloser Online-Kurs:Technischer Überblick zu Red Hat Enterprise Linux. ]