Loading apct-tests/perftests/multiuser/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -31,5 +31,6 @@ android_test { ], platform_apis: true, test_suites: ["device-tests"], data: ["trace_configs/*"], certificate: "platform", } apct-tests/perftests/multiuser/AndroidTest.xml +37 −0 Original line number Diff line number Diff line Loading @@ -16,14 +16,51 @@ <configuration description="Runs MultiUserPerfTests metric instrumentation."> <option name="test-suite-tag" value="apct" /> <option name="test-suite-tag" value="apct-metric-instrumentation" /> <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller"> <option name="cleanup-apks" value="true" /> <option name="test-file-name" value="MultiUserPerfTests.apk" /> <option name="test-file-name" value="MultiUserPerfDummyApp.apk" /> </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" > <option name="package" value="com.android.perftests.multiuser" /> <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> </configuration> apct-tests/perftests/multiuser/trace_configs/trace_config_multi_user.textproto 0 → 100644 +154 −0 Original line number Diff line number Diff line # 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" } } Loading
apct-tests/perftests/multiuser/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -31,5 +31,6 @@ android_test { ], platform_apis: true, test_suites: ["device-tests"], data: ["trace_configs/*"], certificate: "platform", }
apct-tests/perftests/multiuser/AndroidTest.xml +37 −0 Original line number Diff line number Diff line Loading @@ -16,14 +16,51 @@ <configuration description="Runs MultiUserPerfTests metric instrumentation."> <option name="test-suite-tag" value="apct" /> <option name="test-suite-tag" value="apct-metric-instrumentation" /> <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller"> <option name="cleanup-apks" value="true" /> <option name="test-file-name" value="MultiUserPerfTests.apk" /> <option name="test-file-name" value="MultiUserPerfDummyApp.apk" /> </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" > <option name="package" value="com.android.perftests.multiuser" /> <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> </configuration>
apct-tests/perftests/multiuser/trace_configs/trace_config_multi_user.textproto 0 → 100644 +154 −0 Original line number Diff line number Diff line # 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" } }