Add perfetto binaries to Microdroid
And add some docs on how to use Perfetto to capture traces from Microdroid VM. Bug: 222347044 Bug: 271412868 Test: boot Microdroid VM & capture trace Change-Id: I2ea7e70d0eeb97c90d686d32207d1c63fcd07b09
This commit is contained in:
parent
27e19446dc
commit
858fa05465
|
@ -72,4 +72,49 @@ TODO(b/271412868): Stay tuned, more docs coming soon!
|
||||||
|
|
||||||
## Microdroid VM tracing
|
## Microdroid VM tracing
|
||||||
|
|
||||||
|
IMPORTANT: Tracing is only supported for debuggable Microdroid VMs.
|
||||||
|
|
||||||
|
### Capturing trace in Microdroid
|
||||||
|
|
||||||
|
Starting with Android U, Microdroid contains Perfetto tracing binaries, which makes it possible to
|
||||||
|
capture traces inside Microdroid VM using Perfetto stack. The commands used to capture traces on
|
||||||
|
Android should work for Microdroid VM as well, with a difference that Perfetto's tracing binaries
|
||||||
|
are not enabled in Microdroid by default, so you need to manually start them by setting
|
||||||
|
`persist.traced.enable` system property to `1`.
|
||||||
|
|
||||||
|
Here is a quick example on how trace Microdroid VM:
|
||||||
|
|
||||||
|
1. First start your VM. For this example we are going to use
|
||||||
|
`adb shell /apex/com.android.virt/bin/vm run-microdroid`.
|
||||||
|
|
||||||
|
2. Set up an adb connection with the running VM:
|
||||||
|
```shell
|
||||||
|
adb shell forward tcp:9876 vsock:${CID}:5555
|
||||||
|
adb connect localhost:9876
|
||||||
|
adb -s localhost:9876 root
|
||||||
|
```
|
||||||
|
Where `${CID}` corresponds to the running Microdroid VM that you want to establish adb connection
|
||||||
|
with. List of running VMs can be obtained by running `adb shell /apex/com.android.virt/bin/vm list`.
|
||||||
|
Alternatively you can use `vm_shell` utility to connect to a running VM, i.e.: `vm_shell connect`.
|
||||||
|
|
||||||
|
3. Start Perfetto daemons and capture trace
|
||||||
|
```shell
|
||||||
|
adb -s localhost:9876 shell setprop persist.traced.enable 1
|
||||||
|
${ANDROID_BULD_TOP}/external/perfetto/tools/record_android_trace \
|
||||||
|
-s localhost:9876 \
|
||||||
|
-o /tmp/microdroid-trace-file.pftrace \
|
||||||
|
-t 10s \
|
||||||
|
-b 32mb \
|
||||||
|
sched/sched_switch task/task_newtask sched/sched_process_exit
|
||||||
|
```
|
||||||
|
|
||||||
|
If you don't have Android repo checked out, then you can download the record_android_trace script by
|
||||||
|
following the following [instructions](
|
||||||
|
https://perfetto.dev/docs/quickstart/android-tracing#recording-a-trace-through-the-cmdline)
|
||||||
|
|
||||||
|
More documentation on Perfetto's tracing on Android is available here:
|
||||||
|
https://perfetto.dev/docs/quickstart/android-tracing
|
||||||
|
|
||||||
|
### Capturing Microdroid boot trace
|
||||||
|
|
||||||
TODO(b/271412868): Stay tuned, more docs are coming soon!
|
TODO(b/271412868): Stay tuned, more docs are coming soon!
|
||||||
|
|
|
@ -70,7 +70,6 @@ android_system_image {
|
||||||
"libartpalette-system",
|
"libartpalette-system",
|
||||||
|
|
||||||
"apexd.microdroid",
|
"apexd.microdroid",
|
||||||
"atrace",
|
|
||||||
"debuggerd",
|
"debuggerd",
|
||||||
"linker",
|
"linker",
|
||||||
"tombstoned.microdroid",
|
"tombstoned.microdroid",
|
||||||
|
@ -89,6 +88,12 @@ android_system_image {
|
||||||
"libvm_payload", // used by payload to interact with microdroid manager
|
"libvm_payload", // used by payload to interact with microdroid manager
|
||||||
|
|
||||||
"prng_seeder_microdroid",
|
"prng_seeder_microdroid",
|
||||||
|
|
||||||
|
// Binaries required to capture traces in Microdroid.
|
||||||
|
"atrace",
|
||||||
|
"traced",
|
||||||
|
"traced_probes",
|
||||||
|
"perfetto",
|
||||||
] + microdroid_shell_and_utilities,
|
] + microdroid_shell_and_utilities,
|
||||||
multilib: {
|
multilib: {
|
||||||
common: {
|
common: {
|
||||||
|
|
Loading…
Reference in New Issue