GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einführung in die Linux-Leistungsüberwachung und -optimierung

Dies ist der erste Artikel in unserer neuen Serie zur Überwachung und Optimierung der Linux-Leistung.

Linux-Systemadministratoren sollten mit der Überwachung und Optimierung der Linux-Leistung vertraut sein. Dieser Artikel gibt einen allgemeinen Überblick darüber, wie wir die Leistungsüberwachung und -optimierung in Linux angehen sollten, und die verschiedenen Subsysteme (und Leistungsmetriken), die überwacht werden müssen.

Um Systemengpässe zu identifizieren und Lösungen zu ihrer Behebung zu finden, sollten Sie verstehen, wie verschiedene Komponenten von Linux funktionieren. Zum Beispiel, wie der Kernel einen Linux-Prozess gegenüber anderen bevorzugt, indem er nette Werte verwendet, wie I/O-Interrupts gehandhabt werden, wie die Speicherverwaltung funktioniert, wie das Linux-Dateisystem funktioniert, wie die Netzwerkschicht in Linux implementiert ist usw. ,

Bitte beachten Sie, dass es nicht dasselbe ist, zu verstehen, wie verschiedene Komponenten (oder Subsysteme) funktionieren, wie zu wissen, welcher Befehl ausgeführt werden muss, um eine bestimmte Ausgabe zu erhalten. Beispielsweise wissen Sie vielleicht, dass der Befehl „uptime“ oder „top“ den „Lastdurchschnitt“ angibt. Wenn Sie jedoch nicht wissen, was es bedeutet und wie das CPU- (oder Prozess-) Subsystem funktioniert, können Sie es möglicherweise nicht richtig verstehen. Das Verständnis der Subsysteme ist eine fortlaufende Aufgabe, die Sie ständig lernen werden.

Auf einer sehr hohen Ebene sind im Folgenden die vier Subsysteme aufgeführt, die überwacht werden müssen.

  • Prozessor
  • Erinnerung
  • I/O
  • Netzwerk

1. CPU

Sie sollten die vier kritischen Leistungsmetriken für die CPU verstehen – Kontextwechsel, Ausführungswarteschlange, CPU-Auslastung und durchschnittliche Auslastung.

Kontextwechsel

  • Wenn die CPU von einem Prozess (oder Thread) zu einem anderen wechselt, wird dies als Kontextwechsel bezeichnet.
  • Wenn ein Prozesswechsel stattfindet, speichert der Kernel den aktuellen Zustand der CPU (eines Prozesses oder Threads) im Speicher.
  • Der Kernel ruft auch den zuvor gespeicherten Zustand (eines Prozesses oder Threads) aus dem Speicher ab und legt ihn in der CPU ab.
  • Kontextwechsel sind für das Multitasking der CPU sehr wichtig.
  • Ein höheres Maß an Kontextwechsel kann jedoch zu Leistungsproblemen führen.

Warteschlange ausführen

  • Laufwarteschlange gibt die Gesamtzahl aktiver Prozesse in der aktuellen Warteschlange für CPU an.
  • Wenn die CPU bereit ist, einen Prozess auszuführen, holt sie ihn basierend auf der Priorität des Prozesses aus der Ausführungswarteschlange.
  • Bitte beachten Sie, dass Prozesse, die sich im Ruhezustand oder im E/A-Wartezustand befinden, nicht in der Ausführungswarteschlange sind.
  • Daher kann eine höhere Anzahl von Prozessen in der Ausführungswarteschlange Leistungsprobleme verursachen.

CPU-Auslastung

  • Dies zeigt an, wie viel CPU derzeit verwendet wird.
  • Dies ist ziemlich einfach, und Sie können die CPU-Auslastung über den obersten Befehl anzeigen.
  • 100 % CPU-Auslastung bedeutet, dass das System voll ausgelastet ist.
  • Ein höherer Prozentsatz der CPU-Auslastung führt also zu Leistungsproblemen.

