Linux-CPU-Auslastung - So überprüfen Sie die CPU-Nutzung unter Linux

Veröffentlicht 27. August 2024

Die CPU-Auslastung ist eine wichtige Kennzahl zur Messung der Systemleistung und zur Identifizierung möglicher Engpässe in Linux-Systemen. Dieser Artikel untersucht das Konzept der CPU-Auslastung, Faktoren, die zu einer hohen CPU-Nutzung beitragen, sowie verschiedene Befehlszeilen-Tools und grafische Hilfsprogramme zur Überwachung und Fehlersuche der CPU-Auslastung in Linux-Umgebungen.

Verständnis der Linux-CPU-Auslastung

Was ist CPU-Auslastung?

Die CPU-Auslastung bezieht sich auf die Zeit, die der Prozessor mit der Verarbeitung von Anweisungen und der Ausführung von Aufgaben verbringt. Es ist eine Schlüsselmetrik zur Messung der Systemleistung und zum Auffinden potenzieller Engpässe. In Linux wird die CPU-Zeit basierend auf deren Prioritäten und den verfügbaren Systemressourcen an Prozesse vergeben. Jedem Prozess wird ein Anteil der Verarbeitungsleistung der CPU zugewiesen, und das Betriebssystem übernimmt die Planung und Ausführung dieser Prozesse.

Faktoren, die zu hoher CPU-Auslastung beitragen

Eine hohe CPU-Auslastung kann durch verschiedene Faktoren verursacht werden, die die Systemleistung und Reaktionsfähigkeit beeinträchtigen. Einige häufige Ursachen sind:
  1. Intensive Prozesse: CPU-intensive Aufgaben wie Videocodierung, wissenschaftliche Simulationen oder komplexe Berechnungen können einen großen Teil der CPU-Ressourcen beanspruchen und zu einer hohen Auslastung führen.

  2. Unzureichende Ressourcen: Wenn einem System nicht genügend Prozessorkerne oder Arbeitsspeicher zur Verfügung stehen, um die Arbeitslast effizient zu bewältigen, können Prozesse um begrenzte Ressourcen konkurrieren, was zu einer hohen CPU-Auslastung führt.

  3. Hintergrundaufgaben: Dienste, Dämonen und Hintergrundprozesse, die auf dem System laufen, können zu einer hohen durchschnittlichen CPU-Auslastung beitragen, auch wenn sie nicht aktiv vom Benutzer verwendet werden.

  4. Ineffiziente Anwendungen: Schlecht optimierte oder fehlerhafte Anwendungen können zu viele CPU-Zyklen verbrauchen, was zu einer hohen Auslastung führt und die Gesamtleistung des Systems beeinträchtigt.

Das Aufspüren und Beheben der Hauptursachen für eine hohe CPU-Auslastung ist wichtig, um eine optimale Systemleistung zu erhalten und ein reibungsloses Benutzererlebnis zu gewährleisten.

Verständnis der Linux-CPU-Lastdurchschnitte

CPU-Lastdurchschnitte geben ein Maß für die Systemauslastung über einen Zeitraum an. In Linux werden Lastdurchschnitte durch drei Zahlen dargestellt, die üblicherweise als "1-Minuten-, 5-Minuten-, 15-Minuten"-Durchschnitte angezeigt werden. Diese Zahlen geben die durchschnittliche Anzahl der Prozesse an, die sich während der jeweiligen Zeitintervalle in einem ausführbaren oder nicht unterbrechbaren Zustand befinden.

Ein Lastdurchschnitt von "1,0" bedeutet beispielsweise, dass im Durchschnitt ein Prozess während des angegebenen Zeitraums bereit war, ausgeführt zu werden oder auf Festplatten-I/O wartete. Ein Lastdurchschnitt, der höher ist als die Anzahl der CPU-Kerne, deutet darauf hin, dass Prozesse um CPU-Zeit konkurrieren und das System möglicherweise überlastet ist.

