xref: /aosp_15_r20/external/perfetto/docs/data-sources/system-log.md (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker## Syscalls
2*6dbdd20aSAndroid Build Coastguard WorkerThe enter and exit of all syscalls can be tracked in Perfetto traces.
3*6dbdd20aSAndroid Build Coastguard Worker
4*6dbdd20aSAndroid Build Coastguard Worker
5*6dbdd20aSAndroid Build Coastguard WorkerThe following ftrace events need to added to the trace config to collect syscalls.
6*6dbdd20aSAndroid Build Coastguard Worker
7*6dbdd20aSAndroid Build Coastguard Worker```protobuf
8*6dbdd20aSAndroid Build Coastguard Workerdata_sources: {
9*6dbdd20aSAndroid Build Coastguard Worker    config {
10*6dbdd20aSAndroid Build Coastguard Worker        name: "linux.ftrace"
11*6dbdd20aSAndroid Build Coastguard Worker        ftrace_config {
12*6dbdd20aSAndroid Build Coastguard Worker            ftrace_events: "raw_syscalls/sys_enter"
13*6dbdd20aSAndroid Build Coastguard Worker            ftrace_events: "raw_syscalls/sys_exit"
14*6dbdd20aSAndroid Build Coastguard Worker        }
15*6dbdd20aSAndroid Build Coastguard Worker    }
16*6dbdd20aSAndroid Build Coastguard Worker}
17*6dbdd20aSAndroid Build Coastguard Worker```
18*6dbdd20aSAndroid Build Coastguard Worker
19*6dbdd20aSAndroid Build Coastguard Worker## Linux kernel tracing
20*6dbdd20aSAndroid Build Coastguard WorkerPerfetto integrates with [Linux kernel event tracing](https://www.kernel.org/doc/Documentation/trace/ftrace.txt).
21*6dbdd20aSAndroid Build Coastguard WorkerWhile Perfetto has special support for some events (for example see [CPU Scheduling](#cpu-scheduling)) Perfetto can collect arbitrary events.
22*6dbdd20aSAndroid Build Coastguard WorkerThis config collects four Linux kernel events:
23*6dbdd20aSAndroid Build Coastguard Worker
24*6dbdd20aSAndroid Build Coastguard Worker```protobuf
25*6dbdd20aSAndroid Build Coastguard Workerdata_sources {
26*6dbdd20aSAndroid Build Coastguard Worker  config {
27*6dbdd20aSAndroid Build Coastguard Worker    name: "linux.ftrace"
28*6dbdd20aSAndroid Build Coastguard Worker    ftrace_config {
29*6dbdd20aSAndroid Build Coastguard Worker      ftrace_events: "ftrace/print"
30*6dbdd20aSAndroid Build Coastguard Worker      ftrace_events: "sched/sched_switch"
31*6dbdd20aSAndroid Build Coastguard Worker      ftrace_events: "task/task_newtask"
32*6dbdd20aSAndroid Build Coastguard Worker      ftrace_events: "task/task_rename"
33*6dbdd20aSAndroid Build Coastguard Worker    }
34*6dbdd20aSAndroid Build Coastguard Worker  }
35*6dbdd20aSAndroid Build Coastguard Worker}
36*6dbdd20aSAndroid Build Coastguard Worker```
37*6dbdd20aSAndroid Build Coastguard Worker
38*6dbdd20aSAndroid Build Coastguard WorkerThe full configuration options for ftrace can be seen in [ftrace_config.proto](/protos/perfetto/config/ftrace/ftrace_config.proto).
39*6dbdd20aSAndroid Build Coastguard Worker
40*6dbdd20aSAndroid Build Coastguard Worker## Android system logs
41*6dbdd20aSAndroid Build Coastguard Worker
42*6dbdd20aSAndroid Build Coastguard Worker### Android logcat
43*6dbdd20aSAndroid Build Coastguard WorkerInclude Android Logcat messages in the trace and view them in conjunction with other trace data.
44*6dbdd20aSAndroid Build Coastguard Worker
45*6dbdd20aSAndroid Build Coastguard Worker![](/docs/images/android_logs.png)
46*6dbdd20aSAndroid Build Coastguard Worker
47*6dbdd20aSAndroid Build Coastguard WorkerYou can configure which log buffers are included in the trace. If no buffers are specified, all will be included.
48*6dbdd20aSAndroid Build Coastguard Worker
49*6dbdd20aSAndroid Build Coastguard Worker```protobuf
50*6dbdd20aSAndroid Build Coastguard Workerdata_sources: {
51*6dbdd20aSAndroid Build Coastguard Worker    config {
52*6dbdd20aSAndroid Build Coastguard Worker        name: "android.log"
53*6dbdd20aSAndroid Build Coastguard Worker        android_log_config {
54*6dbdd20aSAndroid Build Coastguard Worker            log_ids: LID_DEFAULT
55*6dbdd20aSAndroid Build Coastguard Worker            log_ids: LID_SYSTEM
56*6dbdd20aSAndroid Build Coastguard Worker            log_ids: LID_CRASH
57*6dbdd20aSAndroid Build Coastguard Worker        }
58*6dbdd20aSAndroid Build Coastguard Worker    }
59*6dbdd20aSAndroid Build Coastguard Worker}
60*6dbdd20aSAndroid Build Coastguard Worker```
61*6dbdd20aSAndroid Build Coastguard Worker
62*6dbdd20aSAndroid Build Coastguard WorkerYou 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`.
63*6dbdd20aSAndroid Build Coastguard WorkerFor details about configuration options, see [android\_log\_config.proto](/protos/perfetto/config/android/android_log_config.proto).
64*6dbdd20aSAndroid Build Coastguard Worker
65*6dbdd20aSAndroid Build Coastguard WorkerThe 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.
66*6dbdd20aSAndroid Build Coastguard Worker
67*6dbdd20aSAndroid Build Coastguard WorkerIf 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:
68*6dbdd20aSAndroid Build Coastguard Worker
69*6dbdd20aSAndroid Build Coastguard Worker```sql
70*6dbdd20aSAndroid Build Coastguard Workerselect * from android_logs where tag = "perfetto" order by ts
71*6dbdd20aSAndroid Build Coastguard Worker```
72*6dbdd20aSAndroid Build Coastguard Worker
73*6dbdd20aSAndroid Build Coastguard Worker### Android application tracing
74*6dbdd20aSAndroid Build Coastguard WorkerYou can enable atrace through Perfetto.
75*6dbdd20aSAndroid Build Coastguard Worker
76*6dbdd20aSAndroid Build Coastguard Worker![](/docs/images/userspace.png)
77*6dbdd20aSAndroid Build Coastguard Worker
78*6dbdd20aSAndroid Build Coastguard WorkerAdd required categories to `atrace_categories` and set `atrace_apps` to a specific app to collect userspace annotations from that app.
79*6dbdd20aSAndroid Build Coastguard Worker
80*6dbdd20aSAndroid Build Coastguard Worker```protobuf
81*6dbdd20aSAndroid Build Coastguard Workerdata_sources: {
82*6dbdd20aSAndroid Build Coastguard Worker    config {
83*6dbdd20aSAndroid Build Coastguard Worker        name: "linux.ftrace"
84*6dbdd20aSAndroid Build Coastguard Worker        ftrace_config {
85*6dbdd20aSAndroid Build Coastguard Worker            atrace_categories: "view"
86*6dbdd20aSAndroid Build Coastguard Worker            atrace_categories: "webview"
87*6dbdd20aSAndroid Build Coastguard Worker            atrace_categories: "wm"
88*6dbdd20aSAndroid Build Coastguard Worker            atrace_categories: "am"
89*6dbdd20aSAndroid Build Coastguard Worker            atrace_categories: "sm"
90*6dbdd20aSAndroid Build Coastguard Worker            atrace_apps: "com.android.phone"
91*6dbdd20aSAndroid Build Coastguard Worker        }
92*6dbdd20aSAndroid Build Coastguard Worker    }
93*6dbdd20aSAndroid Build Coastguard Worker}
94*6dbdd20aSAndroid Build Coastguard Worker```