Introduce a mechanism to trace boot sequence.
This CL adds a trigger and a service so that Systrace can be used for tracing events during boot. persist.debug.atrace.boottrace property is used for switching on and off tracing during boot. /data/misc/boottrace/categories file is used for specifying the categories to be traced. These property and file are rewritten by Systrace when the newly added option --boot is specified. Here is an example of tracing events of am and wm catetories during boot. $ external/chromium-trace/systrace am wm --boot This command will cause the device to reboot. Once the device has booted up, the trace report is created by hitting Ctrl+C. As written in readme.txt, this mechanism relies on persistent property, so tracing events that are emitted before that are not recorded. This is enough for tracing events after zygote is launched though. This only works on userdebug or eng build for security reason. BUG: 21739901 Change-Id: I03f2963d77a678f47eab5e3e29fc7e91bc9ca3a4
This commit is contained in:
parent
c0e8d0fc50
commit
f93db4b827
3 changed files with 32 additions and 0 deletions
|
@ -377,6 +377,29 @@ system_server: 15350 15150 (-200)
|
|||
bootanimation ends at: 33790 31230 (-2560)
|
||||
|
||||
|
||||
Systrace
|
||||
--------
|
||||
Systrace [1] can be used for obtaining performance analysis reports during boot
|
||||
time on userdebug or eng builds.
|
||||
Here is an example of trace events of "wm" and "am" categories:
|
||||
|
||||
$ANDROID_BUILD_TOP/external/chromium-trace/systrace.py wm am --boot
|
||||
|
||||
This command will cause the device to reboot. After the device is rebooted and
|
||||
the boot sequence has finished, the trace report is obtained from the device
|
||||
and written as trace.html on the host by hitting Ctrl+C.
|
||||
|
||||
LIMITATION
|
||||
Recording trace events is started after persistent properties are loaded, so
|
||||
the trace events that are emitted before that are not recorded. Several
|
||||
services such as vold, surfaceflinger, and servicemanager are affected by this
|
||||
limitation since they are started before persistent properties are loaded.
|
||||
Zygote initialization and the processes that are forked from the zygote are not
|
||||
affected.
|
||||
|
||||
[1] http://developer.android.com/tools/help/systrace.html
|
||||
|
||||
|
||||
Debugging init
|
||||
--------------
|
||||
By default, programs executed by init will drop stdout and stderr into
|
||||
|
|
|
@ -259,6 +259,7 @@ on post-fs-data
|
|||
chmod 0660 /data/misc/wifi/wpa_supplicant.conf
|
||||
mkdir /data/local 0751 root root
|
||||
mkdir /data/misc/media 0700 media media
|
||||
mkdir /data/misc/boottrace 0771 system shell
|
||||
|
||||
# For security reasons, /data/local/tmp should always be empty.
|
||||
# Do not place files or directories in /data/local/tmp
|
||||
|
|
|
@ -33,3 +33,11 @@ on boot
|
|||
# Allow only the shell group to read and truncate the kernel trace.
|
||||
chown root shell /sys/kernel/debug/tracing/trace
|
||||
chmod 0660 /sys/kernel/debug/tracing/trace
|
||||
|
||||
on property:persist.debug.atrace.boottrace=1
|
||||
start boottrace
|
||||
|
||||
# Run atrace with the categories written in a file
|
||||
service boottrace /system/bin/atrace --async_start -f /data/misc/boottrace/categories
|
||||
disabled
|
||||
oneshot
|
||||
|
|
Loading…
Reference in a new issue