Die Tipps des Monats

Pavel Ignatov, 123RF

ADMIN-Tipps

Hier finden Sie eine Auswahl der im wöchentlichen ADMIN-Newsletter erscheinenden Praxistipps.
Das Titelthema im ADMIN 04/14 "Vernetzt speichern" sind Netzwerkdateisysteme, etwa Samba 4, verteilter Storage mit Ceph & GlusterFS und der Unix-Klassiker ... (mehr)

Beobachtungsstation

Im ADMIN-Magazin 02/2014 haben wir kürzlich »sar« als Tool für alle Arten von Performance-Statistiken vorgestellt. Es sammelt und protokolliert ein breites Spektrum an Messwerten, gibt sie auf der Kommandozeile aus und kann sie mithilfe zusätzlicher Software auch in Grafiken verwandeln. Doch Sar ist nicht alternativlos. Ein weiteres Tool geht sogar noch ein Stück darüber hinaus: Der Performance-Co-Pilot PCP.

Während Sar aus dem Solaris-Universum stammt, kommt PCP ursprünglich aus der SGI-Welt. Inzwischen ist es aber auch für Linux, OS X, Solaris, AIX, IRIX und sogar Windows verfügbar. Seine Architektur orientiert sich am Client/Server-Modell: Es gibt einerseits dezentrale Kollektoren, die vor Ort Performance-Daten aus verschiedenen Quellen einsammeln – die Performance Metrics Domain Agents (PMDAs). Jede Quelle gehört zu einer sogenannten Domäne, innerhalb derer sich alle Datenlieferanten dieselben Zugriffsmethoden und Semantiken teilen. Domänen können etwa der Linux-Kernel, eine Datenbank, ein Service oder eine Applikation sein. Alle Agents beliefern einen oder mehrere Performance Metrics Collector Daemons (pmcd).

Den Quellen stehen andererseits Monitore gegenüber, die die gesammelten Daten mit Zeitmarken versehen und ausgeben. Die Daemons und Monitore lassen sich bei Bedarf beliebig auf verschiedene Rechner verteilen – das erlaubt das Remote Monitoring und die Skalierung. Die mitgelieferten Agents stellen unter Linux schon fast tausend verschiedene Messwerte bereit, der Anwender kann aber auch eigene Agents programmieren. Was genau für Messwerte abfragbar sind, verrät das Kommando »pminfo« , das die Namen aller Metriken listet. Die Werte für eine oder mehrere einzelne Metriken liefern »pmval« und »pmdumptext« (per Default im Sekundenabstand). Dabei können beliebige Metriken in einer Ausgabetabelle kombiniert werden. Schließlich erzeugt »pmstat« einen groben Systemüberblick.

Alle Messwerte sind nicht nur ad hoc abfragbar, sondern können für eine nachträgliche Analyse in Logs gespeichert werden. Installiert man das optionale GUI-Package von PCP, lassen sich die Messwerte aus den Logs oder aus dem Live-Betrieb auch zu Charts verarbeiten. Eine ganze Anzahl fertig konfigurierter Charts gehört zum Lieferumfang, eigene sind leicht zu erstellen. Dabei lassen sich verschiedene Charts so synchronisieren, dass sie dieselbe Zeitachse verwenden.

Kurz: Mit einer ähnlichen Intention wie Sar geht PCP in Sachen Skalierbarkeit und Erweiterbarkeit, beim Remote Monitoring und auch beim grafischen Aufbereiten der Messdaten noch einen Schritt weiter. Außerdem unterstützt es mehr Plattformen.

Prozessorauslastung begrenzen

Was, wenn die Prozessorleistung im Rechner nicht mehr ausreicht, um alle laufenden Prozesse zufriedenzustellen? Im Idealfall kein großes Problem: Das System verteilt die verfügbaren Rechenzyklen gerecht an die einzelnen Antragsteller und arbeitet auf Hochtouren, um alles abzuarbeiten. Nötigenfalls sorgt das Programm Nice dafür, dass wichtige Prozesse ein größeres Stück vom Rechenkuchen abbekommen.

Doch Nice legt nur die relative Priorität eines laufenden Prozesses in Bezug zu anderen fest. Das Programm CPUlimit verfolgt einen anderen Ansatz: Es begrenzt die absolute Prozessorauslastung, die ein Prozess verantworten darf. Denn in der Praxis schmeckt es der Hardware manchen Rechners nicht, wenn er über lange Zeit mit voller Kraft läuft. Auch wenn in der Theorie die Lüftung für den nötigen Ausgleich sorgen soll, kommt es in der Realität dennoch häufig nach einigen Stunden oder gar Tagen der Vollanstrengung zu tödlicher Hitzeentwicklung. Obwohl sich heutzutage ein Rechner selbst abschaltet, bevor der Hardware-Hitzetod eintritt, gilt es, zumindest bei problematischen Rechnern die Prozessorauslastung zu begrenzen.

