This is a tool for processing systraces and summarizing how applications spend their startup time. To run the tool, enter the root directory for the Trebuchet project and use the following command template: ./gradlew :trebuchet:startup-analyzer:run --args="<absolute path to trace file>"
.
If you do not already have a trace file to analyze you can capture 10 seconds of tracing information using this command: systrace.py -t 10 dalvik view am wm sched freq idle sync irq binder_driver workq hal freq
This tool is able to process either text traces from atrace
or extract the trace from HTML files generated by systrace.py
.
Below is an example of its output:
Opening `/usr/local/google/home/chriswailes/projects/trebuchet/trace-facebook.html` Progress: 100.00% Took 428ms to import Parsing trace-facebook.html took 435ms App Startup summary for com.facebook.katana (29300): Start offset: 1649.352 ms Startup period end point: activityResume Startup duration: 1033.827 ms Top-level slice information: activityResume Event count: 1 Total duration: 50.860 ms activityStart Event count: 1 Total duration: 183.123 ms ActivityThreadMain Event count: 1 Total duration: 25.377 ms bindApplication Event count: 1 Total duration: 495.804 ms inflate Event count: 4 Total duration: 53.638 ms Lock contention Event count: 121 Total duration: 2.017 ms PostFork Event count: 1 Total duration: 4.041 ms setCoreSettings Event count: 1 Total duration: 0.036 ms ZygoteInit Event count: 1 Total duration: 1.895 ms All slice information: activityResume Event count: 1 Total duration: 50.202 ms activityStart Event count: 1 Total duration: 176.956 ms ActivityThreadMain Event count: 1 Total duration: 25.377 ms bindApplication Event count: 1 Total duration: 271.592 ms Collision check Event count: 1 Total duration: 0.198 ms createClassloaderNamespace Event count: 1 Total duration: 2.119 ms FrameLayout Event count: 5 Total duration: 0.553 ms FullSuspendCheck Event count: 2 Total duration: 0.160 ms inflate Event count: 8 Total duration: 7.217 ms initializeJavaContextClassLoader Event count: 1 Total duration: 1.649 ms LinearLayout Event count: 3 Total duration: 0.501 ms Load Dex files from classpath Event count: 1 Total duration: 1.417 ms Lock contention Event count: 467 Total duration: 16.897 ms makeApplication Event count: 1 Total duration: 176.637 ms monitor contention Event count: 4 Total duration: 13.462 ms NetworkSecurityConfigProvider.install Event count: 1 Total duration: 0.253 ms Obfuscated trace point Event count: 20 Total duration: 45.005 ms Open dex file Event count: 16 Total duration: 0.880 ms Event details: /system/framework/org.apache.http.legacy.impl.jar @ 0.061 ms /system/framework/com.google.android.maps.jar @ 0.057 ms /system/framework/com.google.android.maps.jar @ 0.270 ms /data/app/com.facebook.katana @ 0.040 ms /data/app/com.facebook.katana @ 0.034 ms /data/app/com.facebook.katana @ 0.033 ms /data/app/com.facebook.katana @ 0.035 ms /data/app/com.facebook.katana @ 0.034 ms /data/app/com.facebook.katana @ 0.039 ms /data/app/com.facebook.katana @ 0.033 ms /data/app/com.facebook.katana @ 0.034 ms /data/app/com.facebook.katana @ 0.033 ms /data/app/com.facebook.katana @ 0.062 ms /data/app/com.facebook.katana @ 0.033 ms /data/app/com.facebook.katana @ 0.042 ms /data/app/com.facebook.katana @ 0.040 ms Open dex file function invocation Event count: 16 Total duration: 0.153 ms Open oat file Event count: 8 Total duration: 7.566 ms Event details: /data/dalvik-cache/arm/system@framework@org.apache.http.legacy.impl.jar@classes.dex @ 0.028 ms /system/framework/oat/arm/org.apache.http.legacy.impl.odex @ 4.073 ms /data/dalvik-cache/arm/system@framework@com.google.android.maps.jar@classes.dex @ 0.026 ms /system/framework/oat/arm/com.google.android.maps.odex @ 1.343 ms /data/dalvik-cache/arm/data@app@com.facebook.katana-Hu0CRasfgvX30RlV_mJxBA==@base.apk@classes.dex @ 0.026 ms /data/app/com.facebook.katana-Hu0CRasfgvX30RlV_mJxBA==/oat/arm/base.odex @ 2.038 ms /data/dalvik-cache/arm/data@app@com.facebook.katana-Hu0CRasfgvX30RlV_mJxBA==@split_codegenerator.apk@classes.dex @ 0.017 ms /data/app/com.facebook.katana-Hu0CRasfgvX30RlV_mJxBA==/oat/arm/split_codegenerator.odex @ 0.015 ms OpenDexFilesFromOat Event count: 4 Total duration: 4.261 ms OpenImageFile Event count: 3 Total duration: 0.098 ms PostFork Event count: 1 Total duration: 3.881 ms RegisterDexFile Event count: 4 Total duration: 0.660 ms Event details: /data/app/com.facebook.katana-Hu0CRasfgvX30RlV_mJxBA==/base.apk @ 0.482 ms /data/app/com.facebook.katana-Hu0CRasfgvX30RlV_mJxBA==/base.apk!classes2.dex @ 0.061 ms /data/app/com.facebook.katana-Hu0CRasfgvX30RlV_mJxBA==/base.apk!classes9.dex @ 0.054 ms /data/app/com.facebook.katana-Hu0CRasfgvX30RlV_mJxBA==/base.apk!classes3.dex @ 0.063 ms setCoreSettings Event count: 1 Total duration: 0.036 ms setLayerPaths Event count: 1 Total duration: 0.035 ms Setup proxies Event count: 1 Total duration: 0.598 ms setupGraphicsSupport Event count: 1 Total duration: 1.131 ms SuspendThreadByThreadId Event count: 2 Total duration: 0.028 ms Event details: BgHandler id=15 @ 0.016 ms P[0]_HPINeedInit2 id=21 @ 0.012 ms VerifyClass Event count: 2 Total duration: 2.405 ms Event details: com.facebook.common.dextricks.DexFileLoadOld @ 0.156 ms com.facebook.common.dextricks.classid.ClassId @ 2.249 ms View Event count: 6 Total duration: 1.113 ms ViewStub Event count: 16 Total duration: 1.856 ms ZygoteInit Event count: 1 Total duration: 1.895 ms