So überprüfen Sie, ob die Kernel-Leistungszähler in Linux aktiv sind

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob Kernel-Leistungszähler (Kernel Performance Counters) in Linux aktiv sind. Sie werden untersuchen, wie Sie den Befehl perf stat verwenden können, um die Leistungszähler für die Ausführung von Befehlen zu messen, die Konfiguration der Leistungszähler im Dateisystem /sys/kernel zu überprüfen und die Kernel-Logs mit dmesg auf Nachrichten in Bezug auf Leistungszähler zu untersuchen. Diese praktische Erfahrung vermittelt Ihnen die Fähigkeiten, um den Status der Leistungsüberwachung auf Ihrem Linux-System zu diagnostizieren und zu verstehen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/sleep("Execution Delaying") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/sleep -.-> lab-558797{{"So überprüfen Sie, ob die Kernel-Leistungszähler in Linux aktiv sind"}} linux/ls -.-> lab-558797{{"So überprüfen Sie, ob die Kernel-Leistungszähler in Linux aktiv sind"}} linux/cat -.-> lab-558797{{"So überprüfen Sie, ob die Kernel-Leistungszähler in Linux aktiv sind"}} linux/cd -.-> lab-558797{{"So überprüfen Sie, ob die Kernel-Leistungszähler in Linux aktiv sind"}} linux/grep -.-> lab-558797{{"So überprüfen Sie, ob die Kernel-Leistungszähler in Linux aktiv sind"}} end

Prüfen von Zählern mit perf stat

In diesem Schritt lernen Sie, wie Sie den Befehl perf stat verwenden können, um Leistungszähler (Performance Counters) zu messen. Leistungszähler sind spezielle Hardware-Register, die bestimmte Ereignisse zählen, die innerhalb der CPU auftreten, wie beispielsweise die Anzahl der ausgeführten Befehle, Cache-Misses oder Branch-Predictions.

Das perf-Tool ist ein leistungsstarkes Befehlszeilen-Programm zur Leistungsanalyse in Linux. perf stat wird verwendet, um einen Befehl auszuführen und Leistungszähler-Statistiken für die Ausführung dieses Befehls zu sammeln.

Beginnen wir damit, einen einfachen Befehl auszuführen und seine Leistungszähler zu beobachten. Wir verwenden den ls-Befehl, der den Inhalt eines Verzeichnisses auflistet.

Öffnen Sie das Terminal, falls Sie es noch nicht getan haben. Sie können das Xfce Terminal-Symbol auf der linken Seite Ihres Desktops finden.

Geben Sie jetzt den folgenden Befehl ein und drücken Sie Enter:

perf stat ls

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

 Performance counter stats for 'ls':

          <placeholder>      task-clock (msec)         ##    <placeholder> CPUs utilized
          <placeholder>      context-switches          ##    <placeholder> /sec
          <placeholder>      cpu-migrations            ##    <placeholder> /sec
          <placeholder>      page-faults               ##    <placeholder> /sec
          <placeholder>      cycles                    ##    <placeholder> GHz
          <placeholder>      instructions              ##    <placeholder>  insns per cycle
          <placeholder>      branches                  ##    <placeholder> % of all instructions
          <placeholder>      branch-misses             ##    <placeholder> % of all branches

          <placeholder> msec task-clock                ##    <placeholder> CPUs utilized

Die genauen Zahlen und Ereignisse können je nach System und der speziellen Ausführung variieren, aber Sie sollten eine Liste von Leistungsevents und deren Zählungen während der Ausführung des ls-Befehls sehen.

Einige häufige Ereignisse, die Sie möglicherweise sehen, sind:

  • task-clock: Die Gesamtzeit, in der die Aufgabe auf einer CPU ausgeführt wurde.
  • cycles: Die Anzahl der verbrauchten CPU-Zyklen.
  • instructions: Die Anzahl der ausgeführten Befehle.
  • branch-misses: Die Anzahl der Fälle, in denen eine Branch-Prediction falsch war.

Das Verständnis dieser Zähler kann Ihnen helfen, Leistungsschneckennacken in Ihrem Code oder System zu identifizieren.

Sie können auch perf stat für einen komplexeren Befehl oder sogar ein Skript ausführen, um dessen Leistung zu analysieren.

Beispielsweise probieren wir es mal mit der Ausführung von perf stat für einen einfachen sleep-Befehl:

perf stat sleep 1

Dies wird die Leistungszähler messen, während das System für 1 Sekunde schläft. Die Ausgabe zeigt die Zähler für den sleep-Prozess.

Experimentieren Sie mit der Ausführung von perf stat für verschiedene Befehle, um zu sehen, wie sich die Zähler ändern.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Überprüfen der Zählerkonfiguration in /sys/kernel

In diesem Schritt werden Sie untersuchen, wie die Leistungszählerkonfigurationen im /sys-Dateisystem des Linux-Kernels zugänglich gemacht werden. Das /sys-Dateisystem bietet eine Schnittstelle zu Kerneldatenstrukturen, die es Ihnen ermöglicht, Kernparameter zu untersuchen und manchmal zu ändern.

Leistungszähler-Einstellungen, wie beispielsweise ob unprivilegierte Benutzer auf Rohdaten von Leistungszähler-Ereignissen zugreifen können, werden oft über Dateien in /sys/kernel/perf_event gesteuert.

Navigieren wir zum relevanten Verzeichnis und untersuchen eine Konfigurationsdatei.

Zunächst verwenden Sie den cd-Befehl, um Ihr aktuelles Verzeichnis auf /sys/kernel/perf_event zu ändern. Denken Sie daran, dass Ihr Standardverzeichnis ~/project ist, daher müssen Sie den absoluten Pfad verwenden.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