Durchschnittliche Belastung

  • Dies gibt die durchschnittliche CPU-Last über einen bestimmten Zeitraum an.
  • Unter Linux wird der Lastdurchschnitt für die letzten 1 Minute, 5 Minuten und 15 Minuten angezeigt. Dies ist hilfreich, um zu sehen, ob die Gesamtlast des Systems zunimmt oder abnimmt.
  • Zum Beispiel zeigt eine durchschnittliche Auslastung von „0,75 1,70 2,10“ an, dass die Auslastung des Systems abnimmt. 0,75 ist der Lastdurchschnitt in der letzten 1 Minute. 1,70 ist der Lastdurchschnitt der letzten 5 Minuten. 2,10 ist der Lastdurchschnitt der letzten 15 Minuten.
  • Bitte beachten Sie, dass dieser Lastdurchschnitt berechnet wird, indem sowohl die Gesamtzahl der Prozesse in der Warteschlange als auch die Gesamtzahl der Prozesse im nicht unterbrechbaren Aufgabenstatus kombiniert werden.

2. Netzwerk

  • Ein gutes Verständnis der TCP/IP-Konzepte ist bei der Analyse von Netzwerkproblemen hilfreich. Wir werden in zukünftigen Artikeln mehr darüber diskutieren.
  • Bei Netzwerkschnittstellen sollten Sie die Gesamtzahl der über die Schnittstelle empfangenen/gesendeten Pakete (und Bytes), die Anzahl der verworfenen Pakete usw. überwachen

3. E/A

  • E/A-Wartezeit ist die Zeitspanne, die die CPU auf E/A wartet. Wenn auf Ihrem System konstant hohe E/A-Wartezeiten angezeigt werden, weist dies auf ein Problem im Festplatten-Subsystem hin.
  • Sie sollten auch Lesevorgänge/Sekunde und Schreibvorgänge/Sekunde überwachen. Dies wird in Blöcken gemessen. d.h. Anzahl der Blöcke, die pro Sekunde gelesen/geschrieben werden. Diese werden auch als bi und bo (block in and block out) bezeichnet.
  • tps gibt die Gesamtzahl der Transaktionen pro Sekunde an, also die Summe aus rtps (Lesetransaktionen pro Sekunde) und wtps (Schreibtransaktionen pro Sekunde).

4. Erinnerung

  • Wie Sie wissen, ist RAM Ihr physischer Speicher. Wenn Sie 4 GB RAM auf Ihrem System installiert haben, verfügen Sie über 4 GB physischen Arbeitsspeicher.
  • Virtueller Speicher =Auf der Festplatte verfügbarer Auslagerungsspeicher + Physischer Speicher. Der virtuelle Speicher enthält sowohl Userspace als auch Kernelspace.
  • Die Verwendung eines 32-Bit- oder 64-Bit-Systems macht einen großen Unterschied bei der Bestimmung, wie viel Speicher ein Prozess verwenden kann.
  • Auf einem 32-Bit-System kann ein Prozess nur auf maximal 4 GB virtuellen Speicher zugreifen. Auf einem 64-Bit-System gibt es diese Einschränkung nicht.
  • Der ungenutzte RAM wird vom Kernel als Dateisystem-Cache verwendet.
  • Das Linux-System tauscht aus, wenn es mehr Speicher benötigt. dh wenn es mehr Speicher benötigt als der physische Speicher. Beim Auslagern werden die am wenigsten genutzten Speicherseiten aus dem physischen Speicher in den Auslagerungsbereich auf der Festplatte geschrieben.
  • Viel Austausch kann zu Leistungsproblemen führen, da die Festplatte viel langsamer als der physische Speicher ist und es einige Zeit dauert, die Speicherseiten vom RAM auf die Festplatte auszutauschen.

Alle der oben genannten 4 Subsysteme sind miteinander verbunden. Nur weil Sie eine hohe Anzahl von Lesevorgängen/Sekunde oder Schreibvorgängen/Sekunde oder E/A-Wartezeit sehen, bedeutet dies nicht, dass das Problem beim E/A-Subsystem besteht. Es hängt auch davon ab, was die Anwendung tut. In den meisten Fällen kann das Leistungsproblem durch die Anwendung verursacht werden, die auf dem Linux-System ausgeführt wird.

Denken Sie an die 80/20-Regel – 80 % der Leistungssteigerung stammen aus der Optimierung der Anwendung und die restlichen 20 % aus der Optimierung der Infrastrukturkomponenten.

Es sind verschiedene Tools verfügbar, um die Linux-Systemleistung zu überwachen. Zum Beispiel:top, free, ps, iostat, vmstat, mpstat, sar, tcpump, netstat, iozone usw. Wir werden in den kommenden Artikeln dieser Serie mehr über diese Tools und ihre Verwendung diskutieren.

