2661991

Ananicy: Prioritäten für Linux-Programme festlegen

02.07.2022 | 08:15 Uhr | David Wolski

Linux-Distributionen sind für einen breiten Einsatzzweck geschaffen und sollen unterschiedlichen Rollen gerecht werden, Server und Desktop. Für Programme auf dem Desktop gibt es Optimierungspotenzial per Anpassung der Prozesspriorität.

Programme und Hintergrundprozesse müssen sich die verfügbaren Systemressourcen teilen. Sind diese belegt, warten die laufenden Prozesse aufeinander. Wie diese Warteschlange aufgebaut ist und nach welcher Logik die laufenden Prozesse bei CPU und I/O-Operationen zum Zug kommen, entscheidet die Scheduler des Linux-Kernels. In universellen Linux-Distributionen, Debian und Ubuntu beispielsweise, arbeiten die Scheduler auf eine ausgeglichene Verteilung der Ressourcen hin. Nur wenige Dienste wie die Soundserver Pulse Audio und Pipewire erhalten von Hause aus eine höhere Priorität bei der Zuweisung von CPU-Zyklen.

Nachjustierung für den Desktop

Den Ansatz, vordefinierten Programmen und Prozessen eine höhere oder auch niedrigere CPU- und I/O-Priorität zu geben, greift das hier vorgestellte Tool Ananicy auf. Es schaltet eine automatische Vergabe von Prioritäten ab und arbeitet mit einer Datenbank bekannter Programme und Spiele, um diesen den Vorzug zu geben. Das Ziel ist dabei, typischen Vordergrundprozessen den Vorrang und länger laufenden Prozesse wie beispielsweise Packern eine geringere Priorität zu geben, damit der Desktop reaktionsfreudig bleibt. Am meisten profitieren Desktopsysteme mit bescheidener Hardwareausstattung von Ananicy. Für Server ist diese Optimierung nicht geeignet, zumal sich bei der typischen Arbeitslast dieser Systeme keine Verbesserung der Gesamtperformance durch diese Priorisierung feststellen lässt. Der Name von Ananicy steht kurz als Abkürzung für „Another Auto Nice Daemon“, was sich von der Funktionsweise ableitet. Denn es greift über die Systemtools „nice“ und „ionice“ in die Priorisierung ein.

CPU-Priorität: Diese wird unter allen Unixähnlichen Systemen vom Nice-Wert festgelegt. „Nice“ bedeutet dabei tatsächlich „nett“, denn der Wert bestimmt, wie nett ein Programm zu den anderen laufenden Prozessen ist. Je höher die Dringlichkeit, desto geringer und weniger „nett“ ist folglich der Nice-Wert. Der Wert kann zwischen –20 bis +19 liegen, wobei –20 die höchste Priorität angibt und 19 die niedrigste.

Ist ein Programm schon gestartet, so kann das Kommandozeilentool nice den Nice-Wert nachjustieren. Anwender ohne root-Berechtigung dürfen nur Nice-Werte in eine Richtung zwischen 0 und 19 setzen und damit nur die eigenen Prozesse im Rang zurückstufen. Mit root-Recht darf man mit negativen Nice-Werten die Priorität auch hochstufen. Damit dieser Rang vom Linux-Kernel beachtet wird, muss die Funktion „Autogroup“ (siehe Kasten) von aktuellen Linux-Distributionen deaktiviert sein, was Ananicy selbständig übernimmt.

I/O-Priorität: Das Pendant zu nice ist ionice für den Vorrang bei Datenträgerzugriffen. Dieser Wert folgt in der Logik dem Nice-Wert für CPU-Prioritäten und wirkt sich auf den I/O-Scheduler „CFG“ des Kernels aus, der diese Rangliste berücksichtigt. Der Kernel kann mit verschiedenen I/O-Planern arbeiten und es ist davon abhängig, welcher aktiviert ist. Die Scheduler „noop“ und „deadline“, die aktuelle Linux-Distributionen für SSD- und NVME-Laufwerke automatisch wählen, ignorieren diese Rangfolge und überlassen die Abarbeitung der geplanten I/O-Operationen den Controllern dieser Laufwerke. Auch die Nutzung der Schedulers CFQ und BFQ würde bei diesen Datenträgern keine merklichen Verbesserungen durch ionice bringen.

