So erfassen Sie lokal einen System-Trace auf Android Pie

Die Ablaufverfolgung ist ein unschätzbares Tool, mit dem Entwickler die Auswirkungen verschiedener Änderungen auf ein System nachvollziehen und Hinweise zur Ermittlung der Hauptursache von Problemen geben können.

systrace ist ein solches leistungsstarkes Tracing-Tool, das Zeitinformationen von Prozessen sammelt, die auf einem Android-Gerät ausgeführt werden. systrace wurde vom Android-Leistungsteam bei Google intensiv genutzt, um die Leistung auf den Google Pixel-Handys zu optimieren. Ich habe systrace verwendet, um beispielsweise die Auswirkungen von Kernel-Scheduler-Änderungen auf die Platzierung von Tasks auf CPUs zu untersuchen und mögliche Ursachen für Janks zu identifizieren. systrace kann eine Vielzahl von Daten erfassen, einschließlich CPU-Planung, CPU-Frequenz, Festplatten-E / A, Grafiken, Binder-Aktivität und vielem mehr. Die Informationen werden zu einem Bericht zusammengefasst, der in Google Chrome analysiert werden kann.

Vor Android Pie bestand die einzige Möglichkeit, Traces mit systrace zu erfassen, darin, ein Android-Gerät an einen Computer anzuschließen und systrace von dort aus auszuführen - normalerweise von einem Terminal aus. Nicht jeder hat jedoch ständigen Zugriff auf einen Computer oder das Wissen und die Gewissheit, systrace auszuführen.

Mit der Veröffentlichung von Android Pie wurde diese Unannehmlichkeit mit der Einführung des Traceur-Pakets behoben, einem Tool, das unformatierte Trace-Daten direkt auf einem Android-Telefon erfasst. Traceur ist in den Entwickleroptionen der App "Einstellungen" als Option "Systemablaufverfolgung" verfügbar. Die von Traceur auf dem Gerät erfassten unformatierten Ablaufverfolgungsdaten können zu einem späteren Zeitpunkt von systrace in einen HTML-Bericht zur Analyse konvertiert werden.

Mit der neuen Option "System Tracing" können Benutzer auf einfache Weise Traces erfassen und für Entwickler freigeben, ohne dass sie wissen müssen, wie systrace auf einem Computer ausgeführt wird. Entwickler profitieren von der Möglichkeit, Spuren ohne Computer zu erfassen und später nach Belieben zu analysieren. Die durch „System Tracing“ gesammelten vollständigen Rohdaten der Ablaufverfolgung sind auch erheblich kleiner als der von systrace generierte HTML-Bericht, sodass die Rohdaten der Ablaufverfolgung besser zum Speichern und Teilen mit anderen geeignet sind.

Anleitung: Sammeln von System- und Analysesystemspuren

Stellen Sie zunächst sicher, dass auf Ihrem Gerät Android Pie ausgeführt wird und auf Ihrem Computer Python 2 installiert ist. Die folgenden Anweisungen wurden auf einem OnePlus 6 ausgeführt, auf dem die neueste Betaversion von OxygenOS Android Pie ausgeführt wird.

  1. Aktivieren Sie die Entwickleroptionen in der App "Einstellungen" und greifen Sie dann auf die Option "Systemablaufverfolgung" im Abschnitt "Debugging" der Entwickleroptionen zu.

  2. Beim Öffnen der Systemablaufverfolgung wird ein Schalter zum Aktivieren der Systemablaufverfolgung und zum Anpassen der Ablaufverfolgungskategorien und der Puffergröße der Ablaufverfolgungen angezeigt. Für diese Demonstration werden die Standardkategorien verwendet, was für die meisten Fälle ausreichend ist. Ein Kästchen „Schnelleinstellungen anzeigen“ ermöglicht das Starten / Stoppen der Verfolgung über die Schnelleinstellungen. Ich habe dies für diesen Leitfaden aktiviert.

  3. Tippen Sie auf die kürzlich hinzugefügte Kachel mit den Schnelleinstellungen für die Aufzeichnung der Aufzeichnung, um mit der Aufzeichnung einer Aufzeichnung zu beginnen.

  4. Wenn Sie mit der Verfolgung eines Testfalls fertig sind, können Sie die Verfolgung im Benachrichtigungsschatten beenden.

  5. Toll! Sie haben erfolgreich eine Rohspur erfasst. Eine Benachrichtigung fordert Sie auf, die unformatierte Tracedatei freizugeben. Sie sollten es auf Ihrem Gerät speichern, in den Online-Speicher hochladen, per E-Mail versenden usw. können. Alternativ können Sie ADB verwenden, um den Trace direkt von Ihrem Gerät auf Ihren Computer zu übertragen ( adb pull /data/local/traces/ ). Speichern Sie die Trace-Datei auf Ihrem Computer.

  6. Die Raw-Trace-Datei hat das erfundene .ctrace-Format. Es kann nicht in seiner rohen Form interpretiert werden. Wir können systrace verwenden, um einen nützlicheren und verständlicheren interaktiven HTML-Bericht aus unserer unformatierten Tracedatei zu generieren.

  7. Wir werden die neueste Version von systrace aus dem Katapultprojekt repo verwenden. Klonen Sie in einer Terminal-Anwendung das Repo (stellen Sie sicher, dass Git installiert ist):
     git clone //github.com/catapult-project/catapult.git 
  8. Geben Sie die folgenden Befehle ein, um den HTML-Bericht mithilfe von systrace aus unserer unformatierten Tracedatei zu generieren:
     python2 catapult/systrace/bin/systrace --from-file= 

    Eine HTML-Datei mit demselben Namen wie die unformatierte Tracedatei wird generiert. Hinweis: systrace unterstützt zum Zeitpunkt des Schreibens nur Python 2.

  9. Starten Sie zum Anzeigen des HTML-Berichts den Google Chrome-Browser und greifen Sie auf die URL "chrome: // tracing" zu. Öffnen Sie den HTML-Bericht nicht direkt in Google Chrome, da er leer angezeigt wird.

  10. Klicken Sie auf "Laden" und öffnen Sie die HTML-Berichtsdatei aus dem Popup-Dialog. Voila! Ihr Rückverfolgungsbericht kann jetzt eingesehen werden.

Was kommt als nächstes?

Nachdem Sie nun in der Lage sind, einen Trace zu erfassen und einen Systrace- Bericht zu erstellen, ist es wichtig zu verstehen, wie die im Bericht enthaltenen Daten gelesen und interpretiert werden. Ich empfehle zunächst, „ Systrace verstehen“ und „Android-Leistung: Ein Überblick (Google I / O '17)“ und „ Systrace für Spiele“ zu lesen, um systrace in Aktion zu sehen.

Dies ist ein Gastbeitrag, der ursprünglich von Josh Choo, auch als Recognized Developer Joshuous bekannt, verfasst wurde. Der Beitrag wurde zum Formatieren leicht bearbeitet.