Im Folgenden finden Sie den 4-Schritte-Ansatz, um ein Leistungsproblem zu identifizieren und zu lösen.

  • Schritt 1 – Problem verstehen (und reproduzieren): Die Hälfte des Problems ist gelöst, wenn Sie klar verstehen, was das Problem ist. Bevor Sie versuchen, das Leistungsproblem zu lösen, arbeiten Sie zunächst daran, das Problem klar zu definieren. Je mehr Zeit Sie damit verbringen, das Problem zu verstehen und zu definieren, desto mehr Details erhalten Sie, um an der richtigen Stelle nach Antworten zu suchen. Versuchen Sie nach Möglichkeit, das Problem zu reproduzieren, oder simulieren Sie zumindest eine Situation, die Ihrer Meinung nach dem Problem sehr ähnlich ist. Dies wird Ihnen später dabei helfen, die von Ihnen vorgeschlagene Lösung zur Behebung des Leistungsproblems zu validieren.
  • Schritt 2 – Überwachen und Sammeln von Daten: Nachdem Sie das Problem klar definiert haben, überwachen Sie das System und versuchen Sie, so viele Daten wie möglich auf verschiedenen Subsystemen zu sammeln. Erstellen Sie basierend auf diesen Daten eine Liste potenzieller Probleme.
  • Schritt 3 – Probleme beseitigen und eingrenzen: Nachdem Sie eine Liste möglicher Probleme erstellt haben, tauchen Sie in jedes einzelne ein und beseitigen Sie alle Nicht-Probleme. Grenzen Sie es weiter ein, um zu sehen, ob es sich um ein Anwendungsproblem oder ein Infrastrukturproblem handelt. Gehen Sie weiter vor und grenzen Sie es auf eine bestimmte Komponente ein. Wenn es sich beispielsweise um ein Infrastrukturproblem handelt, grenzen Sie es ein und identifizieren Sie das Subsystem, das das Problem verursacht. Wenn es sich um ein E/A-Subsystemproblem handelt, grenzen Sie es auf eine bestimmte Partition, eine RAID-Gruppe, eine LUN oder einen Datenträger ein. Bohren Sie im Grunde immer weiter nach unten, bis Sie die Ursache des Problems gefunden haben.
  • Schritt 4 – Eine Änderung nach der anderen: Sobald Sie sich auf eine kleine Liste potenzieller Probleme eingegrenzt haben, versuchen Sie nicht, mehrere Änderungen gleichzeitig vorzunehmen. Wenn Sie mehrere Änderungen vornehmen, wissen Sie nicht, welche das ursprüngliche Problem behoben hat. Mehrere Änderungen gleichzeitig können auch neue Probleme verursachen, denen Sie nachjagen, anstatt das ursprüngliche Problem zu beheben. Nehmen Sie also eine Änderung nach der anderen vor und prüfen Sie, ob das ursprüngliche Problem dadurch behoben wird.

In den kommenden Artikeln der Performance-Serie werden wir mehr darüber diskutieren, wie Sie Leistungsprobleme auf CPU-, Speicher-, E/A- und Netzwerk-Subsystemen mithilfe verschiedener Linux-Leistungsüberwachungstools überwachen und beheben können.


Linux
  1. MySQL – Leistungsoptimierung und -optimierung

  2. Eine Einführung in die Überwachung von Linux-Benutzerkonten

  3. 24 iostat-, vmstat- und mpstat-Beispiele für die Linux-Leistungsüberwachung

  4. Einführung in Linux-Interrupts und CPU-SMP-Affinität

  5. Konfigurieren und Tunen von OpenVAS in Kali Linux

Eine Sammlung von Dienstprogrammen zur Vereinfachung der Fehlerbehebung und Leistungsoptimierung von Linux-Netzwerken

Installieren Sie das NetData Performance Monitoring Tool unter Linux

Eine Einführung in Prometheus-Metriken und Leistungsüberwachung

Eine Einführung in Hashing und Prüfsummen in Linux

3 Tipps zur Verbesserung der Linux-Prozessleistung mit Priorität und Affinität

So erstellen Sie 100% CPU-Last auf einem Linux-System