AA_123rf-29611510_alphaspirit-123RF.jpg

© alphaspirit, 123RF

Loadwatch steuert Prozesse abhängig von der aktuellen Systemlast

Lastabhängig

Linux bietet zahlreiche praktische Werkzeuge, die viel Arbeit sparen und für Komfort sorgen – sofern man sie denn kennt und einzusetzen weiß. Loadwatch gehört zu den weniger bekannten kleinen Helfern.

Hintergrunddienste sollen, wie der Name schon sagt, ihre Arbeit im Verborgenen erledigen, ohne dass sie den Anwender stören. Schießt eine leistungshungrige Anwendung da quer, muss man sich selbst helfen. Ein möglicher Ansatz dazu sähe wie folgt aus: Fällt die Systemlast über einen längeren Zeitraum unter einen definierten Wert, startet ein Daemon Aufgaben, die viel Rechenzeit benötigen und damit normalerweise die interaktive Arbeit am Rechner stören würden. Unter Linux lässt sich dieses Prinzip leicht mit einfachen Skripten und Anwendungen umsetzen.

Fremdgesteuert

Wichtige Systeminformationen, wie etwa die Daten zur aktuellen und bisherigen Rechnerauslastung, stellt Linux in Textform im Proc-Dateisystem unter /proc/ zur Verfügung. Zum Auslesen der Informationen benötigen Sie keine komplizierten Routinen: Auch als schlichter User können Sie von einem Terminal aus mit cat /proc/loadavg den Inhalt der jeweiligen Datei ausgeben (Listing 1). Die Bedeutung der einzelnen Zahlen schlüsselt die sehr ausführliche Manpage man 5 proc auf. Suchen Sie darin mit /loadavg nach der entsprechenden Passage, dann erfahren Sie, dass sich die ersten drei Angaben auf die Systemlast laufender (running, also mit R gekennzeichneter) Prozesse in den letzten 1, 5 und 15 Minuten beziehen.

Listing 1

$ cat /proc/loadavg
2.83 3.02 2.95 2/580 1462

Loadwatch [1] klinkt sich nun in diesen Bereich ein: Das Programm prüft regelmäßig die Höhe der Systemauslastung und hält, sobald die Last eine vorab definierte Schwelle überschreitet, einen zuvor ausgewählten Prozess an und aktiviert ihn erst nach dem Unterschreiten einer zweiten Schwelle automatisch wieder. Ein zweites Programm, lw-ctl, ermöglicht es, die von Loadwatch gesteuerten Prozesse von außen zu kontrollieren. Das Tool kommuniziert dazu mit Loadwatch und erlaubt so beispielsweise, gerade angehaltene Prozesse wieder zu starten oder laufende zu stoppen.

Praxisbeispiel

Als Beispiel soll Loadwatch nun bei Leerlauf des Rechners den Bildbetrachter Digikam [2] starten und die Datenbanken des Programms automatisch und im Hintergrund aktualisieren, insbesondere die pHash-Fingerabdrücke [3] für unscharfe Bildersuchen und -vergleiche, ohne dass diese mit viel Rechenarbeit verbundene Aktion den gesamten Rechner lahmlegt. Dazu richten Sie das Programm ein (siehe Kasten "Loadwatch installieren") und rufen dann über Loadwatch Digikam auf.

Loadwatch installieren

Loadwatch findet sich bisher nur in den Paketquellen von Debian, aus denen sich auch Ubuntu bedient. Für alle anderen Distributionen müssen Sie das Programm selbst aus den Quelltexten übersetzen. Über das Paketverzeichnis von Debian [6] laden Sie die zwei für die Installation benötigten Dateien herunter: Das Archiv loadwatch_1.0+1.1alpha1.orig.tar.gz enthält den kompletten Quelltext der Anwendung, mit loadwatch_1.0+1.1alpha1-5.diff.gz erhalten Sie einen zusätzlichen Patch, der die Korrekturen für die letzten Alpha-Versionen enthält.

Speichern Sie beide Dateien in einem Verzeichnis Ihrer Wahl ab und wechseln Sie in einem Terminalfenster dorthin. Nun führen für die Installation die Anweisungen aus Listing 2 aus, die den Quellcode entpacken und den zugehörigen Patch einspielen. Zu guter Letzt führen Sie den üblichen Linux-Dreisatz aus, der das Programm kompiliert und am Ende nach /usr/local/ installiert.

Listing 2

$ tar xzf loadwatch_1.0+1.1alpha1.orig.tar.gz
$ cd loadwatch-1.1
$ zcat ../loadwatch_1.0+1.1alpha1-5.diff | patch -p1
$ ./configure && make && sudo make install

