You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

## Syscalls
The enter and exit of all syscalls can be tracked in Perfetto traces.
The following ftrace events need to added to the trace config to collect syscalls.
```protobuf
data_sources: {
config {
name: "linux.ftrace"
ftrace_config {
ftrace_events: "raw_syscalls/sys_enter"
ftrace_events: "raw_syscalls/sys_exit"
}
}
}
```
## Linux kernel tracing
Perfetto integrates with [Linux kernel event tracing](https://www.kernel.org/doc/Documentation/trace/ftrace.txt).
While Perfetto has special support for some events (for example see [CPU Scheduling](#cpu-scheduling)) Perfetto can collect arbitrary events.
This config collects four Linux kernel events:
```protobuf
data_sources {
config {
name: "linux.ftrace"
ftrace_config {
ftrace_events: "ftrace/print"
ftrace_events: "sched/sched_switch"
ftrace_events: "task/task_newtask"
ftrace_events: "task/task_rename"
}
}
}
```
The full configuration options for ftrace can be seen in [ftrace_config.proto](/protos/perfetto/config/ftrace/ftrace_config.proto).
## Android system logs
### Android logcat
Include Android Logcat messages in the trace and view them in conjunction with other trace data.
![](/docs/images/android_logs.png)
You can configure which log buffers are included in the trace. If no buffers are specified, all will be included.
```protobuf
data_sources: {
config {
name: "android.log"
android_log_config {
log_ids: LID_DEFAULT
log_ids: LID_SYSTEM
log_ids: LID_CRASH
}
}
}
```
You may also want to add filtering on a tags using the `filter_tags` parameter or set a min priority to be included in the trace using `min_prio`.
For details about configuration options, see [android\_log\_config.proto](/protos/perfetto/config/android/android_log_config.proto).
The logs can be investigated along with other information in the trace using the [Perfetto UI](https://ui.perfetto.dev) as shown in the screenshot above.
If using the `trace_processor`, these logs will be in the [android\_logs](/docs/analysis/sql-tables.autogen#android_logs) table. To look at the logs with the tag perfetto you would use the following query:
```sql
select * from android_logs where tag = "perfetto" order by ts
```
### Android application tracing
You can enable atrace through Perfetto.
![](/docs/images/userspace.png)
Add required categories to `atrace_categories` and set `atrace_apps` to a specific app to collect userspace annotations from that app.
```protobuf
data_sources: {
config {
name: "linux.ftrace"
ftrace_config {
atrace_categories: "view"
atrace_categories: "webview"
atrace_categories: "wm"
atrace_categories: "am"
atrace_categories: "sm"
atrace_apps: "com.android.phone"
}
}
}
```