This CL includes a simple app for testing aspects of startup performance. It
will probably gain new activities as we focus on different parts in
particular. Currently it has an empty activity and an activity that focuses on
layout inflation.
Test: mma, adb install, adb shell start (see README.md for exact commands)
Change-Id: I4e98994f0c25ce61a89d13f86eda2320a1fdcafa
Parse ACTIVITY_FIRST_PREVIEW_FRAME_RECEIVED_ms,ACTIVITY_FIRST_PREVIEW_FRAME_RENDERED_ms
from logcat when running Camera app.
Also updates the scripts to support multiple metrics output (previously
only one allowed). Adding future per-app metrics is also possible by
just adding 1 file with 1 function call with a regex pattern.
Bug: 132649131
Change-Id: Ibfc620bb156f733b69faa7654b06ef35f1a34de3
Adds a simple python parser to convert .ftrace file into
sqlite3 database.
The rest of the analysis logic is done through a series of SQL
commands that build tables/views/select queries.
Bug: 134705245
Test: trace_analyzer some_ftrace_file.trace tmp_file.db
Change-Id: I25274e25a0ab1f091ae4e6161e6726e006e346a5
Input: either pinlist.meta or a text file.
Output: either text file or iorap.TraceFile protobuf.
Also supports looking inside zip files to find out entry offset
automatically.
Bug: 132649131
Change-Id: I638fda1bb11899bb6d123b3aaedb518c0b4d1a80
Script measures app startup times with/without iorapd-based
prefetching against a cold (or warm) baseline.
mlock/fadvise readahead options now use iorapd to exercise
real code to do prefetching.
Bug: 72170747
Change-Id: I28affac3470271e46febb0e22a6dc9543258b4a4
Files failing automerge from AOSP.
See build/soong/README.md for more information.
Bug: 122332340
Test: treehugger
Change-Id: I92f7584aeaf502336f67e04fbc22634784c9305d
Merged-In: I92f7584aeaf502336f67e04fbc22634784c9305d
Files failing automerge from AOSP.
See build/soong/README.md for more information.
Bug: 122332340
Test: treehugger
Change-Id: I92f7584aeaf502336f67e04fbc22634784c9305d
libz is already linked as a static library through
libdexfile_static_defaults, don't also link it as a shared library.
Fixes:
=================================================================
==43189==ERROR: AddressSanitizer: odr-violation (0x55d1ed723a60):
[1] size=48 'inflate_copyright' external/zlib/src/inftrees.c:11:12
[2] size=48 'inflate_copyright' external/zlib/src/inftrees.c:11:12
These globals were registered at these points:
[1]:
#0 0x55d1ed769a0e (/buildbot/src/android/master/out/soong/host/linux-x86/bin/viewcompiler+0xf3a0e)
#1 0x55d1ed991b1b (/buildbot/src/android/master/out/soong/host/linux-x86/bin/viewcompiler+0x31bb1b)
[2]:
#0 0x55d1ed769a0e (/buildbot/src/android/master/out/soong/host/linux-x86/bin/viewcompiler+0xf3a0e)
#1 0x7f5dff20a09b (/buildbot/src/android/master/out/soong/host/linux-x86/bin/../lib64/libz-host.so+0x3e09b)
Test: m SANITIZE_HOST=address viewcompiler && viewcompiler
Change-Id: I4ebdf7ef4ec1641488fbc25275dbf6aa0cdbe2eb
Add a new JobService which executes every 24 hours during idle
maintenance (idle + plugged in). This does no work itself
other than call into iorapd to begin any arbitrary batch jobs.
In a future system/iorap CL, this functionality will be used to
implement trace compilations (converting multiple perfetto trace
protos into a single trace profile proto).
Bug: 72170747
Test: adb shell cmd jobscheduler run -f android 283673059
Change-Id: I46cfcb4f0fa5cf6a1ef03348e93ea949ca1bd07c
This was causing the viewcompiler to crash on deeper layout hierarchies.
We fix this by reserving several scratch registers. When an invoke instruction
uses registers that don't fit in a 4-bit field, we move all of these values into
the scratch registers and use an invoke/range instruction instead. The scratch
registers are all above the highest allocated register, so they are guaranteed
not to clobber meaningful values.
Supporting more registers for invoke also required supporting
register-to-register moves, which some how we'd gotten by without so far.
Finally, to make viewcompiler fail more loudly when things go wrong, many
DCHECKs have been changed to CHECKs.
Bug: 123517491
Test: atest
Change-Id: I9eb7c9bcf1fc7d713e664b331804bdcddafc95a4
PrecompiledLayoutTest makes sure that layouts generated by the viewcompiler are
equivalent to inflating from the resource XML file. We'll want to run these
tests when making changes to the viewcompiler.
Bug: 111895153
Test: atest
Change-Id: Iffa6f0f01c3f43d43feaabd1a5cd36be76650975
Rename from iorapd.enable to ro.iorapd.enable to match init scripts.
This avoids logspam when iorapd is disabled.
Bug: 123637697
Test: reboot and look at logcat
Change-Id: I741071918ba16191890f3fe3de3764013e0e4ee1
libdexfile.so is moving to APEX and the external API doesn't include
the features needed for startop.
Bug: 119632407
Test: Builds
Change-Id: I6d33e8737341a508637321921ca732af913827a3
Also hide down functionality behind setprops:
* Debug logging (log.tag.ForwardingService VERBOSE)
* Log.wtf instead of crashing (iorapd.forwarding_service.wtf_crash true)
* Don't connect to binder if iorapd is disabled (iorapd.enable true)
The primary benefit of this is that:
a) If iorapd acts funny (or crashes) for any reason, it doesn't take down system server.
b) If developer manually runs 'adb shell stop iorapd', it won't crash
system server, and it doesn't need a restart ('adb shell stop/start') to
re-establish the binder connection.
Reconnections are done by sleeping forever in a 1-second loop.
Bug: 72170747
Test: adb shell stop && adb shell start # and manually set adb shell props
Test: atest system/iorap
Change-Id: I789db8962dc8498b1028639274cd34a0310b84c1
* Also makes a minor change to android.os.Intent to allow writing it
into a protobuf without needing an outer field ID. This makes it
directly unserializable into a C++ code-generated protobuf as a root
proto.
Bug: 72170747
Change-Id: I19e91f0f9c5e5a37810a430e9c483e7752af54d7
Test: atest system/iorap