Das entsprechende Startkommando müssen Sie dabei allerdings ein wenig anpassen, denn einfach nur den Startbefehl von Digikam anzufügen, triggert bereits eine zu hohe Last. Die Initialisierung von Digikam benötigt bereits so viel Rechenzeit, dass Loadwatch umgehend in den Warte-Modus wechselt und das Programm wieder stoppt (Listing 3). Daher müssen Sie beim Aufruf ein oberes Limit angeben, sodass Digikam (oder eine andere von Loadwatch gesteuerte Anwendung) nicht schon gleich beim Start ausgebremst wird (siehe Tabelle "Loadwatch-Optionen"). Eine Alternative wäre es, zunächst mittels lw-ctr die Anwendung im RUN-Modus zu starten und dann nach WATCH zu wechseln (siehe Abschnitt "Handsteuerung").

Listing 3

$ loadwatch -- digikam
Wed Dec 16 16:00:56 2015: load too high, stopping.

Aus Erfahrung wissen wir vom Testrechner, dass dieser bis zu einer Last von 2 vernünftig arbeitet. Um bei Engpässen ausreichend Kapazitäten zu gewährleisten, setzen wir das obere Limit bei einer Last von 1,8 an (2 minus 10 Prozent). Da es immer einen Moment dauert, bis die Systemlast nach einer Lastspitze absinkt, sollte das untere Limit nicht zu tief liegen: Anderenfalls behindert Loadwatch die Ausführung des Programms unnötig lange. Daher setzen wir die untere Lastgrenze auf einen Wert von 1.6. Um mit lw-ctr auf den Prozess zugreifen zu können, richten wir zudem einen Socket im Verzeichnis /tmp/ ein. Den entsprechenden Aufruf mit allen Optionen zeigt Listing 4.

Listing 4

$ loadwatch -l 1.6 -h 1.8 -u /tmp/tst.loadwatch -- digikam

Wie erhofft startet das Programm nun ohne größere Probleme. Die Systemlast erreicht dabei zunächst nicht die kritische Grenze, da die Schwelle hoch genug liegt, um einen Start ohne Unterbrechungen zu gewährleisten. Im Menüpunkt Extras von Digikam erhalten Sie nun unter Wartung die Möglichkeit, die Datenbanken separat und gezielt zu aktualisieren (Abbildung 1). Tatsächlich erweisen sich die gewählten Parameter für den Testrechner als optimal: Das Aktualisieren der Datenbanken verläuft völlig unauffällig im Hintergrund, ohne dass die dafür benötigte Zeit sich ins Endlose ausdehnt. Ein Blick ins Terminal zeigt den Wechsel zwischen den beiden Zuständen, zudem erscheinen hier auch Meldungen des von Loadwatch gesteuerten Programms (Listing 5).

Abbildung 1: Digikam kann seine Datenbanken einzeln und gezielt aktualisieren.

Listing 5

[...]
Wed Dec 16 17:00:55 2015: load low, continuing.
Wed Dec 16 17:01:15 2015: load too high, stopping.
Wed Dec 16 17:03:45 2015: load low, continuing.
Wed Dec 16 17:03:55 2015: load too high, stopping.
Wed Dec 16 17:04:55 2015: load low, continuing.
digikam(8477)/digikam (core) Digikam::PreviewLoadingTask::execute: Cannot extract preview for  "32bit_8040963.tif"
digikam(8477)/digikam (core) Digikam::PreviewLoadingTask::execute: Cannot extract preview for  "32bit_8040963.tif"
Wed Dec 16 17:05:05 2015: load too high, stopping.
[...]

Loadwatch-Optionen

Option Funktion
-- Die Pseudo-Option trennt die Optionen des aufgerufenen Programms von denen für Loadwatch. Kollidieren die Optionen nicht, dürfen Sie den Trenner auch weglassen.
-h Last Obere Lastgrenze, bei der Loadwatch das gesteuerte Programm stoppt.
-l Last Untere Lastgrenze, bei der Loadwatch das Programm wieder fortsetzt.
-d Verzögerung Intervall in Sekunden zwischen den einzelnen Abrufen der Systemlast.
-n Kopien Anzahl an Kopien des kontrollierten Programms, die Loadwatch startet (Voreinstellung *1).
-u Socket Definiert die Socket-Datei zur Kommunikation mit lw-ctr.
-p PID Koppelt Loadwatch über die PID des Prozesses nachträglich an ein bereits laufendes Programm. Das funktioniert nicht immer und führt in seltenen Fällen zu Problemen mit dem System, wie etwa zu blockierten Input-Devices.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • deskTOPia: pogo
    Desktop-Accessoires wie Panel, Icons und Startmenü locken niemanden mehr hinter dem Ofen hervor. Pogo geht beim "Programmstart per Mausklick" vor allem in optischer Hinsicht neue Wege.
  • Ausbaustufe
    Die Moreutils ergänzen die Standard-Tools für die Shell um nützliche, aber zum Teil exotische Werkzeuge.
  • Neues auf den Heft-DVDs
    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial Ihres Rechners. Mit der Heft-DVD erhalten Sie nicht nur topaktuelle Distributionen, sondern auch die passenden Programme zu den Artikeln.
Kommentare

Infos zur Publikation

LU 10/2017: Daten retten & sichern

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...