Es ist wichtig zu beachten, dass Lastdurchschnitte allein kein vollständiges Bild der CPU-Auslastung liefern. Sie sind ein Maß für die Systemlast, die die CPU-Nutzung, I/O-Wartezeit und andere Faktoren umfasst. Um ein genaueres Verständnis der CPU-Auslastung zu erhalten, wird empfohlen, Tools zu verwenden, die detaillierte CPU-Nutzungsstatistiken liefern, wie top, htop oder mpstat.

Überprüfung der Linux-CPU-Nutzung mit Befehlszeilen-Tools

Verwendung des "top"-Befehls

Der "top"-Befehl ist ein nützliches Tool zur Überprüfung von Systemressourcen in Echtzeit, einschließlich der Prozessorauslastung. Er zeigt eine dynamische Ansicht der laufenden Prozesse und ihrer Auswirkungen auf das System. Um den "top"-Befehl zu verwenden, öffnen Sie ein Terminal und geben Sie `top` ein.

Die Ausgabe des "top"-Befehls zeigt verschiedene Systemstatistiken, wobei die aktuelle CPU-Nutzungsinformation in der oberen rechten Ecke angezeigt wird. Hier ist ein Beispiel:

top - 10:00:00 up 2 days, 15:30,  1 user,  load average: 0.50, 0.75, 0.90
Tasks: 100 total,   2 running,  98 sleeping,   0 stopped,   0 zombie
%Cpu(s): 10.0 us,  5.0 sy,  0.0 ni, 85.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7974.2 total,   4515.4 free,   1678.3 used,   1780.5 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   5921.1 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  1234 john      20   0 1500000 300000  25000 S  25.0   3.7   1:30.00 stress-ng
  5678 jane      20   0  800000 150000  10000 S  10.0   1.8   0:45.00 video_encode

In diesem Beispiel zeigt die Zeile "%Cpu(s)" die Aufschlüsselung der CPU-Nutzung:

  • "us" (Benutzer): CPU-Zeit, die für die Ausführung von Benutzerprozessen verwendet wird
  • "sy" (System): CPU-Zeit, die für die Ausführung von Systemprozessen verwendet wird
  • "ni" (nice): CPU-Zeit, die für die Ausführung von niced (priorisierten) Prozessen verwendet wird
  • "id" (idle): CPU-Zeit im Leerlauf
  • "wa" (I/O-Wartezeit): CPU-Zeit, die auf I/O-Operationen wartet

Der top-Befehl zeigt auch eine Liste der laufenden Prozesse, sortiert nach ihrer CPU-Nutzung. Dies hilft dabei, zu identifizieren, welche Prozesse die meisten CPU-Ressourcen verbrauchen.

Verwendung des "htop"-Befehls

Der "htop"-Befehl ist ein interaktiver Prozess-Viewer und -Manager, der eine benutzerfreundliche Oberfläche zur Überprüfung von Systemressourcen, einschließlich der CPU-Auslastung, bietet. Um "htop" zu verwenden, müssen Sie es möglicherweise zuerst mit dem Paketmanager Ihrer Distribution installieren, zum Beispiel:
sudo apt install htop        # Für Debian/Ubuntu
sudo dnf install htop        # Für Fedora

Sobald es installiert ist, führen Sie htop im Terminal aus, um die Oberfläche zu starten:

htop

Die "htop"-Oberfläche zeigt Echtzeit-Systemstatistiken, einschließlich der Prozessornutzung pro Kern und einer Liste der laufenden Prozesse. Sie verwendet Farbcodierung und visuelle Grafiken, um die CPU-Auslastung anzuzeigen, was das Verständnis der Informationen erleichtert.

So überprüfen Sie die CPU-Nutzung mit "htop":

  1. Betrachten Sie den CPU-Meter oben in der Oberfläche, der die Gesamtauslastung der CPU und die Auslastung pro Kern zeigt.
  2. Überprüfen Sie die Liste der Prozesse und deren individuelle CPU-Nutzung in Prozent in der Spalte "%CPU".
  3. Verwenden Sie die Pfeiltasten zum Navigieren und die Taste "F1" für Hilfe und weitere Optionen.

