From 3fc5e2c322eeb04fd552979e6f355d2069606c23 Mon Sep 17 00:00:00 2001 From: Igor Murashkin Date: Tue, 25 Feb 2020 14:18:55 -0800 Subject: startop: Fix scripts and add --reportfullydrawn Fixes a bug in the scripts which prevented true cold starts from happening (it was force-stopping the activity after the dropcaches). Also adds -rfd/--reportfullydrawn to make rfd parsing optional since most apps don't have it. Bug: 150237362 Test: run_app_with_prefetch -r cold Change-Id: I132bfc3ccd4d96f171ed364ef64387bbf2c78091 --- startop/scripts/app_startup/parse_metrics | 20 +++++++++++++++----- startop/scripts/app_startup/run_app_with_prefetch | 19 ++++++++++++++++++- startop/scripts/app_startup/run_app_with_prefetch.py | 0 3 files changed, 33 insertions(+), 6 deletions(-) mode change 100644 => 100755 startop/scripts/app_startup/run_app_with_prefetch.py (limited to 'startop') diff --git a/startop/scripts/app_startup/parse_metrics b/startop/scripts/app_startup/parse_metrics index 036609ff02be..3fa1462bc56e 100755 --- a/startop/scripts/app_startup/parse_metrics +++ b/startop/scripts/app_startup/parse_metrics @@ -42,12 +42,14 @@ Usage: launch_application package activity | parse_metrics --package --ti -h, --help usage information (this) -v, --verbose enable extra verbose printing -t, --timeout how many seconds to timeout when trying to wait for logcat to change + -rfd, --reportfullydrawn wait for report fully drawn (default: off) EOF } DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source "$DIR/lib/common" +report_fully_drawn="n" package="" activity="" timeout=5 @@ -81,6 +83,11 @@ parse_arguments() { -s|--simulate) simulate="y" ;; + -rfd|--reportfullydrawn) + report_fully_drawn="y" + ;; + + *) echo "Invalid argument: $1" >&2 exit 1 @@ -190,12 +197,15 @@ re_pattern='.*Displayed[[:blank:]]\+'"${package}"'[/][^[:blank:]]\+[[:blank:]]+\ parse_metric_from_logcat "Displayed_ms" "$pattern" "$re_pattern" -# 01-16 17:31:44.550 11172 11204 I ActivityTaskManager: Fully drawn com.google.android.GoogleCamera/com.android.camera.CameraLauncher: +10s897ms -pattern="ActivityTaskManager: Fully drawn ${package}" -#re_pattern='.*Fully drawn[[:blank:]]\+'"${package}"'[/][^[:blank:]]\+[[:blank:]]+\([[:digit:]]\+\).*' -re_pattern='.*Fully drawn[[:blank:]]\+'"${package}"'[/][^[:blank:]]\+[[:blank:]]+\([[:digit:]]\+ms\|[[:digit:]]\+s[[:digit:]]\+ms\).*' +# Only track ReportFullyDrawn with --reportfullydrawn/-rfd flags +if [[ $report_fully_drawn == y ]]; then + # 01-16 17:31:44.550 11172 11204 I ActivityTaskManager: Fully drawn com.google.android.GoogleCamera/com.android.camera.CameraLauncher: +10s897ms + pattern="ActivityTaskManager: Fully drawn ${package}" + #re_pattern='.*Fully drawn[[:blank:]]\+'"${package}"'[/][^[:blank:]]\+[[:blank:]]+\([[:digit:]]\+\).*' + re_pattern='.*Fully drawn[[:blank:]]\+'"${package}"'[/][^[:blank:]]\+[[:blank:]]+\([[:digit:]]\+ms\|[[:digit:]]\+s[[:digit:]]\+ms\).*' -parse_metric_from_logcat "Fully_drawn_ms" "$pattern" "$re_pattern" + parse_metric_from_logcat "Fully_drawn_ms" "$pattern" "$re_pattern" +fi # also call into package-specific scripts if there are additional metrics if [[ -x "$DIR/metrics/$package" ]]; then diff --git a/startop/scripts/app_startup/run_app_with_prefetch b/startop/scripts/app_startup/run_app_with_prefetch index 92a31c30a12d..31f625334b1e 100755 --- a/startop/scripts/app_startup/run_app_with_prefetch +++ b/startop/scripts/app_startup/run_app_with_prefetch @@ -35,6 +35,7 @@ EOF DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source "$DIR/../iorap/common" +report_fully_drawn="n" needs_trace_file="n" input_file="" package="" @@ -70,6 +71,10 @@ parse_arguments() { mode="$2" shift ;; + -rfd|--reportfullydrawn) + report_fully_drawn="y" + shift + ;; -c|--count) count="$2" ((count+=1)) @@ -403,7 +408,11 @@ parse_metrics_header() { join_by ',' "${all_metrics[@]}" } -metrics_header="$("$DIR/parse_metrics" --package "$package" --activity "$activity" --simulate | parse_metrics_header)" +if [[ $report_fully_drawn == y ]]; then + metrics_header="$("$DIR/parse_metrics" --package "$package" --activity "$activity" --simulate --reportfullydrawn | parse_metrics_header)" +else + metrics_header="$("$DIR/parse_metrics" --package "$package" --activity "$activity" --simulate | parse_metrics_header)" +fi # TODO: This loop logic could probably be moved into app_startup_runner.py for ((i=0;i /proc/sys/vm/drop_caches" @@ -423,7 +435,12 @@ for ((i=0;i&2 diff --git a/startop/scripts/app_startup/run_app_with_prefetch.py b/startop/scripts/app_startup/run_app_with_prefetch.py old mode 100644 new mode 100755 -- cgit v1.2.3