Einführung
In diesem Lab werden wir untersuchen, wie Sie feststellen können, ob das leistungsstarke Tracing - Utility des Linux - Kernels, ftrace, auf Ihrem System aktiviert und zugänglich ist. Wir beginnen damit, das Verzeichnis /sys/kernel/debug/tracing zu untersuchen, das als primäre Schnittstelle für die Interaktion mit ftrace dient.
Nach der ersten Prüfung werden wir das Tool trace-cmd nutzen, um die Funktionalität von ftrace weiter zu überprüfen und die verfügbaren Tracing - Optionen aufzulisten. Abschließend werden wir die relevanten Konfigurationsparameter im Dateisystem /proc/sys/kernel untersuchen, um ein tieferes Verständnis der ftrace - Einrichtung zu erhalten.
Prüfen Sie den ftrace - Status mit ls /sys/kernel/debug/tracing
In diesem Schritt werden wir mit der Erkundung von ftrace beginnen, einem leistungsstarken Tracing - Utility, das in den Linux - Kernel integriert ist. ftrace ermöglicht es Entwicklern und Systemadministratoren, das Laufzeitverhalten des Kernels zu verstehen.
Die primäre Schnittstelle für die Interaktion mit ftrace erfolgt über das Debug - Dateisystem, das sich speziell unter /sys/kernel/debug/tracing befindet.
Zunächst überprüfen wir, ob das Debug - Dateisystem eingebunden ist und ob das Verzeichnis tracing existiert. Wir können den Befehl ls verwenden, um den Inhalt dieses Verzeichnisses aufzulisten.
Geben Sie den folgenden Befehl in Ihrem Terminal ein und drücken Sie die Eingabetaste:
ls /sys/kernel/debug/tracing
Sie sollten eine Liste von Dateien und Verzeichnissen sehen, die sich auf ftrace beziehen. Die genaue Ausgabe kann je nach Kernelversion und Konfiguration variieren, aber sie sollte in etwa so aussehen:
README events options
available_events free_buffer per_cpu
available_filter_functions function_graph_max_depth printk_formats
available_tracers function_graph_tracer set_event
buffer_size_kb function_profile_dynamic set_filter
buffer_total_size_kb function_trace set_ftrace_filter
current_tracer instances set_ftrace_notrace
dynamic_filter kprobe_events set_graph_function
enabled kprobe_profile set_graph_notrace
error_log max_graph_depth set_tracer
event_sources options snapshot
tracing_cpumask tracing_max_latency tracing_on
tracing_thresh trace trace_clock
trace_marker trace_options trace_pipe
trace_stat
Wenn Sie eine ähnliche Ausgabe sehen, bedeutet dies, dass die ftrace - Schnittstelle auf Ihrem System verfügbar ist. Wenn Sie eine Fehlermeldung wie "No such file or directory" erhalten, kann dies darauf hinweisen, dass das Debug - Dateisystem nicht eingebunden ist oder ftrace im Kernel nicht aktiviert ist. In der LabEx - Umgebung sollte es jedoch verfügbar sein.
Dieses Verzeichnis enthält verschiedene Dateien, die das Verhalten von ftrace steuern und Tracing - Daten bereitstellen. Wir werden einige dieser Dateien in späteren Schritten untersuchen.
Für den Moment bestätigt die bloße Überprüfung der Existenz dieses Verzeichnisses und seines Inhalts, dass Sie mit ftrace interagieren können.
Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.
Verifizieren Sie ftrace mit trace-cmd list
Im vorherigen Schritt haben wir die Existenz der ftrace-Schnittstelle im Debug-Dateisystem bestätigt. Jetzt verwenden wir ein Befehlszeilentool namens trace-cmd, um mit ftrace zu interagieren. trace-cmd ist ein Benutzerraum-Utility, das den Prozess der Konfiguration und Datensammlung von ftrace vereinfacht.
Eine der nützlichen Funktionen von trace-cmd ist die Auflistung der verfügbaren Tracing-Ereignisse (events) und Tracer. Dies hilft uns zu verstehen, was wir mit ftrace überwachen können.
Wir verwenden trace-cmd list, um die verfügbaren Tracer anzuzeigen. Tracer sind verschiedene Betriebsmodi für ftrace, die es Ihnen ermöglichen, verschiedene Aspekte des Kernels zu verfolgen.
Geben Sie den folgenden Befehl in Ihrem Terminal ein und drücken Sie die Eingabetaste:
trace-cmd list -t
Die Option -t teilt trace-cmd mit, die verfügbaren Tracer aufzulisten. Sie sollten eine Ausgabe ähnlich der folgenden sehen:
List of available tracers:
blk
function
function_graph
irqsoff
nop
preemptirqsoff
wakeup
wakeup_rt
Diese Ausgabe zeigt die verschiedenen Tracer, die auf diesem System verfügbar sind. Beispielsweise verfolgt function Funktionsaufrufe, und function_graph verfolgt Funktionsaufrufe und deren Aufrufgraph.
Als Nächstes listen wir die verfügbaren Ereignisse auf, die verfolgt werden können. Ereignisse sind spezifische Punkte im Kernel, an denen Tracing-Informationen gesammelt werden können.
Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:
trace-cmd list -e
Die Option -e teilt trace-cmd mit, die verfügbaren Ereignisse aufzulisten. Dieser Befehl erzeugt eine lange Liste von Ereignissen, die nach Subsystemen kategorisiert sind (z.B. sched, syscalls, ext4). Die Ausgabe wird in etwa so aussehen (nur ein kleiner Teil wird gezeigt):
List of available events:
ftrace:
ftrace_buffer_overrun
ftrace_inject_event
ftrace_print_event
kmem:
kmem_cache_alloc
kmem_cache_alloc_node
kmem_cache_free
kmem_cache_free_page
kmem_cache_free_pages
kmem_cache_grow
kmem_cache_shrink
mm_page_alloc
mm_page_alloc_zone_locked
mm_page_free
mm_page_free_batched
mm_page_pcpu_drain
... (many more events)
Sie können durch die Ausgabe scrollen, um die große Anzahl an Ereignissen zu sehen, die für das Tracing zur Verfügung stehen. Dies zeigt die detaillierte Einblicksfähigkeit, die ftrace in die Kernel-Operationen bietet.
Die Verwendung von trace-cmd list ist eine gute Möglichkeit, einen Überblick darüber zu erhalten, was ftrace auf Ihrem spezifischen System überwachen kann.
Klicken Sie auf Weiter, um fortzufahren.
Untersuchen Sie die ftrace - Konfiguration in /proc/sys/kernel
Neben der Debug - Dateisystem - Schnittstelle unter /sys/kernel/debug/tracing können einige ftrace - verwandte Konfigurationen auch im Verzeichnis /proc/sys/kernel gefunden werden. Das /proc - Dateisystem ist ein virtuelles Dateisystem, das Informationen über Prozesse und andere Systeminformationen bereitstellt. Das Verzeichnis /proc/sys enthält Dateien, die es Ihnen ermöglichen, Kernel - Parameter zur Laufzeit anzuzeigen und zu ändern.
Lassen Sie uns einige Dateien in /proc/sys/kernel prüfen, die sich auf ftrace beziehen. Wir können den Befehl cat verwenden, um den Inhalt dieser Dateien anzuzeigen.
Zunächst überprüfen wir die Datei ftrace_enabled. Diese Datei gibt an, ob ftrace derzeit im Kernel aktiviert ist.
Geben Sie den folgenden Befehl in Ihrem Terminal ein und drücken Sie die Eingabetaste:
cat /proc/sys/kernel/ftrace_enabled
Sie sollten eine Ausgabe wie die folgende sehen:
1
Ein Wert von 1 bedeutet, dass ftrace aktiviert ist, und 0 bedeutet, dass es deaktiviert ist.
Als Nächstes schauen wir uns die Datei ftrace_dump_on_oops an. Diese Datei steuert, ob der ftrace - Puffer auf die Konsole ausgegeben wird, wenn ein Kernel - Oops (ein Kernel - Fehler) auftritt.
Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:
cat /proc/sys/kernel/ftrace_dump_on_oops
Die Ausgabe wird wahrscheinlich wie folgt aussehen:
1
Ein Wert von 1 bedeutet, dass der ftrace - Puffer bei einem Kernel - Oops ausgegeben wird, was für das Debugging hilfreich sein kann.
Schließlich überprüfen wir die Datei ftrace_filter_notrace_regex. Diese Datei enthält einen regulären Ausdruck, der verwendet werden kann, um zu filtern, welche Funktionen nicht verfolgt werden, wenn die Funktionsverfolgung verwendet wird.
Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:
cat /proc/sys/kernel/ftrace_filter_notrace_regex
Die Ausgabe kann leer sein oder einen regulären Ausdruck enthalten, je nach Systemkonfiguration:
Diese Dateien in /proc/sys/kernel geben einen Einblick in einige globale ftrace - Einstellungen. Während die meisten detaillierten Konfigurationen und der Datenzugriff über /sys/kernel/debug/tracing erfolgen, bieten diese Dateien eine schnelle Möglichkeit, den Gesamtstatus und einige grundlegende Verhaltensweisen von ftrace zu prüfen.
Sie haben nun die Hauptschnittstellen für die Interaktion mit ftrace erkundet: das Debug - Dateisystem und das Verzeichnis /proc/sys/kernel.
Klicken Sie auf Weiter, um dieses Lab abzuschließen.
Zusammenfassung
In diesem Lab haben wir gelernt, wie man prüft, ob das Kernel - ftrace - Utility auf einem Linux - System aktiviert und zugänglich ist. Wir haben begonnen, indem wir die primäre ftrace - Schnittstelle im Debug - Dateisystem unter /sys/kernel/debug/tracing untersucht haben. Indem wir den Inhalt dieses Verzeichnisses mit dem Befehl ls aufgelistet haben, haben wir die Existenz von ftrace - verwandten Dateien und Verzeichnissen bestätigt, was darauf hinweist, dass die ftrace - Schnittstelle verfügbar ist.
Dieser erste Schritt hat die grundlegende Voraussetzung für die Verwendung von ftrace bestätigt: Das Debug - Dateisystem muss eingebunden sein und das Tracing - Verzeichnis muss existieren. Das Erscheinen der verschiedenen ftrace - Konfigurations - und Steuerdateien in der Ausgabe von ls /sys/kernel/debug/tracing hat visuell bestätigt, dass die ftrace - Infrastruktur vorhanden und für weitere Interaktionen bereit ist.