Ananicy als Systemdienst einrichten

Regeln zur Optimierung: Ananicy identifiziert die Prozesse und wendet dann von vielen Anwendern gesammelte Erfahrungswerte an, um den Desktop reaktionsfreudig zu halten.
Vergrößern Regeln zur Optimierung: Ananicy identifiziert die Prozesse und wendet dann von vielen Anwendern gesammelte Erfahrungswerte an, um den Desktop reaktionsfreudig zu halten.

Der Entwickler hinter Ananicy hat die Prozesspriorisierung als Systemd-Dienst umgesetzt und in Python 3 geschrieben. Es gibt damit wenige Abhängigkeiten von zusätzlich benötigten Bibliotheken und ein Kompilieren des Tools ist auch nicht nötig. Auf https://github.com/Nefelim4ag/Ananicy gibt es eine universelle Anleitung zur Einrichtung und ein handliches Installations-Script für Debian/Ubuntu. Ananicy ist damit unkompliziert eingerichtet und falls sich keine merkliche Verbesserung auf einem Desktopsystem einstellt, ist diese Prozessoptimierung auch schnell wieder abgeschaltet und sauber deinstalliert. Auch für Arch Linux und Manjaro findet sich ein fertiges Paket im Arch User Repository. Das Tool lädt also auf diesen Distributionen zum Experimentieren ein.

In Debian und Ubuntu installiert der Befehl 

sudo apt install git schedtool 

im Terminal Git und ein weiteres Systemwerkzeug, das die gegenwärtige Priorität von Prozessen ausliest. Dann holt das Kommando 

git clone https://github.com/Nefelim4ag/Ananicy.git 

die Dateien von Github und 

./Ananicy/package.sh debian 

erstellt passend zum System ein DEB-Paket, das auch in Raspberry-Pi-OS funktioniert. Die Eingabe 

sudo dpkg -i ./Ananicy/ananicy-*.deb 

installiert das erzeugte Paket. Danach ist noch der Befehl

sudo systemctl enable --now ananicy 

erforderlich, um den Ananicy-Dienst zu aktiveren. Der Aufruf zeigt, welche Nice-Werte Ananicy dynamisch anpasst. Ein laufender Firefox würde beispielsweise gleich die Priorität –3 zugewiesen bekommen. Diese Optimierungen bezieht Ananicy aus fertigen Konfigurationssets im Verzeichnis „/etc/ananicy.d“, die optimale Erfahrungswerte für bekannte Programme enthalten. Diese werden anhand ihres Prozessnamens identifiziert. 

Priorisierung überprüfen: Der Prozessmonitor htop, in allen Linux-Distributionen leicht nachinstallierbar, zeigt den gesetzten Nice-Wert in der Spalte „NI“ an – hier für Inkscape.
Vergrößern Priorisierung überprüfen: Der Prozessmonitor htop, in allen Linux-Distributionen leicht nachinstallierbar, zeigt den gesetzten Nice-Wert in der Spalte „NI“ an – hier für Inkscape.

Der Dienst überwacht nun, welche Prozesse neu hinzukommen, und wendet die Regeln zur Optimierung auf diese gleich nach deren Start an. Wird beispielsweise unter Gnome die ressourcenhungrige Grafikbearbeitung Inkscape aufgerufen, zeigt der Prozessmonitor htop, sofern die Spalte „NI“ (für den Nice-Wert) aktiviert ist, dass dessen Nice-Rang bereits auf –10 angepasst wurde. Aktuell verfügt Ananicy über 200 Regelsets für verschiedene Prozesse und auch für Programme unter Wine. Das Systemd-Dienst kann mit 

sudo systemctl stop ananicy

jederzeit angehalten und mit 

sudo systemctl disable ananicy

auch wieder permanent deaktiviert werden. Stellt sich auf dem Desktop aufgrund der Hardwarevoraussetzungen keine merkliche Verbesserung von Reaktionszeiten ein, so deinstalliert 

sudo apt remove ananicy 

die Prozessoptimierung wieder komplett vom System.

Weitere Lesetipps:

16 Linux-Funktionen, die kaum einer kennt

Festplatten & SSDs: Tipps zum Umgang unter Linux

PC-WELT Marktplatz

2661991