blob: 9c97b493a61b165d59b4eebb22caa92e063bc354 [file] [log] [blame] [view]
# Dumping VMs with bugreport
On `adb bugreport` (or `dumpsys android.system.virtualizationservice`), `virtualizationservice` dumps basic information of running VMs.
```
vsoc_x86_64:/ # dumpsys android.system.virtualizationservice
Running 1 VMs:
VM CID: 2048
name: VmRunApp
temporary_directory: /data/misc/virtualizationservice/2048
requester_uid: 2000
requester_debug_pid: 26649
VM dump begin
(VM dump contents...)
VM dump end
```
## Implement Detailed VM Dump
In addition to basic information, guest OSes can implement `IGuestAgent`'s `startDumpVsockServer` method to dump detailed internal state of VMs.
```aidl
int startDumpVsockServer(in String[] args);
```
When `startDumpVsockServer` is called, the guest agent should:
1. **Start a vsock server**: Open a vsock server and listen for an incoming connection.
2. **Dump VM state**: Upon a client connection (from `virtualizationservice`), the guest OS must write dump to the connected vsock stream.
3. **Timeout**: The entire dumping process (including writing to the vsock) should complete within **5 seconds**. `virtualizationservice` may otherwise consider it a timeout.
`virtualizationservice` then embeds this detailed dump directly into the `adb bugreport` output.
## Microdroid's VM Dump Implementation
The guest agent in `microdroid_manager` implements basic dump for Microdroid VMs, focusing on memory and process-related statistics. The dump includes the contents of the following files:
* `/proc/meminfo`
* `/proc/pressure/*`
* `/sys/fs/cgroup/*/memory.*` (excluding `memory.reclaim`)
* `/proc/*/smaps_rollup`
* `/proc/pagetypeinfo`
* `/proc/vmstat`
* `/proc/zoneinfo`
* `/proc/*/smaps` (**debuggable VMs only**)