Beiträge von A.E. im Thema „Wie preemptiv ist Dein Kernel?“

    Hallo, ich befasse mich gerade mit den verschiedenen Kernel Versionen für Linux. Deren Module, Varianten und was die Parameter dahinter bedeuten. Nun habe ich gelesen, dass u.A. die hinterlegte Preemtion Option dafür zuständig ist, den Grad der Multitasking-Fähigkeit zu beeinflussen.

    Kurze Erläuterung: https://de.abcdef.wiki/wiki/Kernel_preemption

    Folgende Modis stehen hier zur Verfügung:

    • PREEMPT_NONE: Der Kernel ist nicht preemptiv. Er kann nicht unterbrochen werden, um die Ausführung anderer Aufgaben zu ermöglichen.
    • PREEMPT_VOLUNTARY: An bestimmten Punkten lässt er sich unterbrechen - für schnellere Reaktionszeit, aber keine volle Echtzeitfähigkeit.
    • PREEMPT_DYNAMIC: Zwischenstufe oder Kompromiss zwischen den beiden oben genannten. Hier kann er unterbrochen werden um andere Aufgaben auszuführen. Bessere Reaktionsfähigkeit mit einer gewissen Echtzeitfähigkeit, ohne die Stabilität zu gefährden.
    • PREEMPT_RT: RealTime bietet die höchste Echtzeitfähigkeit. Ein Echtzeit-Kernel hat für diese Option allerdings ein Patch-Set, welches weitere, komplexere Angaben im Hauptzweig benötigt.
    • PREEMPT_DESKTOP: Erweiterter Modus von Voluntary. Weitere Preemtion-Punkte werden hier im Code quasi "frei geschaltet" um die Reaktionszeit auf Desktop-Systemen zu verbessern.

    Wie fast Alle hier (denke ich zumindest) verwende ich den Standard Kernel meiner Distribution. Die ausgelieferte Version ist hier nebensächlich.

    Eine Ausgabe von uname -v zeigt:

    Mein verwendeter Kernel ist mit der "dynamic" Option parametriert worden. Nun habe ich allerdings gelesen, dass für ein Desktop-System wie ich es primär nutze, mit einer Umgebung wie GNOME, xfce, MATE oder KDE und die vielzahl an Programmen die man so braucht, eine PREEMPT_DESKTOP Option dazu beitragen kann, ein flüssigeres Benutzererlebnis zu gewährleisten. Die Systemantwort soll auf Benutzereingaben und Desktop-Aufgaben verbessert sein. Nicht das mein System jetzt langsam ist, ganz im gegenteil. Aber, ich bin darauf bedacht, das die Software-Ebene auf den bestmöglichen Weg und am effektivsten mit der Hardware kommuniziert. Und natürlich alle Features voll ausnutzen. Auch denke ich, um so optimierter das Betriebssystem läuft und z.B. die CPU nutzt, die Last und somit der Stromverbrauch verbessert wird. Für meine PI's oder z.B. kleine ThinClients nicht uninteressant.

    Daher interessiert mich jetzt, welche Option wird am meisten in der Standardvariante ausgeliefert, ob nun Distributed, Mainline, Stable oder Vanilla spielt keine Rolle.

    Der einfachste Weg auszulesen, wie der Kernel konfiguriert (ausgeliefert) wurde ist, man schaut sich die config.gz Datei im /proc Verzeichnis an. Mit diesem Befehl sieht die Ausgabe wie folg aus:

    zcat /proc/config.gz | grep PREEMPT

    Wer in der Abstimmung einmal angibt, welche Option in seinem Kernel eingestellt ist, spart mir schon mal viel Zeit und Arbeit, diverse Distributionen in einer VM zu installieren und selber nach zu schauen. Zumindest hat man eine Angabe, welche Option am meisten vertreten ist. Wer die Angabe "PREEMPT_DESKTOP=y" bei sich erhält, würde ich mich freuen, wenn dann noch gepostet wird, welche Distribution und welcher Kernel verwendet wird.

    Danke für Eure Forschungsergebnisse :)