cd /sys/kernel/perf_event

Jetzt befinden Sie sich im Verzeichnis /sys/kernel/perf_event. Sie können den ls-Befehl verwenden, um die Dateien in diesem Verzeichnis anzuzeigen:

ls

Sie sollten eine Liste von Dateien sehen, die möglicherweise Folgendes enthält:

kptr_restrict  perf_event_paranoid  sysfs_deprecated

Die Datei, die uns interessiert, ist perf_event_paranoid. Diese Datei steuert das Zugriffsniveau, das unprivilegierte Benutzer auf Leistungsevents haben. Ein niedrigerer Wert bedeutet weniger Vorsicht (mehr Zugriff), und ein höherer Wert bedeutet mehr Vorsicht (weniger Zugriff).

Lassen Sie uns den Inhalt dieser Datei mit dem cat-Befehl anzeigen:

cat perf_event_paranoid

Die Ausgabe wird eine einzelne Zahl sein, typischerweise zwischen -1 und 2.

<number>

Hier ist, was die verschiedenen Werte im Allgemeinen bedeuten:

  • -1: Alle Benutzer dürfen alle perf-Funktionen nutzen.
  • 0: Alle Benutzer dürfen perf für prozess- und pro-CPU-Messungen verwenden.
  • 1: Nur privilegierte Benutzer (wie root) dürfen perf für prozess- und pro-CPU-Messungen verwenden.
  • 2: Nur privilegierte Benutzer dürfen perf für prozessbezogene Messungen verwenden.

Aus Sicherheitsgründen ist der Standardwert oft 2, um zu verhindern, dass unprivilegierte Benutzer möglicherweise Leistungszähler nutzen, um Informationen über andere Prozesse zu erhalten.

Das Verständnis dieser Datei hilft Ihnen zu verstehen, wie das System in Bezug auf den Zugriff auf die Leistungsüberwachung konfiguriert ist.

Klicken Sie auf Weiter, um fortzufahren.

Untersuchen von Zählerprotokollen in dmesg

In diesem Schritt lernen Sie, wie Sie den Befehl dmesg verwenden können, um Kernnachrichten anzuzeigen. Diese können manchmal Informationen zu Leistungszählern oder perf-Ereignissen enthalten. dmesg ist ein Befehl, der die Nachrichten aus dem Kernel-Ringpuffer anzeigt. Diese Nachrichten werden vom Kernel während des Bootvorgangs und der Laufzeit generiert und können wertvolle Informationen für die Fehlersuche und Systemanalyse enthalten.

Während perf normalerweise direkt Statistiken in das Terminal ausgibt, können die Interaktionen des Kernels mit der Leistungsmesshardware oder alle damit verbundenen Probleme im Kernel-Ringpuffer protokolliert werden.

Um die Kernnachrichten anzuzeigen, verwenden Sie den dmesg-Befehl:

dmesg

Dies wird möglicherweise eine große Menge an Ausgabe in Ihrem Terminal ausgeben und alle Nachrichten aus dem Kernel-Ringpuffer anzeigen.

Um speziell Nachrichten zu perf oder Leistungszählern zu finden, können Sie die Ausgabe von dmesg an den grep-Befehl weiterleiten. grep ist ein leistungsstarkes Tool zum Suchen von Text mithilfe von Mustern.

Suchen wir nach Nachrichten, die das Wort "perf" enthalten:

dmesg | grep perf

Dieser Befehl macht Folgendes:

  • dmesg: Gibt die Kernnachrichten aus.
  • |: Dies ist eine Pipe, die die Ausgabe des linken Befehls als Eingabe an den rechten Befehl weiterleitet.
  • grep perf: Sucht in der Eingabe nach Zeilen, die das Wort "perf" enthalten.

Sie könnten eine Ausgabe ähnlich der folgenden sehen (oder nichts, je nach den jüngsten Kernelereignissen):

[<placeholder>] perf: interrupt took too long (<placeholder> > <placeholder> ms), lowering kernel.perf_event_paranoid to <placeholder>

Diese Beispielnachricht zeigt an, dass ein Leistungseingriff zu lange gedauert hat und der Kernel die perf_event_paranoid-Einstellung (die wir im vorherigen Schritt gesehen haben) automatisch auf einen weniger restriktiven Wert angepasst hat, um möglicherweise das Problem zu beheben.

Sie können auch nach anderen verwandten Begriffen suchen, wie "performance" oder "counter":

dmesg | grep performance
dmesg | grep counter

Das Untersuchen der dmesg-Ausgabe kann hilfreich sein, um Probleme im Zusammenhang mit der Leistungsmessung zu diagnostizieren oder zu verstehen, wie der Kernel mit der Leistungszählerhardware interagiert.

Klicken Sie auf Weiter, um dieses Lab abzuschließen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie überprüfen können, ob die Kernel-Leistungszähler in Linux aktiv sind. Sie haben begonnen, indem Sie den Befehl perf stat verwendet haben, um die Leistungszähler für einen einfachen Befehl wie ls zu messen und die Ausgabe verschiedener Leistungsevents und deren Zählungen beobachtet haben. Dies hat die grundlegende Funktionalität des perf-Tools für die Leistungsanalyse gezeigt.

Anschließend haben Sie im Lab die Leistungszählerkonfiguration im /sys/kernel-Dateisystem überprüft und die Zählerbezogenen Protokolle in der dmesg-Ausgabe untersucht. Diese Schritte haben Methoden bereitgestellt, um die Unterstützung des Systems und den aktiven Status der Kernel-Leistungszähler zu bestätigen und bieten alternative Möglichkeiten, deren Verfügbarkeit über den perf stat-Befehl hinaus zu bewerten.