CPUlimit steht bei manchen Linux-Distributionen als fertiges Paket im Repository und lässt sich ansonsten mit Make unter Linux, BSD und OS X kompilieren.

Das Programm nimmt zunächst einen Zielprozess entgegen, entweder per Prozess-ID mit »-p« oder »--pid« oder per Dateiname mit »-e« oder »--exe« . Zur genauen Bestimmung des Pfadnamens einer ausführbaren Datei dient die Option »-P« oder »--path« .

Es folgt die Definition der maximalen CPU-Last, die ein Prozess verursachen darf. Am wichtigsten ist die obligatorische Option »-l« oder »--limit« , die diese Zahl in Prozent definiert. Das folgende Kommando begrenzt beispielsweise den Firefox-Browser auf eine CPU-Last von höchstens 50 Prozent:

cpulimit --exe firefox -l 50

Zum Funktionieren benötigt das Programm Root-Rechte.

Das Limit liegt bei Systemen mit einem Prozessor zwischen 1 und 100. Beim Start fragt CPUlimit die Anzahl verfügbarer Prozessoren beziehungsweise Kerne ab und bei vier Prozessoren erhöht sich beispielsweise die Höchstgrenze auf 400 Prozent. Die Option »-c« oder »--cpu« legt die Zahl der Prozessoren manuell fest.

Verwendet man den Dateinamen zur Identifikation eines zu zügelnden Prozesses, bezieht sich CPUlimit auf den ersten Prozess im »/proc« -Verzeichnis, auf den der Name zutrifft. Bei mehreren gleichnamigen Prozessen laufen die anderen also ungehemmt weiter, für die genauer gezielte Limitierung muss in dem Fall die Prozess-ID her.

Existiert hingegen kein Prozess passenden Namens, wartet CPUlimit auf einen solchen. Wird dieser gestartet, drosselt das Programm ihn den Angaben entsprechend. Nach dessen Ende wartet CPUlimit weiter, bis erneut ein passender Prozess auftaucht. Dieses lauernde Verhalten unterbindet die Option »-z« oder »--lazy« . Mit ihr beendet sich CPUlimit, falls es keinen Prozess mit dem angegebenen Namen findet oder wenn dieser beendet wird.

Wer ausufernde Prozesse etwas härter angehen möchte, verwendet die Option »-k« oder »--kill« . Sobald der Zielprozess das verordnete Limit überschreitet, schießt CPUlimit ihn ab. Glücklicherweise ist die Todesstrafe in der Welt von CPUlimit umkehrbar: Einen irrtümlich hingerichteten Prozess stellt es mit der Option »-r« oder »--restore« wieder her.

Daneben lässt sich mit dem Aufruf von CPUlimit ein Zielprozess auch gleich mitstarten. Dazu hängt man den aufzurufenden Befehl an die CPUlimit-Kommandozeile an, statt eine Prozess-ID oder einen Prozessnamen zu definieren:

cpulimit -l 50 firefox

CPUlimit funktioniert, indem es die überwachten Prozesse bei Überschreiten ihres CPU-Limits mit dem System-Call "SIGSTOP" anhält und dann mit "SIGCONT" weiterlaufen lässt. Programme, die solche Vorgänge registrieren, reagieren darauf möglicherweise mit Warnmeldungen.

CPUlimit gehört in die Kategorie von Admin-Tools, die in der Theorie überflüssig sein sollten. In der Praxis weiß der Admin aber, dass eine übermäßige CPU-Auslastung ein System vor Probleme stellen kann und er kennt häufig auch seine Pappenheimer. Mit CPUlimit kriegt er Anwendungen mit der Tendenz zur Überanstrengung in den Griff und verhindert die Dauerauslastung seiner Prozessoren.

Infos

  1. Performance-Co-Pilot:: http://oss.sgi.com/projects/pcp/

Ähnliche Artikel

comments powered by Disqus
Mehr zum Thema

ADMIN-Tipp: Prozessorauslastung begrenzen

Wenn Prozesse die CPU ins Schwitzen bringen: CPUlimit überredet einzelne Anwendungen, ihren CPU-Bedarf zu zügeln.

Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023