forked from google/perfetto
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathperfetto.rc
131 lines (111 loc) · 5.18 KB
/
perfetto.rc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Copyright (C) 2017 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
service traced /system/bin/traced
class late_start
disabled
socket traced_consumer stream 0666 root root
socket traced_producer stream 0666 root root
user nobody
group nobody
task_profiles ServiceCapacityLow
service traced_probes /system/bin/traced_probes
class late_start
disabled
user nobody
# Despite the "log" group below, traced_probes is allowed to read log
# only on userdebug/eng via selinux (see traced_probes.te).
group nobody readproc log readtracefs
task_profiles ServiceCapacityLow
# Clean up procfs configuration even if traced_probes crashes
# unexpectedly.
onrestart exec_background - nobody shell -- /system/bin/traced_probes --cleanup-after-crash
file /dev/kmsg w
capabilities DAC_READ_SEARCH
on property:persist.device_config.global_settings.sys_traced=1
setprop persist.traced.enable 1
on property:persist.device_config.global_settings.sys_traced=0
setprop persist.traced.enable 0
on property:debug.atrace.user_initiated=1
stop traced_probes
on property:persist.traced.enable=1 && property:debug.atrace.user_initiated=""
start traced_probes
on property:persist.traced.enable=1
# Trace files need to be:
# - Written by either uid:shell or uid:statsd.
# - Read by shell and incidentd.
mkdir /data/misc/perfetto-traces 0773 root shell
# Traces in this directory are only accessed by dumpstate (read+unlink) and
# by the bug reporting UI (ls+getattr).
mkdir /data/misc/perfetto-traces/bugreport 0773 root shell
# This directory allows shell to save configs file in a place where the
# perfetto cmdline client can read then. /data/local/tmp/ isn't safe because
# too many other domains can write into that. See b/170404111.
mkdir /data/misc/perfetto-configs 0775 root shell
start traced
start traced_probes
on property:persist.traced.enable=0
stop traced
stop traced_probes
# Reset the Perfetto guard rail state on boot:
on post-fs-data
rm /data/misc/perfetto-traces/.guardraildata
#############################################################################
# mm_events - Arms a perfetto trace config that is triggered
# on memory pressure (kmem_activity trigger)
#############################################################################
service mm_events /system/bin/mm_events
class late_start
disabled
oneshot
user nobody
group nobody
on property:persist.mm_events.enabled=true && property:persist.traced.enable=1
restart mm_events # Restart to reset backoff interval
on property:persist.mm_events.enabled=false
stop mm_events
#############################################################################
# perfetto_trace_on_boot - Starts a perfetto trace on boot
#############################################################################
#
# There are two separate actions (a trigger action and a start action) to make
# sure that perfetto_trace_on_boot is started only once on boot (otherwise,
# whenever persist.debug.perfetto.boottrace=1 is set, perfetto_trace_on_boot
# would start immediately).
#
# persist.debug.perfetto.boottrace=1 can be manually set after boot (to record
# a trace on the next reboot) and we don't want to immediately start a trace
# when setting the debug property. So we turn "ro.persistent_properties.ready"
# into a trigger, and then check whether we should start tracing when the
# trigger fires.
on perfetto_maybe_trace_on_boot && property:persist.debug.perfetto.boottrace=1 && property:persist.traced.enable=1
setprop persist.debug.perfetto.boottrace ""
rm /data/misc/perfetto-traces/boottrace.perfetto-trace
# Set by traced after listen()ing on the consumer socket. Without this,
# perfetto could try to connect to traced before traced is ready to listen.
wait_for_prop sys.trace.traced_started 1
start perfetto_trace_on_boot
on property:ro.persistent_properties.ready=true
trigger perfetto_maybe_trace_on_boot
service perfetto_trace_on_boot /system/bin/perfetto -c /data/misc/perfetto-configs/boottrace.pbtxt --txt -o /data/misc/perfetto-traces/boottrace.perfetto-trace
disabled
gentle_kill
oneshot
user shell
group nobody
# This is meant to stop the boot tracing.
# To use this, add a trigger with mode STOP_TRACING in the configuration used in perfetto_trace_on_boot.
# Then create a new config which contains `activate_triggers: <trigger name>` where <trigger name> is
# the name specified in configuration used in perfetto_trace_on_boot.
on property:sys.boot_completed=1
exec -- /system/bin/perfetto -c /data/misc/perfetto-configs/stopboottracetrigger.pbtxt --txt