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
|
||||
|
||||
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!
|
||||
|
|
|
@ -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: {
|
||||
|
|
Loading…
Reference in New Issue