Performance

OProfile-Tutorial

OProfile-Tutorial

OProfile ist ein Leistungsprofiler für Linux. In diesem Artikel werden wir untersuchen, was es tut, wie es installiert und konfiguriert wird und wie die gesammelten Daten verwendet werden.

Sie fragen sich vielleicht, warum Sie ein solches Tool benötigen, da auf den meisten Linux-Distributionen standardmäßig viele gute Leistungsanalysetools verfügbar sind. Jede Installation beinhaltet Tools wie top und vmstat, und Tracing-Utilities wie strace sind normalerweise nur ein Katzensprung-. Wo passt OProfile rein?

Die oben genannten Tools eignen sich hervorragend, um in Echtzeit einen Snapshot eines Linux-Systems zu erhalten. Tools wie top oder htop zeigen alle laufenden Prozesse, ihren aktuellen Speicherverbrauch und die Prozessorauslastung an. Aber zu wissen, welche Prozesse und Systemaufrufe die meisten Ressourcen verbrauchen, wird problematisch.

Hier kommt OProfile ins Spiel. Diese Dienstprogrammsuite führt nicht nur ihre Analyse auf einer tieferen Ebene durch, sondern speichert auch Daten und ermöglicht es Ihnen, Leistungsberichte zu erstellen, die eine Fülle von Informationen bieten, die Ihnen helfen können, selbst schwer fassbare Leistungsprobleme zu beheben.

OProfile ist nicht nur für Entwickler. In einer Desktop-Umgebung kann OProfile Ihnen dabei helfen, CPU-intensive Hintergrundaufgaben oder I/O-Aufrufe aufzuspüren, die Sie verlangsamen und nicht sofort sichtbar sind. Auf einem ausgelasteten System mit wechselnden Prozessprioritäten können diese Daten schwer zu sammeln, geschweige denn zu interpretieren sein. Der Multiprozesscharakter einer Serverumgebung macht diese Aufgabe mit herkömmlichen Tools noch schwieriger.

Das heißt, Entwickler werden OProfile zweifellos am meisten nutzen. Die Informationen, die ich präsentieren werde, decken die Grundlagen beider Anwendungsfälle ab, damit Sie sich mit den Leistungskennzahlen jedes Linux-Programms vertraut machen können.

Installation

Es gibt einen sehr wichtigen Hinweis, den Sie machen müssen, bevor Sie tief in OProfile eintauchen - Sie können es möglicherweise nicht in einer virtualisierten Umgebung installieren. Wenn Sie Linux in einer VirtualBox-, VMWare- oder ähnlichen VM-Umgebung ausführen, kann OProfile möglicherweise nicht auf die erforderlichen Leistungsindikatoren zum Sammeln von Daten zugreifen. Selbst wenn Sie es in einer virtuellen Umgebung verwenden können, kann das genaue Timing aufgrund der Hostsystemlast etwas verzerrt sein. Denken Sie also daran, wenn Sie nicht auf nativer Hardware arbeiten.

Mehrere Linux-Distributionen haben OProfile in ihren Paketverwaltungssystemen, was die Installation vereinfacht:

Ein einfaches Beispiel

Sobald das Programm installiert ist, lassen Sie uns mit einem trivialen, aber nützlichen Beispiel nasse Füße bekommen. Das Programm „ls“ ist ein Befehl, den Sie wahrscheinlich ständig verwenden. Es zeigt einfach eine Liste von Dateien und Ordnern im aktuellen Verzeichnis an. Lassen Sie uns seine Ausgabe verfolgen:

sudo operf ls

Sie sehen etwas Ähnliches wie im obigen Screenshot. Sobald der Profiler fertig ist, wird er "Profiling done" ankündigen.” Es hat seine Daten in einem Ordner namens oprofile_data gespeichert, der verwendet werden kann, um einen Bericht zu erstellen.

Das Ausführen des Befehls opreport (in diesem Fall ohne sudo) erzeugt einen ähnlichen Bericht:

In diesem Beispiel zeigt der Standardbericht die Anzahl der Samples, wenn sich die CPU nicht im HALT-Zustand befand (mit anderen Worten, aktiv etwas tat). Kallsyms bietet die vom Profiler verwendete Symbolsuche und das ld.so und libc.sind also Teil des glibc-Pakets, einer gemeinsamen Bibliothek, die mit fast allen ausführbaren Linux-Programmen verknüpft ist und grundlegende Funktionen bietet, mit denen Entwickler das Rad nicht neu erfinden können, und ein allgemeines Maß an Kompatibilität zwischen verschiedenen Systemen bietet. Sie können sehen, dass das eigentliche Programm ls hatte viel weniger Nicht-HALT-Zeit – der Großteil der schweren Arbeit wurde von den Standardbibliotheken erledigt.

Sobald wir mit dem Bericht fertig sind, ist es eine gute Idee, den Datenordner entweder zu entfernen oder für zukünftige Analysen zu speichern. In diesem Beispiel entfernen wir es einfach, da wir Beispielübungen ausführen. Da wir den Befehl mit sudo ausgeführt haben, müssen wir den Ordner mit sudo entfernen. Achtung!

sudo rm -Rf oprofile_data

Ein komplexeres Beispiel

In diesem nächsten Beispiel führen wir ein Programm aus, das tatsächlich etwas komplexeres tut, als nur Dateien im aktuellen Ordner aufzulisten. Laden wir WordPress mit wget herunter.