Der "htop"-Befehl bietet eine einfache Möglichkeit, die CPU-Nutzung zu überprüfen und Prozesse interaktiv zu verwalten.

Überprüfung der CPU-Nutzung mit "mpstat"

Der "mpstat"-Befehl ist Teil des [sysstat](https://github.com/sysstat/sysstat)-Pakets und ermöglicht eine detaillierte Überprüfung der CPU-Auslastung. Um "mpstat" zu verwenden, installieren Sie das sysstat-Paket, falls es noch nicht verfügbar ist:
sudo apt install sysstat     # Für Debian/Ubuntu
sudo dnf install sysstat     # Für Fedora

Um die CPU-Nutzung mit "mpstat" zu überprüfen, verwenden Sie den folgenden Befehl:

mpstat

Dies zeigt CPU-Nutzungsstatistiken, einschließlich des Prozentsatzes der Zeit, die im Benutzermodus, Systemmodus, Leerlauf und in I/O-Wartezeit verbracht wird.

Um detailliertere Informationen zu erhalten, können Sie das Intervall und die Anzahl festlegen. Um beispielsweise die CPU-Nutzung alle 2 Sekunden insgesamt 5 Mal anzuzeigen:

mpstat 2 5

Der mpstat-Befehl ermöglicht auch die Anzeige der CPU-Auslastung pro Kern, indem Sie die Option -P gefolgt von der Kernnummer oder ALL für alle Kerne verwenden:

mpstat -P ALL

Dies zeigt CPU-Nutzungsstatistiken für jeden einzelnen Kern und bietet eine detailliertere Ansicht der CPU-Auslastung.

Überprüfung der CPU-Auslastung mit "vmstat"

Der "vmstat"-Befehl ist ein nützliches Tool, das Informationen über die durchschnittliche CPU-Nutzung, Speicherauslastung und Prozesse liefert. Um "vmstat" zu verwenden, führen Sie einfach aus:
vmstat

Dieser Befehl zeigt eine Zusammenfassung der Systemressourcennutzung, einschließlich Informationen über die CPU-Aktivität. Die CPU-Auslastungsinformationen werden in den letzten Spalten angezeigt:

  • "us" (Benutzer): Prozentsatz der CPU-Zeit, die für die Ausführung von Benutzerprozessen verwendet wird
  • "sy" (System): Prozentsatz der CPU-Zeit, die für die Ausführung von Systemprozessen verwendet wird
  • "id" (Leerlauf): Prozentsatz der CPU-Leerlaufzeit
  • "wa" (I/O-Wartezeit): Prozentsatz der CPU-Zeit, die auf I/O-Operationen wartet

Um Echtzeit-Updates der CPU-Auslastung zu erhalten, können Sie das Intervall und die Anzahl festlegen. Um beispielsweise die CPU-Nutzung alle 2 Sekunden insgesamt 5 Mal anzuzeigen:

vmstat 2 5

Der "vmstat"-Befehl bietet einen kurzen Überblick über die Systemressourcennutzung, einschließlich der CPU-Auslastung, und ermöglicht es Ihnen, die Gesamtleistung des Systems schnell zu überprüfen.

Verwendung des "sar"-Befehls für historische Analysen

Der "sar"-Befehl (System Activity Reporter) ist ein nützliches Tool zum Sammeln und Analysieren von Systemleistungsdaten, einschließlich der CPU-Auslastung über die Zeit. Er ist Teil des sysstat-Pakets. Um "sar" zu verwenden, installieren Sie das sysstat-Paket, falls es noch nicht verfügbar ist.

Um die CPU-Nutzung mit "sar" zu überprüfen, verwenden Sie den folgenden Befehl:

sar -u

Dies zeigt CPU-Nutzungsstatistiken, einschließlich des Prozentsatzes der Zeit, die im Benutzermodus, Systemmodus, Leerlauf und in I/O-Wartezeit verbracht wird.

Um CPU-Nutzungsdaten für ein bestimmtes Zeitintervall anzuzeigen, verwenden Sie die folgende Syntax:

sar -u -s <Startzeit> -e <Endzeit>

Ersetzen Sie <Startzeit> und <Endzeit> durch die gewünschten Start- und Endzeiten im Format "HH:MM:SS".

Der sar-Befehl ermöglicht auch die Erstellung von Berichten für einen bestimmten Zeitraum. Um beispielsweise einen Bericht über die CPU-Nutzung der letzten 24 Stunden mit 1-Stunden-Intervallen zu erstellen:

sar -u -s 00:00:00 -e 23:59:59 -i 3600

Der erstellte Bericht bietet eine historische Ansicht der CPU-Auslastung und ermöglicht es Ihnen, Trends und Muster über die Zeit zu analysieren.

Der "sar"-Befehl bietet viele Optionen zum Sammeln und Analysieren von Systemleistungsdaten. Weitere fortgeschrittene Verwendungsmöglichkeiten und Optionen finden Sie in der sar-Manpage.

Grafische Tools zur Überwachung der Linux-CPU-Nutzung

Glances: Ein Systemüberwachungstool

Glances ist ein Befehlszeilen-Tool, das einen Überblick über Systemressourcen, einschließlich der Prozessorauslastung, in einer visuell ansprechenden Oberfläche bietet. Es ermöglicht Echtzeit-Überwachung und zeigt wichtige Informationen in einem kompakten und leicht lesbaren Format an.

Um Glances auf Ihrem Linux-System zu installieren, können Sie den Paketmanager Ihrer Distribution verwenden. Zum Beispiel auf Debian- oder Ubuntu-basierten Systemen:

sudo apt install glances

Auf Fedora-, CentOS- oder RHEL-basierten Systemen verwenden Sie:

sudo dnf install glances

Sobald Glances installiert ist, können Sie es starten, indem Sie den Befehl ausführen:

glances

Die Glances-Oberfläche öffnet sich und bietet eine Echtzeit-Zusammenfassung verschiedener Systemressourcen, einschließlich der CPU-Auslastung.

Im CPU-Abschnitt der Glances-Ausgabe können Sie den Gesamtprozentsatz der CPU-Auslastung und eine Aufschlüsselung der CPU-Nutzung pro Kern sehen. Die CPU-Nutzung wird durch farblich kodierte Balken angezeigt, was es einfach macht, den Auslastungsgrad zu erkennen.

Glances bietet auch zusätzliche Informationen wie die Anzahl der laufenden Prozesse, Systemlastdurchschnitte und die CPU-intensivsten Prozesse. Diese Ansicht hilft Ihnen, schnell potenzielle Probleme oder ressourcenintensive Aufgaben zu identifizieren.

Glances bietet viele Konfigurationsoptionen und kann an Ihre spezifischen Überwachungsbedürfnisse angepasst werden. Es unterstützt auch verschiedene Ausgabemodi, einschließlich webbasierter Oberflächen und dem Export von Daten in externe Überwachungssysteme.

Andere grafische Überwachungstools

Zusätzlich zu Glances gibt es mehrere andere grafische Tools zur Überwachung der Prozessornutzung auf Linux-Systemen. Diese Tools bieten intuitive Oberflächen und visuelle Darstellungen der CPU-Auslastung, was die Verfolgung und Analyse der Ressourcennutzung erleichtert. Einige beliebte grafische Überwachungstools sind:
  1. GNOME-Systemüberwachung: Dies ist das Standard-Systemüberwachungstool für die GNOME-Desktop-Umgebung. Es bietet eine grafische Ansicht der CPU-Nutzung zusammen mit anderen Systemressourcen wie Speicher- und Festplattennutzung. Die GNOME-Systemüberwachung ermöglicht Echtzeit-Überwachung und die Anzeige der CPU-Nutzung pro Prozess, was es bequem macht, ressourcenintensive Anwendungen zu identifizieren.

  2. KDE-Systemüberwachung (KSysGuard): Die KDE-Systemüberwachung ist das entsprechende Überwachungstool für die KDE Plasma-Desktop-Umgebung. Es bietet ähnliche Funktionen wie die GNOME-Systemüberwachung und stellt eine grafische Darstellung der CPU-Auslastung bereit, die es ermöglicht, einzelne Prozesse zu überwachen. Die KDE-Systemüberwachung enthält auch fortgeschrittene Funktionen wie das Einrichten von Warnungen und die Erstellung benutzerdefinierter Überwachungssensoren.

  3. Conky: Conky ist ein anpassbarer Systemmonitor, der so konfiguriert werden kann, dass er verschiedene Systeminformationen, einschließlich der CPU-Nutzung, auf dem Desktop anzeigt. Es bietet eine leichtgewichtige unflexible Möglichkeit, die CPU-Auslastung in Echtzeit zu überwachen. Conky ermöglicht es Ihnen, benutzerdefinierte Skripte und Konfigurationen zu erstellen, um die angezeigten Informationen an Ihre spezifischen Bedürfnisse anzupassen.

  4. Xfce-Taskmanager: Für Benutzer der Xfce-Desktop-Umgebung ist der Xfce-Taskmanager ein einfaches und unkompliziertes Tool zur Überwachung von Systemressourcen, einschließlich der CPU-Nutzung. Es bietet eine übersichtliche Oberfläche, die CPU-Auslastungsprozentsätze anzeigt und es ermöglicht, laufende Prozesse zu verwalten.

Diese grafischen Überwachungstools bieten eine benutzerfreundliche Möglichkeit, die Prozessornutzung auf Linux-Systemen zu verfolgen, insbesondere für Benutzer, die eine visuelle Darstellung der Systemressourcennutzung bevorzugen. Sie ergänzen die Befehlszeilen-Tools und bieten einen alternativen Ansatz zur Überwachung der CPU-Leistung auf Linux-Desktops und -Servern mit grafischen Umgebungen.

Fehlerbehebung bei hoher CPU-Nutzung auf Linux-Servern

Identifizierung CPU-intensiver Prozesse

Bei der Fehlerbehebung einer hohen CPU-Nutzung auf Linux-Servern besteht der erste Schritt darin, zu identifizieren, welche Prozesse die meisten CPU-Ressourcen verbrauchen. Zwei gängige Befehle für diesen Zweck sind `top` und `ps`.

Der top-Befehl zeigt eine Echtzeit-Ansicht der Systemprozesse und deren Ressourcennutzung. Um CPU-intensive Prozesse mit top zu identifizieren, folgen Sie diesen Schritten:

  1. Öffnen Sie ein Terminal und führen Sie den top-Befehl aus.
  2. Suchen Sie nach Prozessen mit hohen Werten in der Spalte "%CPU", die den Prozentsatz der CPU-Zeit anzeigt, die von jedem Prozess genutzt wird.
  3. Notieren Sie sich Prozesse, die ständig oben in der Liste mit hoher CPU-Nutzung erscheinen.

Zum Beispiel:

top - 10:30:00 up 2 days, 15:00,  1 user,  load average: 1.50, 1.75, 1.90
Tasks: 100 total,   3 running,  97 sleeping,   0 stopped,   0 zombie
%Cpu(s): 25.0 us, 15.0 sy,  0.0 ni, 60.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7974.2 total,   4515.4 free,   1678.3 used,   1780.5 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   5921.1 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  1234 john      20   0 1500000 300000  25000 R  20.0   3.7   1:30.00 stress-ng
  5678 jane      20   0  800000 150000  10000 R  15.0   1.8   0:45.00 video_encode

In diesem Beispiel verbrauchen die Prozesse stress-ng und video_encode erhebliche CPU-Ressourcen.

Ein weiterer nützlicher Befehl ist ps, der eine Momentaufnahme der aktuellen Prozesse liefert. Um CPU-intensive Prozesse mit ps zu identifizieren, verwenden Sie den folgenden Befehl:

ps aux --sort=-%cpu | head

Dieser Befehl listet alle Prozesse sortiert nach CPU-Nutzung in absteigender Reihenfolge auf und zeigt die 10 CPU-intensivsten Prozesse an.

Zum Beispiel:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
john      1234 20.0  3.7 1500000 300000 ?       R    May01 01:30:00 stress-ng
jane      5678 15.0  1.8 800000 150000 ?        R    May01 00:45:00 video_encode

Durch die Verwendung von top und ps können Sie schnell die Prozesse identifizieren, die eine hohe CPU-Nutzung auf Ihrem Linux-Server verursachen.

Techniken zur Reduzierung hoher CPU-Auslastung

Sobald Sie die CPU-intensiven Prozesse identifiziert haben, können Sie verschiedene Techniken anwenden, um die hohe CPU-Auslastung zu reduzieren und die Arbeitslast effizient zu verwalten. Hier sind einige Strategien und bewährte Praktiken:
  1. Prozessoptimierung:

    • Überprüfen Sie die identifizierten CPU-intensiven Prozesse und analysieren Sie deren Ressourcenbedarf.
    • Optimieren Sie die Prozesse durch Anpassung ihrer Konfiguration, Thread-Anzahl oder Verwendung effizienterer Algorithmen.
    • Erwägen Sie die Verwendung von Caching oder die Optimierung von Datenbankabfragen, um die CPU-Nutzung zu reduzieren.
  2. Ressourcenzuweisung:

    • Stellen Sie sicher, dass das System über genügend CPU-Kerne und Arbeitsspeicher verfügt, um die Arbeitslast zu bewältigen.
    • Verwenden Sie Prozessprioritäten und Niceness, um wichtigen Prozessen angemessene Prioritäten zuzuweisen.
    • Nutzen Sie Linux cgroups (Kontrollgruppen), um die CPU-Nutzung bestimmter Prozesse oder Prozessgruppen zu begrenzen.
  3. Lastverteilung:

    • Verteilen Sie die Arbeitslast auf mehrere Server oder CPUs, um eine Überlastung einer einzelnen Ressource zu vermeiden.
    • Verwenden Sie Lastverteilungstechniken wie einen Lastverteiler oder verteilte Rechenframeworks wie Apache Hadoop oder Apache Spark.
  4. Überwachung und Alarmierung:

    • Richten Sie Überwachungssysteme ein, um die CPU-Nutzung und andere Systemmetriken kontinuierlich zu verfolgen.
    • Konfigurieren Sie Alarme, um Administratoren zu benachrichtigen, wenn die CPU-Nutzung vordefinierte Schwellenwerte überschreitet.
    • Verwenden Sie Tools wie Nagios, Zabbix oder Prometheus zur Überwachung und Alarmierung der CPU-Nutzung.
  5. Skalierung und automatische Skalierung:

    • Implementieren Sie horizontale Skalierung durch Hinzufügen weiterer Server zur Bewältigung erhöhter Arbeitslast.
    • Verwenden Sie Auto-Scaling-Lösungen wie Kubernetes oder AWS Auto Scaling, um die Anzahl der Instanzen basierend auf der CPU-Nutzung automatisch anzupassen.
  6. Code-Optimierung:

    • Profilen und optimieren Sie den Anwendungscode, um Leistungsengpässe zu identifizieren und zu beheben.
    • Verwenden Sie Profiling-Tools wie perf, Valgrind oder GDB, um die Codeleistung zu analysieren und Bereiche für Optimierungen zu identifizieren.
  7. Caching und Ressourcen-Sharing:

    • Implementieren Sie Caching, um häufig abgerufene Daten im Speicher zu halten und so die CPU-Nutzung für wiederholte Operationen zu reduzieren.
    • Teilen Sie Ressourcen wie Datenbankverbindungen oder Thread-Pools, um den Ressourcenoverhead zu minimieren.

Überwachen und überprüfen Sie regelmäßig die CPU-Nutzung, um neue oder wiederkehrende Probleme zu identifizieren. Durch kontinuierliche Optimierung von Prozessen, Feinabstimmung der Ressourcenzuweisung und Implementierung bewährter Praktiken können Sie eine optimale CPU-Auslastung auf Ihren Linux-Servern aufrechterhalten.

Indem Sie diese Techniken und bewährten Praktiken befolgen, können Sie effektiv eine hohe CPU-Nutzung auf Linux-Servern beheben und verwalten und so optimale Leistung und Ressourcennutzung sicherstellen.

Überwachung der CPU-Nutzung in containerisierten Umgebungen

Überwachung der CPU-Nutzung von Docker-Containern

Die Überwachung der CPU-Nutzung in Docker-Containern ist wichtig, um sicherzustellen, dass containerisierte Anwendungen gut funktionieren und Ressourcen effizient nutzen. Docker bietet Befehle, mit denen Sie die CPU-Nutzung einzelner Container überwachen können.

Einer der nützlichsten Befehle ist docker stats, der Echtzeit-Ressourcennutzungsstatistiken für laufende Container anzeigt. Um docker stats zu verwenden, führen Sie den folgenden Befehl aus:

docker stats

Dieser Befehl zeigt eine kontinuierlich aktualisierte Liste von Containern und deren CPU-Nutzungsprozentsätzen sowie andere Ressourcenmetriken wie Speichernutzung und Netzwerk-I/O an.

Zum Beispiel:

CONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT     MEM %     NET I/O         BLOCK I/O       PIDS
1234abcd       web-server    10.25%    100MiB / 500MiB       20.00%    1.5MB / 800kB   10MB / 0B       25
5678efgh       database      5.50%     200MiB / 1GiB         19.53%    500kB / 1.2MB   50MB / 2MB      10

In diesem Beispiel verwendet der web-server-Container 10,25% der CPU, während der database-Container 5,50% verwendet.

Ein weiterer nützlicher Befehl ist docker top, der die Prozesse anzeigt, die innerhalb eines bestimmten Containers laufen. Um docker top zu verwenden, führen Sie den folgenden Befehl aus:

docker top <container-id>

Ersetzen Sie <container-id> durch die ID oder den Namen des Containers, den Sie untersuchen möchten. Dieser Befehl zeigt die Prozesse an, die innerhalb des Containers laufen, zusammen mit ihrer CPU-Nutzung.

Zum Beispiel:

PID                 USER                TIME                COMMAND
2345                root                0:05                nginx
3456                www-data            0:03                php-fpm

Hier laufen die Prozesse nginx und php-fpm innerhalb des Containers, und ihre CPU-Nutzung kann überwacht werden.

Um CPU-Ressourcen in Docker-Containern zu verwalten, können Sie die Optionen --cpus und --cpuset-cpus beim Starten von Containern verwenden. Die Option --cpus ermöglicht es Ihnen, die Anzahl der CPUs anzugeben, die ein Container nutzen kann, während --cpuset-cpus es Ihnen ermöglicht, bestimmte CPU-Kerne einem Container zuzuweisen.

Um beispielsweise einen Container auf die Nutzung von nur 50% der CPU zu begrenzen, können Sie Folgendes ausführen:

docker run --cpus=0.5 <image>

Durch die Überwachung der CPU-Nutzung und das Setzen angemessener Ressourcengrenzen können Sie sicherstellen, dass Container das Hostsystem nicht überlasten und eine optimale Leistung beibehalten.

Überwachung der CPU-Nutzung in Kubernetes-Clustern

Die Überwachung der CPU-Nutzung in Kubernetes-Clustern ist wichtig, um eine effiziente Ressourcennutzung sicherzustellen und Leistungsengpässe zu identifizieren. Kubernetes bietet mehrere Tools und Mechanismen zur Überwachung der CPU-Nutzung auf verschiedenen Ebenen des Clusters.

Eines der integrierten Tools zur Überwachung der CPU-Nutzung in Kubernetes ist der Metrics Server. Der Metrics Server sammelt Ressourcennutzungsmetriken von den Kubernetes-Knoten und stellt eine API zum Abfragen dieser Metriken bereit. Um den Metrics Server zu aktivieren, müssen Sie ihn in Ihrem Cluster bereitstellen.

Sobald der Metrics Server bereitgestellt ist, können Sie den Befehl kubectl top verwenden, um die CPU-Nutzung für Knoten und Pods anzuzeigen. Um beispielsweise die CPU-Nutzung für Knoten anzuzeigen, führen Sie aus:

kubectl top nodes

Dieser Befehl zeigt die CPU-Nutzung und andere Ressourcenmetriken für jeden Knoten im Cluster an.

Zum Beispiel:

NAME           CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
node-1         0.5          10%    1000Mi          25%
node-2         0.8          20%    1500Mi          30%

Um die CPU-Nutzung für Pods anzuzeigen, führen Sie aus:

kubectl top pods

Dieser Befehl zeigt die CPU-Nutzung und andere Ressourcenmetriken für jeden Pod im aktuellen Namespace an.

Zum Beispiel:

NAME                     CPU(cores)   MEMORY(bytes)
web-server-5c6f7f7d5     100m         200Mi
database-6b5c79d4b       50m          100Mi

Hier verwendet der web-server-Pod 100 Millicores (0,1 CPU) und der database-Pod 50 Millicores (0,05 CPU).

Ein weiteres Tool zur Überwachung der CPU-Nutzung in Kubernetes ist das Kubernetes Dashboard. Das Kubernetes Dashboard bietet eine webbasierte Oberfläche zur Überwachung und Verwaltung von Cluster-Ressourcen. Es zeigt CPU-Nutzungsmetriken für Knoten und Pods in einem grafischen Format an, was die Visualisierung und Analyse der Ressourcennutzung erleichtert.

Für fortgeschrittenere Überwachungsfunktionen können Sie Tools wie Prometheus und Grafana verwenden. Prometheus ist ein Überwachungs- und Alarmsystem, das Metriken aus verschiedenen Quellen, einschließlich Kubernetes, sammeln und speichern kann. Grafana ist eine Datenvisualisierungsplattform, mit der Sie Dashboards und Diagramme basierend auf den von Prometheus gesammelten Metriken erstellen können.

Durch die Bereitstellung von Prometheus und Grafana in Ihrem Kubernetes-Cluster können Sie Überwachungs- und Alarmsysteme für die CPU-Nutzung über Pods, Knoten und den gesamten Cluster hinweg einrichten. Prometheus kann Metriken vom Kubernetes API-Server sowie von einzelnen Pods und Knoten mithilfe von Exportern abrufen.

Mit Grafana können Sie benutzerdefinierte Dashboards erstellen, um CPU-Nutzungsmetriken zu visualisieren, Warnungen basierend auf vordefinierten Schwellenwerten einrichten und Einblicke in die Leistung und Ressourcennutzung Ihres Kubernetes-Clusters gewinnen.

Durch die Verwendung dieser Tools und Überwachungsfunktionen können Sie die CPU-Nutzung in Kubernetes-Clustern effektiv überwachen und verwalten und so eine optimale Leistung und Ressourcenzuweisung für Ihre containerisierten Anwendungen sicherstellen.

Wichtige Erkenntnisse

  • Verwenden Sie Befehlszeilen-Tools wie top, htop, mpstat, vmstat und sar, um die CPU-Auslastung in Echtzeit zu überwachen und historische Daten zu analysieren.
  • Identifizieren Sie CPU-intensive Prozesse mit den Befehlen top und ps, um eine hohe CPU-Nutzung auf Linux-Servern zu beheben.
  • Wenden Sie Techniken wie Prozessoptimierung, Ressourcenzuweisung, Lastverteilung und Skalierung an, um eine hohe CPU-Auslastung zu reduzieren und die Arbeitslast effizient zu verwalten.
  • Überwachen Sie die CPU-Nutzung in Docker-Containern mit den Befehlen docker stats und docker top, und setzen Sie Ressourcengrenzen mit den Optionen --cpus und --cpuset-cpus.
  • Nutzen Sie Kubernetes-Tools wie Metrics Server, Kubernetes Dashboard, Prometheus und Grafana, um die CPU-Nutzung in Kubernetes-Clustern effektiv zu überwachen und zu verwalten.