GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Arbeiten mit dem Echtzeit-Kernel für Red Hat Enterprise Linux

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 um cpu_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. ]


Linux
  1. Arbeiten mit Datenströmen auf der Linux-Befehlszeile

  2. Arbeiten mit Pipes auf der Linux-Befehlszeile

  3. Registrieren Sie Red Hat Enterprise Linux und hängen Sie ein Abonnement mit Ansible an

  4. Konfigurieren einer IPv6-Adresse in Red Hat Enterprise Linux 7 und 8

  5. Erstellen eines benutzerdefinierten Red Hat Enterprise Linux 7-Images für Microsoft Azure

RHEL 6 – Schritt-für-Schritt-Installationsanleitung für Red Hat Enterprise Linux Server

Red Hat Enterprise Linux (RHEL) 8 Installationsschritte mit Screenshots

Installieren Sie Red Hat Enterprise Linux Server vom ISO-Image

So installieren Sie Red Hat Enterprise Linux 8 (RHEL 8)

Patchen Sie den Raspberry Pi Linux Kernel mit KernelCare KOSTENLOS!

Jumpstart-Leitfaden für Oracle Enterprise Linux mit Screenshots