sudo operf wget http://wordpress.org/neueste.Teer.gz

Nach diesem Beispiel können wir mit dem Befehl „opreport“ einen Bericht erstellen:

Du wirst danach viel mehr Aktivitäten sehen. Der Befehl wget musste hinter den Kulissen viel Arbeit verrichten, um die neueste Version von WordPress zu erhalten. Obwohl es nicht notwendig ist, jedes Element zu untersuchen, sind die interessanten Punkte von Interesse:

Diese Art von Daten kann einem Entwickler eine Fülle von Informationen liefern. Aber wie wichtig ist das für einen Systemadministrator eines Servers oder einen Power-User auf einem Desktop?? Indem wir wissen, welche Teile eines Programms die meiste CPU-Zeit beanspruchen, können wir herausfinden, was optimiert werden muss oder wo die Verlangsamung auftritt, sodass wir bessere Entscheidungen zur Optimierung unseres Systems treffen können.

In diesem Beispiel wurde die meiste CPU-Zeit von den Krypto-/SSL-Routinen beansprucht. Dies ist verständlich, da Kryptographie eine zeitaufwändige Aufgabe ist. Hatte die WordPress.org-Website hat uns nicht auf https:// umgeleitet, diese Bibliothek wäre nicht verwendet worden, was uns CPU-Zeit spart. Die Netzwerkschicht wäre weiterhin verwendet worden, aber die Verwendung einer kabelgebundenen Verbindung anstelle einer drahtlosen Verbindung wäre wahrscheinlich weniger anstrengend gewesen. Das Deaktivieren der Fortschrittsanzeige im Programm wget (über den Schalter -nv) hätte CPU-Zeit bei der Anzeige des Download-Fortschritts gespart.

In Symbole graben

Auch wenn der Standardbericht wertvolle und nützliche Informationen liefert, können wir weiter graben. Indem Sie dies ausführen:

opreport --demangle=smart --symbols

Wir können genau herausfinden, wie viel CPU-Zeit in den Bibliotheken verbraucht wird:

In diesem Beispiel habe ich den obigen Befehl wget verwendet, aber eine http://-URL verwendet (eine, die nicht auf https:// umleitet) und Sie können das Fehlen von OpenSSL-Bibliotheken im Trace sehen. Anstelle des Bibliotheksnamens haben wir jetzt jedoch eine vollständige Auflistung der beteiligten Funktionen. Wie Sie sehen, verbrauchte die Netzwerkschicht den größten Teil der CPU-Nicht-HALT-Zeit.

Bring es auf das nächste Level

In den vorherigen Beispielen haben wir OProfile verwendet, um einen Blick auf ein Programm nach dem anderen zu werfen. Mit dem Schalter -system-wide können Sie Ihr gesamtes System auf einmal untersuchen:

sudo operf --systemweit

Mit dieser Technik sammelt OProfile auf die gleiche Weise Statistiken und stoppt, wenn Sie STRG+C . drücken. Danach können Sie den Befehl opreport ausführen. Da der Profiler wahrscheinlich viel mehr Daten generiert (insbesondere auf einem Desktop oder einem ausgelasteten Server).

opreport &Ampere;gt; Bericht.TXT

Der Bericht kann jetzt in einer Datei namens Bericht angezeigt werden.TXT

Geringer Overhead

Es ist wichtig zu beachten, dass OProfile zwar den Betrieb Ihrer Programme nicht beeinträchtigen sollte, aber ein wenig Overhead erzeugt und somit die Ausführung verlangsamt. In unseren einfachen Beispielen oben hat es kein Problem verursacht, aber bei einem Programm mit langer Ausführung und umfangreichen Funktionsaufrufen werden Sie wahrscheinlich einen Unterschied bemerken. Aus diesem Grund würde ich nicht empfehlen, dieses Programm in einer Produktionsserverumgebung zu verwenden, es sei denn, Sie stehen vor einem kritischen Leistungsproblem, das bei der Live-Nutzung gelöst werden muss. Selbst dann würde ich es gerade lange genug verwenden, um das Problem zu finden.

Fazit

OProfile ist ein leistungsstarkes Tool zur Leistungsprofilierung. Es greift auf die niedrigste in Linux verfügbare Ebene zu, um Leistungsindikatoren und Metriken zu erhalten, die Ihnen wertvolle Informationen über Ihre Programme liefern.

Vorbei sind die Zeiten des Rätselratens beim Performance-Debugging - Sie haben jetzt die Möglichkeit, genau zu wissen, was Ihr System tut und wie Sie es verbessern können. Durch das Studium der von OProfile generierten Berichte können Sie fundierte, datengesteuerte Entscheidungen zur Optimierung Ihres Systems treffen.

Open-Source-Ports kommerzieller Spiele-Engines
Kostenlose, quelloffene und plattformübergreifende Spiel-Engine-Nachbildungen können verwendet werden, um sowohl alte als auch einige der relativ neue...
Beste Befehlszeilenspiele für Linux
Die Befehlszeile ist nicht nur Ihr größter Verbündeter bei der Verwendung von Linux – sie kann auch eine Quelle der Unterhaltung sein, da Sie damit vi...
Beste Gamepad-Mapping-Apps für Linux
Wenn du Spiele unter Linux gerne mit einem Gamepad statt mit einem typischen Tastatur- und Maus-Eingabesystem spielst, gibt es einige nützliche Apps f...