Software-Entwicklung

Embedded-Linux-Systeme tracen – Teil 4

12. Mai 2021, 8:00 Uhr | Tobias Schlichtmeier

Fortsetzung des Artikels von Teil 1

Definieren eines individuellen Intervalls

Ein Tracealyzer-Intervall wird über zwei Ereignisse, nämlich je ein Start- und ein Stop-Ereignis definiert. Man erstellt jetzt also ein Intervall, das an dem Ereignis mit dem String »Start« beginnt und an dem Ereignis mit der Zeichenfolge »Stop« endet. Hierfür sind in das Fenster (Bild 5) die folgenden Informationen einzutragen:

  • Interval Name: Sleep Trace Time Measurement
  • Interval Start: Start
  • Interval End: Stop

Anbieter zum Thema

zu Matchmaker+
Definieren eigener Intervalle
Bild 5. Tracealyzer bietet die Möglichkeit zum Definieren eigener Intervalle.
© Percepio

Die Actor-Filter-Felder erlauben die Angabe eines bestimmten Threads, was jedoch im vorliegenden Fall nicht notwendig ist. Nach einem abschließenden Klick auf die Schaltfläche »Test« erhält man die Nachricht, dass Tracealyzer in den Trace-Daten einige Intervalle findet, die die angegebenen Bedingungen erfüllen.

Nach Abspeichern der Custom-Intervals-Definition erkennt man, dass diese im Fenster »Intervals and State Machines« erscheint und dass sie von Tracealyzer in der Ansicht Trace View markiert wird. Jetzt kann der Anwender das Timing dieses Intervalls grafisch darstellen, ähnlich wie es im vorigen Beitrag mit der Verarbeitungszeit von Aktoren im Actor-Instance-Diagramm geschah. Zu dem Zweck wird im Views-Menü der Menüpunkt »Interval Plot – Select Set…« (Bild 6) gewählt.

Darstellung von Intervallen
Bild 6. Zur Darstellung von Intervallen ist in der Trace-Ansicht unter »Views« ein eigener Menüpunkt vorhanden.
© Percepio

In dem sich dann öffnenden Fenster wird nun der Name des soeben definierten Ereignisses markiert und auf »OK« geklickt, woraufhin ein Diagramm erscheint, aus dem die Dauer der Intervalle hervorgeht. Es lässt sich noch ein wenig optimieren, damit es leichter zu lesen und zu interpretieren ist:

  1. In derselben Ansicht ist im Menü »View« der Menüpunkt »Line Style« und die Option »No Lines« zu wählen.
  2. Nun wird derjenige Abschnitt des Graphen markiert, der die resultierenden Punkte enthält.
  3. In dem nach einem Rechtsklick erscheinenden Kontextmenü ist die Option »Zoom to Selection« zu wählen.
Graph
Bild 7. Nach dem Auswählen des gewünschten Intervalls erscheint ein neuer Graph, der Auskunft über die Dauer der Intervalle gibt. Die Darstellung lässt sich mit wenigen Klicks weiter optimieren.
© Percepio

Wie zu erwarten, haben sämtliche Intervalle eine Dauer von etwa 25 ms (Bild 7). Abschließend lassen sich durch Anklicken eines dieser Datenpunkte wertvolle Timing-Informationen über das betreffende Intervall in der Ansicht »Selection Details« abrufen (Bild 8).  

Im ersten Kasten erscheinen Statistiken zur Länge der einzelnen Intervalle, die der Verarbeitungszeit der jeweils interessierenden Funktion entspricht (sofern der Thread nicht durch einen Kontextwechsel unterbrochen wird, was jedoch in der Trace-Ansicht zu sehen wäre). Der zweite Kasten enthält Statistiken über die Zeitspannen zwischen den Ausführungen der interessierenden Funktion (im vorliegenden Fall wären das die Zeitspannen zwischen einem Stop-Ereignis und dem nächsten Start-Ereignis). Schließlich ist dem dritten Kasten zu entnehmen, wie oft jedes Intervall vorkommt (Zeitspanne zwischen einem Start-Ereignis und dem nächsten Start-Ereignis).

Timing-Informationen
Bild 8. Durch Anklicken der einzelnen Datenpunkte lassen sich aufschlussreiche Timing-Informationen über das jeweilige Intervall anzeigen.
© Percepio

Mithilfe des Interval Plot lassen sich ferner etwaige Timing-Anomalien der interessierenden Funktion ermitteln und die Angaben in der Ansicht Selection Details eignen sich, um übergeordnete Timing-Statistiken einzuholen.

Tracealyzer mit LTTng

Die meisten Embedded-Software-Entwickler dürften Userspace-Anwendungen auf ihren Linux-basierten Embedded-Systemen entwickeln. In Verbindung mit LTTng kann Tracealyzer ein wertvolles Hilfsmittel sein, um Aussagen über die Leistungsfähigkeit einer Applikation einzuholen, von der Norm abweichende Verhaltensweisen zu identifizieren und übergeordnete Timing-Statistiken zu erhalten. Anschließend lässt sich Tracealyzer nutzen, um etwaige Timing-Probleme zu beheben und die Performance der Applikation zu verbessern.

Mohammed Billoo
Mohammed Billoo ist Gründer von MAB Labs, LLC, einem Anbieter kundenspezifischer Embedded-Linux-Anwendungen.
© Percepio

Das ist der vierte Artikel einer Serie von Beiträgen über das Verwenden von Tracealyzer zum Erfassen und Analysieren von Traces von Embedded-Linux-Systemen. Hier finden Sie Teil 1, Teil 2 sowie Teil 3 der Artikelreihe.

Der Autor

Mohammed Billoo ist Gründer von MAB Labs, LLC, einem Anbieter kundenspezifischer Embedded-Linux-Lösungen für eine Vielzahl von Hardware-Plattformen. Mohammed verfügt über einen Master in Elektrotechnik und mehr als 12 Jahre Erfahrung in Design, Implementierung und Test von Embedded-Software. Er trägt aktiv zum Linux-Kernel sowie zahlreichen Open-Source-Bemühungen bei und unterrichtet zudem als außerordentlicher Professor für Elektrotechnik an der Cooper Union for the Advancement of Science and Art.


  1. Embedded-Linux-Systeme tracen – Teil 4
  2. Definieren eines individuellen Intervalls

Das könnte Sie auch interessieren

Verwandte Artikel

Percepio AB

Themenwoche EmbeddedComputing21