Merge "Backport multi user trace changes."
This commit is contained in:
@@ -31,5 +31,6 @@ android_test {
|
|||||||
],
|
],
|
||||||
platform_apis: true,
|
platform_apis: true,
|
||||||
test_suites: ["device-tests"],
|
test_suites: ["device-tests"],
|
||||||
|
data: ["trace_configs/*"],
|
||||||
certificate: "platform",
|
certificate: "platform",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,14 +16,51 @@
|
|||||||
<configuration description="Runs MultiUserPerfTests metric instrumentation.">
|
<configuration description="Runs MultiUserPerfTests metric instrumentation.">
|
||||||
<option name="test-suite-tag" value="apct" />
|
<option name="test-suite-tag" value="apct" />
|
||||||
<option name="test-suite-tag" value="apct-metric-instrumentation" />
|
<option name="test-suite-tag" value="apct-metric-instrumentation" />
|
||||||
|
|
||||||
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
|
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
|
||||||
<option name="cleanup-apks" value="true" />
|
<option name="cleanup-apks" value="true" />
|
||||||
<option name="test-file-name" value="MultiUserPerfTests.apk" />
|
<option name="test-file-name" value="MultiUserPerfTests.apk" />
|
||||||
<option name="test-file-name" value="MultiUserPerfDummyApp.apk" />
|
<option name="test-file-name" value="MultiUserPerfDummyApp.apk" />
|
||||||
</target_preparer>
|
</target_preparer>
|
||||||
|
|
||||||
|
<!-- Needed for pushing the trace config file -->
|
||||||
|
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
|
||||||
|
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
|
||||||
|
<option name="push-file" key="trace_config_multi_user.textproto" value="/data/misc/perfetto-traces/trace_config.textproto" />
|
||||||
|
<!--Install the content provider automatically when we push some file in sdcard folder.-->
|
||||||
|
<!--Needed to avoid the installation during the test suite.-->
|
||||||
|
<option name="push-file" key="trace_config_multi_user.textproto" value="/sdcard/sample.textproto" />
|
||||||
|
</target_preparer>
|
||||||
|
|
||||||
|
<!-- Needed for pulling the collected trace config on to the host -->
|
||||||
|
<metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
|
||||||
|
<option name="pull-pattern-keys" value="perfetto_file_path" />
|
||||||
|
</metrics_collector>
|
||||||
|
|
||||||
|
<!-- Needed for storing the perfetto trace files in the sdcard/test_results-->
|
||||||
|
<option name="isolated-storage" value="false" />
|
||||||
|
|
||||||
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
|
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
|
||||||
<option name="package" value="com.android.perftests.multiuser" />
|
<option name="package" value="com.android.perftests.multiuser" />
|
||||||
<option name="hidden-api-checks" value="false"/>
|
<option name="hidden-api-checks" value="false"/>
|
||||||
|
|
||||||
|
<!-- Listener related args for collecting the traces and waiting for the device to stabilize. -->
|
||||||
|
<option name="device-listeners" value="android.device.collectors.ProcLoadListener,android.device.collectors.PerfettoListener" />
|
||||||
|
<!-- Guarantee that user defined RunListeners will be running before any of the default listeners defined in this runner. -->
|
||||||
|
<option name="instrumentation-arg" key="newRunListenerMode" value="true" />
|
||||||
|
|
||||||
|
<!-- ProcLoadListener related arguments -->
|
||||||
|
<!-- Wait for device last minute threshold to reach 3 with 2 minute timeout before starting the test run -->
|
||||||
|
<option name="instrumentation-arg" key="procload-collector:per_run" value="true" />
|
||||||
|
<option name="instrumentation-arg" key="proc-loadavg-threshold" value="3" />
|
||||||
|
<option name="instrumentation-arg" key="proc-loadavg-timeout" value="120000" />
|
||||||
|
<option name="instrumentation-arg" key="proc-loadavg-interval" value="10000" />
|
||||||
|
|
||||||
|
<!-- PerfettoListener related arguments -->
|
||||||
|
<option name="instrumentation-arg" key="perfetto_config_text_proto" value="true" />
|
||||||
|
<option name="instrumentation-arg" key="perfetto_config_file" value="trace_config.textproto" />
|
||||||
|
|
||||||
|
<option name="instrumentation-arg" key="newRunListenerMode" value="true" />
|
||||||
|
|
||||||
</test>
|
</test>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
@@ -0,0 +1,154 @@
|
|||||||
|
# Copyright (C) 2021 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.
|
||||||
|
|
||||||
|
# proto-message: TraceConfig
|
||||||
|
|
||||||
|
# Enable periodic flushing of the trace buffer into the output file.
|
||||||
|
write_into_file: true
|
||||||
|
|
||||||
|
# Writes the userspace buffer into the file every 1s.
|
||||||
|
file_write_period_ms: 1000
|
||||||
|
|
||||||
|
# See b/126487238 - we need to guarantee ordering of events.
|
||||||
|
flush_period_ms: 10000
|
||||||
|
|
||||||
|
# The trace buffers needs to be big enough to hold |file_write_period_ms| of
|
||||||
|
# trace data. The trace buffer sizing depends on the number of trace categories
|
||||||
|
# enabled and the device activity.
|
||||||
|
|
||||||
|
# RSS events
|
||||||
|
buffers {
|
||||||
|
size_kb: 32768
|
||||||
|
fill_policy: RING_BUFFER
|
||||||
|
}
|
||||||
|
|
||||||
|
# procfs polling
|
||||||
|
buffers {
|
||||||
|
size_kb: 8192
|
||||||
|
fill_policy: RING_BUFFER
|
||||||
|
}
|
||||||
|
|
||||||
|
data_sources {
|
||||||
|
config {
|
||||||
|
name: "linux.ftrace"
|
||||||
|
target_buffer: 0
|
||||||
|
ftrace_config {
|
||||||
|
# These parameters affect only the kernel trace buffer size and how
|
||||||
|
# frequently it gets moved into the userspace buffer defined above.
|
||||||
|
buffer_size_kb: 16384
|
||||||
|
drain_period_ms: 250
|
||||||
|
|
||||||
|
# Store certain high-volume "sched" ftrace events in a denser format
|
||||||
|
# (falling back to the default format if not supported by the tracer).
|
||||||
|
compact_sched {
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
|
||||||
|
# Enables symbol name resolution against /proc/kallsyms
|
||||||
|
symbolize_ksyms: true
|
||||||
|
|
||||||
|
# We need to do process tracking to ensure kernel ftrace events targeted at short-lived
|
||||||
|
# threads are associated correctly
|
||||||
|
ftrace_events: "task/task_newtask"
|
||||||
|
ftrace_events: "task/task_rename"
|
||||||
|
ftrace_events: "sched/sched_process_exit"
|
||||||
|
ftrace_events: "sched/sched_process_free"
|
||||||
|
|
||||||
|
# Memory events
|
||||||
|
ftrace_events: "rss_stat"
|
||||||
|
ftrace_events: "ion_heap_shrink"
|
||||||
|
ftrace_events: "ion_heap_grow"
|
||||||
|
ftrace_events: "ion/ion_stat"
|
||||||
|
ftrace_events: "dmabuf_heap/dma_heap_stat"
|
||||||
|
ftrace_events: "oom_score_adj_update"
|
||||||
|
ftrace_events: "gpu_mem/gpu_mem_total"
|
||||||
|
|
||||||
|
# Old (kernel) LMK
|
||||||
|
ftrace_events: "lowmemorykiller/lowmemory_kill"
|
||||||
|
|
||||||
|
atrace_apps: "*"
|
||||||
|
|
||||||
|
atrace_categories: "am"
|
||||||
|
atrace_categories: "binder_driver"
|
||||||
|
atrace_categories: "bionic"
|
||||||
|
atrace_categories: "dalvik"
|
||||||
|
atrace_categories: "input"
|
||||||
|
atrace_categories: "pm"
|
||||||
|
atrace_categories: "res"
|
||||||
|
atrace_categories: "rro"
|
||||||
|
atrace_categories: "ss"
|
||||||
|
atrace_categories: "view"
|
||||||
|
atrace_categories: "wm"
|
||||||
|
|
||||||
|
atrace_categories: "freq"
|
||||||
|
atrace_categories: "sched"
|
||||||
|
atrace_categories: "sync"
|
||||||
|
atrace_categories: "workq"
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data_sources: {
|
||||||
|
config {
|
||||||
|
name: "android.gpu.memory"
|
||||||
|
target_buffer: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data_sources {
|
||||||
|
config {
|
||||||
|
name: "linux.process_stats"
|
||||||
|
target_buffer: 1
|
||||||
|
process_stats_config {
|
||||||
|
proc_stats_poll_ms: 10000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data_sources {
|
||||||
|
config {
|
||||||
|
name: "linux.sys_stats"
|
||||||
|
target_buffer: 1
|
||||||
|
sys_stats_config {
|
||||||
|
meminfo_period_ms: 1000
|
||||||
|
meminfo_counters: MEMINFO_MEM_TOTAL
|
||||||
|
meminfo_counters: MEMINFO_MEM_FREE
|
||||||
|
meminfo_counters: MEMINFO_MEM_AVAILABLE
|
||||||
|
meminfo_counters: MEMINFO_BUFFERS
|
||||||
|
meminfo_counters: MEMINFO_CACHED
|
||||||
|
meminfo_counters: MEMINFO_SWAP_CACHED
|
||||||
|
meminfo_counters: MEMINFO_ACTIVE
|
||||||
|
meminfo_counters: MEMINFO_INACTIVE
|
||||||
|
meminfo_counters: MEMINFO_ACTIVE_ANON
|
||||||
|
meminfo_counters: MEMINFO_INACTIVE_ANON
|
||||||
|
meminfo_counters: MEMINFO_ACTIVE_FILE
|
||||||
|
meminfo_counters: MEMINFO_INACTIVE_FILE
|
||||||
|
meminfo_counters: MEMINFO_UNEVICTABLE
|
||||||
|
meminfo_counters: MEMINFO_SWAP_TOTAL
|
||||||
|
meminfo_counters: MEMINFO_SWAP_FREE
|
||||||
|
meminfo_counters: MEMINFO_DIRTY
|
||||||
|
meminfo_counters: MEMINFO_WRITEBACK
|
||||||
|
meminfo_counters: MEMINFO_ANON_PAGES
|
||||||
|
meminfo_counters: MEMINFO_MAPPED
|
||||||
|
meminfo_counters: MEMINFO_SHMEM
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data_sources: {
|
||||||
|
config: {
|
||||||
|
name: "android.surfaceflinger.frametimeline"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user