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:
Nikita Ioffe 2023-03-03 00:46:35 +00:00
parent 27e19446dc
commit 858fa05465
2 changed files with 51 additions and 1 deletions

View File

@ -72,4 +72,49 @@ TODO(b/271412868): Stay tuned, more docs coming soon!
## 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!

View File

@ -70,7 +70,6 @@ android_system_image {
"libartpalette-system",
"apexd.microdroid",
"atrace",
"debuggerd",
"linker",
"tombstoned.microdroid",
@ -89,6 +88,12 @@ android_system_image {
"libvm_payload", // used by payload to interact with microdroid manager
"prng_seeder_microdroid",
// Binaries required to capture traces in Microdroid.
"atrace",
"traced",
"traced_probes",
"perfetto",
] + microdroid_shell_and_utilities,
multilib: {
common: {