Loading apct-tests/perftests/tracing/Android.bp +2 −1 Original line number Diff line number Diff line Loading @@ -21,12 +21,13 @@ android_test { "androidx.annotation_annotation", "apct-perftests-utils", "collector-device-lib", "collector-device-lib-platform", "platform-test-annotations", "perfetto_trace_java_protos", ], test_suites: [ "device-tests", "automotive-tests", "performance-tests", ], data: [":perfetto_artifacts"], platform_apis: true, Loading apct-tests/perftests/tracing/AndroidTest.xml +85 −6 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ limitations under the License. --> <configuration description="Runs ProtologPerfTests metric instrumentation."> <option name="config-descriptor:metadata" key="test-type" value="performance" /> <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"> Loading Loading @@ -42,7 +44,7 @@ <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" /> <option name="device-listeners" value="android.device.collectors.ProcLoadListener,android.device.collectors.SimpleperfListener,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" /> Loading @@ -57,11 +59,88 @@ <!-- 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="listener" value="android.device.collectors.CpuUsageListener,android.device.collectors.ProcLoadListener,android.device.collectors.PerfettoListener,android.device.collectors.CrashListener,android.device.collectors.ThermalListener,android.device.collectors.TotalPssMetricListener,android.device.collectors.LogcatCollector,android.device.collectors.HeapDumpListener"/> <option name="instrumentation-arg" key="procload-collector:per_run" value="true"/> <option name="instrumentation-arg" key="procload-collector:proc-loadavg-timeout" value="900000"/> <option name="instrumentation-arg" key="procload-collector:proc-loadavg-interval" value="20000"/> <option name="instrumentation-arg" key="procload-collector:proc-loadavg-threshold" value="2"/> <option name="instrumentation-arg" key="cpuusage-collector:disable_per_pkg" value="true"/> <option name="instrumentation-arg" key="cpuusage-collector:disable_per_freq" value="true"/> <option name="instrumentation-arg" key="cpuusage-collector:log" value="true"/> <option name="instrumentation-arg" key="trace-processor-name" value="trace_processor_shell"/> <option name="instrumentation-arg" key="logcat-collector:collect-on-failure-only" value="true"/> <option name="instrumentation-arg" key="perfetto_persist_pid_track" value="false"/> <option name="instrumentation-arg" key="totalpss-collector:log" value="true"/> <option name="instrumentation-arg" key="crash-collector:log" value="true"/> <option name="instrumentation-arg" key="skip_test_failure_metrics" value="true"/> <option name="instrumentation-arg" key="include-ui-xml" value="true"/> <option name="instrumentation-arg" key="app-version-listener:per_run" value="true"/> <option name="isolated-storage" value="false"/> </test> <!-- <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector"> <option name="directory-keys" value="/data/local/tmp/ProtologPerfTests" /> --> <!-- Needed for pulling the collected trace config on to the host --> <!-- <option name="pull-pattern-keys" value="perfetto_file_path" /> </metrics_collector> --> <metrics_collector class="com.android.tradefed.device.metric.PerfettoFilePullerCollector"> <option name="pull-pattern-keys" value="^perfetto_file_path(_\d+)?$" /> <option name="collect-on-run-ended-only" value="false"/> </metrics_collector> <!-- Post processors run in the reverse order to that in xml, so the order is: 1. PerfettoTracePostProcessor runs the trace_processor to produce a metric proto 2. PerfettoGenericPostProcessor parses the proto to produce metrics as key-value pairs 3. MetricFilePostProcessor writes the metrics to a file --> <metric_post_processor class="com.android.tradefed.postprocessor.MetricFilePostProcessor"/> <metric_post_processor class="com.android.tradefed.postprocessor.PerfettoGenericPostProcessor"> <option name="perfetto-proto-file-prefix" value="metric_perfetto"/> <option name="perfetto-proto-file-prefix" value="metric_v2_perfetto"/> <!-- Memory related metrics --> <option name="perfetto-prefix-key-field" value="perfetto.protos.AndroidGpuMetric.Process.name"/> <option name="perfetto-metric-filter-regex" value="android_mem-process_metrics-process_name-.*-total_counters-.*"/> <option name="perfetto-metric-replace-prefix" key="android_mem-process_metrics-process_name" value="android_mem"/> <!-- PnP related metrics. --> <option name="perfetto-metric-filter-regex" value="android_batt-battery_aggregates-avg_power_mw"/> <option name="perfetto-metric-filter-regex" value="android_frame_timeline_metric-(total_frames|missed_app_frames)"/> <!-- Metric for wattson energy/power consumption --> <option name="perfetto-metric-filter-regex" value="wattson_atrace_apps_rails-period_info-period_name-*.*-cpu_subsystem-estimated_mw\b"/> <option name="perfetto-metric-filter-regex" value="wattson_atrace_apps_rails-period_info-period_name-*.*-cpu_subsystem-estimated_mws"/> <option name="perfetto-metric-replace-prefix" key="wattson_atrace_apps_rails-period_info-period_name" value="wattson_apps_rails-name"/> <!-- Metric for android anomaly detection--> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-system_server-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_incoming_process_count_per_second-process_name-system_server-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-/system/bin/servicemanager-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_incoming_process_count_per_second-process_name-/system/bin/servicemanager-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-com.google.android.apps.nexuslauncher-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_incoming_process_count_per_second-process_name-com.google.android.apps.nexuslauncher-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-com.android.systemui-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_incoming_process_count_per_second-process_name-com.android.systemui-value"/> <option name="perfetto-prefix-key-field" value="perfetto.protos.AndroidAnomalyMetric.ProcessAnomaly.process_name"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-system_server-value" value="android_anomaly-max_outgoing_process_name-system_server"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_incoming_process_count_per_second-process_name-system_server-value" value="android_anomaly-max_incoming_process_name-system_server"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-/system/bin/servicemanager-value" value="android_anomaly-max_outgoing_process_name-/system/bin/servicemanager"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_incoming_process_count_per_second-process_name-/system/bin/servicemanager-value" value="android_anomaly-max_incoming_process_name-/system/bin/servicemanager"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-com.android.systemui-value" value="android_anomaly-max_outgoing_process_name-com.android.systemui"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_incoming_process_count_per_second-process_name-com.android.systemui-value" value="android_anomaly-max_incoming_process_name-com.android.systemui"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-com.google.android.apps.nexuslauncher-value" value="android_anomaly-max_outgoing_process_name-com.google.android.apps.nexuslauncher"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_incoming_process_count_per_second-process_name-com.google.android.apps.nexuslauncher-value" value="android_anomaly-max_incoming_process_name-com.google.android.apps.nexuslauncher"/> </metric_post_processor> <metric_post_processor class="com.android.tradefed.postprocessor.PerfettoTracePostProcessor"> <!-- V1 metrics --> <option name="trace-processor-run-metrics" value="android_batt,android_frame_timeline_metric,android_mem,android_gpu,android_ion,android_dma_heap"/> </metric_post_processor> <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector"> <option name="pull-pattern-keys" value="managed_heapdump_file.*"/> <option name="pull-pattern-keys" value="android.device.collectors.LogcatCollector.*"/> <!-- Passing case already collected by PerfettoPullerMetricCollector --> <option name="pull-pattern-keys" value="^perfetto_file_path_FAILED(_\d+)?$"/> <option name="clean-up" value="false"/> <option name="collect-on-run-ended-only" value="false"/> </metrics_collector> </configuration> Loading
apct-tests/perftests/tracing/Android.bp +2 −1 Original line number Diff line number Diff line Loading @@ -21,12 +21,13 @@ android_test { "androidx.annotation_annotation", "apct-perftests-utils", "collector-device-lib", "collector-device-lib-platform", "platform-test-annotations", "perfetto_trace_java_protos", ], test_suites: [ "device-tests", "automotive-tests", "performance-tests", ], data: [":perfetto_artifacts"], platform_apis: true, Loading
apct-tests/perftests/tracing/AndroidTest.xml +85 −6 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ limitations under the License. --> <configuration description="Runs ProtologPerfTests metric instrumentation."> <option name="config-descriptor:metadata" key="test-type" value="performance" /> <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"> Loading Loading @@ -42,7 +44,7 @@ <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" /> <option name="device-listeners" value="android.device.collectors.ProcLoadListener,android.device.collectors.SimpleperfListener,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" /> Loading @@ -57,11 +59,88 @@ <!-- 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="listener" value="android.device.collectors.CpuUsageListener,android.device.collectors.ProcLoadListener,android.device.collectors.PerfettoListener,android.device.collectors.CrashListener,android.device.collectors.ThermalListener,android.device.collectors.TotalPssMetricListener,android.device.collectors.LogcatCollector,android.device.collectors.HeapDumpListener"/> <option name="instrumentation-arg" key="procload-collector:per_run" value="true"/> <option name="instrumentation-arg" key="procload-collector:proc-loadavg-timeout" value="900000"/> <option name="instrumentation-arg" key="procload-collector:proc-loadavg-interval" value="20000"/> <option name="instrumentation-arg" key="procload-collector:proc-loadavg-threshold" value="2"/> <option name="instrumentation-arg" key="cpuusage-collector:disable_per_pkg" value="true"/> <option name="instrumentation-arg" key="cpuusage-collector:disable_per_freq" value="true"/> <option name="instrumentation-arg" key="cpuusage-collector:log" value="true"/> <option name="instrumentation-arg" key="trace-processor-name" value="trace_processor_shell"/> <option name="instrumentation-arg" key="logcat-collector:collect-on-failure-only" value="true"/> <option name="instrumentation-arg" key="perfetto_persist_pid_track" value="false"/> <option name="instrumentation-arg" key="totalpss-collector:log" value="true"/> <option name="instrumentation-arg" key="crash-collector:log" value="true"/> <option name="instrumentation-arg" key="skip_test_failure_metrics" value="true"/> <option name="instrumentation-arg" key="include-ui-xml" value="true"/> <option name="instrumentation-arg" key="app-version-listener:per_run" value="true"/> <option name="isolated-storage" value="false"/> </test> <!-- <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector"> <option name="directory-keys" value="/data/local/tmp/ProtologPerfTests" /> --> <!-- Needed for pulling the collected trace config on to the host --> <!-- <option name="pull-pattern-keys" value="perfetto_file_path" /> </metrics_collector> --> <metrics_collector class="com.android.tradefed.device.metric.PerfettoFilePullerCollector"> <option name="pull-pattern-keys" value="^perfetto_file_path(_\d+)?$" /> <option name="collect-on-run-ended-only" value="false"/> </metrics_collector> <!-- Post processors run in the reverse order to that in xml, so the order is: 1. PerfettoTracePostProcessor runs the trace_processor to produce a metric proto 2. PerfettoGenericPostProcessor parses the proto to produce metrics as key-value pairs 3. MetricFilePostProcessor writes the metrics to a file --> <metric_post_processor class="com.android.tradefed.postprocessor.MetricFilePostProcessor"/> <metric_post_processor class="com.android.tradefed.postprocessor.PerfettoGenericPostProcessor"> <option name="perfetto-proto-file-prefix" value="metric_perfetto"/> <option name="perfetto-proto-file-prefix" value="metric_v2_perfetto"/> <!-- Memory related metrics --> <option name="perfetto-prefix-key-field" value="perfetto.protos.AndroidGpuMetric.Process.name"/> <option name="perfetto-metric-filter-regex" value="android_mem-process_metrics-process_name-.*-total_counters-.*"/> <option name="perfetto-metric-replace-prefix" key="android_mem-process_metrics-process_name" value="android_mem"/> <!-- PnP related metrics. --> <option name="perfetto-metric-filter-regex" value="android_batt-battery_aggregates-avg_power_mw"/> <option name="perfetto-metric-filter-regex" value="android_frame_timeline_metric-(total_frames|missed_app_frames)"/> <!-- Metric for wattson energy/power consumption --> <option name="perfetto-metric-filter-regex" value="wattson_atrace_apps_rails-period_info-period_name-*.*-cpu_subsystem-estimated_mw\b"/> <option name="perfetto-metric-filter-regex" value="wattson_atrace_apps_rails-period_info-period_name-*.*-cpu_subsystem-estimated_mws"/> <option name="perfetto-metric-replace-prefix" key="wattson_atrace_apps_rails-period_info-period_name" value="wattson_apps_rails-name"/> <!-- Metric for android anomaly detection--> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-system_server-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_incoming_process_count_per_second-process_name-system_server-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-/system/bin/servicemanager-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_incoming_process_count_per_second-process_name-/system/bin/servicemanager-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-com.google.android.apps.nexuslauncher-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_incoming_process_count_per_second-process_name-com.google.android.apps.nexuslauncher-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-com.android.systemui-value"/> <option name="perfetto-metric-filter-regex" value="android_anomaly-binder-max_incoming_process_count_per_second-process_name-com.android.systemui-value"/> <option name="perfetto-prefix-key-field" value="perfetto.protos.AndroidAnomalyMetric.ProcessAnomaly.process_name"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-system_server-value" value="android_anomaly-max_outgoing_process_name-system_server"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_incoming_process_count_per_second-process_name-system_server-value" value="android_anomaly-max_incoming_process_name-system_server"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-/system/bin/servicemanager-value" value="android_anomaly-max_outgoing_process_name-/system/bin/servicemanager"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_incoming_process_count_per_second-process_name-/system/bin/servicemanager-value" value="android_anomaly-max_incoming_process_name-/system/bin/servicemanager"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-com.android.systemui-value" value="android_anomaly-max_outgoing_process_name-com.android.systemui"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_incoming_process_count_per_second-process_name-com.android.systemui-value" value="android_anomaly-max_incoming_process_name-com.android.systemui"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_outgoing_process_count_per_second-process_name-com.google.android.apps.nexuslauncher-value" value="android_anomaly-max_outgoing_process_name-com.google.android.apps.nexuslauncher"/> <option name="perfetto-metric-replace-prefix" key="android_anomaly-binder-max_incoming_process_count_per_second-process_name-com.google.android.apps.nexuslauncher-value" value="android_anomaly-max_incoming_process_name-com.google.android.apps.nexuslauncher"/> </metric_post_processor> <metric_post_processor class="com.android.tradefed.postprocessor.PerfettoTracePostProcessor"> <!-- V1 metrics --> <option name="trace-processor-run-metrics" value="android_batt,android_frame_timeline_metric,android_mem,android_gpu,android_ion,android_dma_heap"/> </metric_post_processor> <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector"> <option name="pull-pattern-keys" value="managed_heapdump_file.*"/> <option name="pull-pattern-keys" value="android.device.collectors.LogcatCollector.*"/> <!-- Passing case already collected by PerfettoPullerMetricCollector --> <option name="pull-pattern-keys" value="^perfetto_file_path_FAILED(_\d+)?$"/> <option name="clean-up" value="false"/> <option name="collect-on-run-ended-only" value="false"/> </metrics_collector> </configuration>