diff options
Diffstat (limited to 'user_activity_benchmarks/collect_experiment_data.sh')
-rwxr-xr-x | user_activity_benchmarks/collect_experiment_data.sh | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/user_activity_benchmarks/collect_experiment_data.sh b/user_activity_benchmarks/collect_experiment_data.sh new file mode 100755 index 00000000..a76cec82 --- /dev/null +++ b/user_activity_benchmarks/collect_experiment_data.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +# Copyright 2016 The Chromium OS Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# Uses Dremel queries to collect the inclusive and pairwise inclusive +# statistics. + +set -e + +if [ "$#" -ne 7 ]; then + echo "USAGE: collect_experiment_data.sh cwp_table board board_arch " \ + "Chrome_version Chrome_OS_version inclusive_output_file " \ + "pairwise_inclusive_output_file" + exit 1 +fi + +readonly TABLE=$1 +readonly INCLUSIVE_OUTPUT_FILE=$6 +readonly PAIRWISE_INCLUSIVE_OUTPUT_FILE=$7 +readonly PERIODIC_COLLECTION=1 +readonly WHERE_CLAUSE_SPECIFICATIONS="meta.cros.board = '$2' AND \ + meta.cros.cpu_architecture = '$3' AND \ + meta.cros.chrome_version LIKE '%$4%' AND \ + meta.cros.version = '$5' AND \ + meta.cros.collection_info.trigger_event = $PERIODIC_COLLECTION AND \ + session.total_count > 2000" + +# Collects the function, with its file, the object and inclusive count +# fraction out of the total amount of inclusive count values. +echo " +SELECT + replace(frame.function_name, \", \", \"; \") AS function, + frame.filename AS file, + frame.load_module_path AS dso, + SUM(frame.inclusive_count) AS inclusive_count, + SUM(frame.inclusive_count)/ANY_VALUE(total.value) AS inclusive_count_fraction +FROM + $TABLE table, + table.frame frame +CROSS JOIN ( + SELECT + SUM(count) AS value + FROM + $TABLE + WHERE + $WHERE_CLAUSE_SPECIFICATIONS +) AS total +WHERE + $WHERE_CLAUSE_SPECIFICATIONS +GROUP BY + function, + file, + dso +HAVING + inclusive_count_fraction > 0.0 +ORDER BY + inclusive_count_fraction DESC; +" | dremel --sql_dialect=GoogleSQL --min_completion_ratio=1.0 --output=csv \ + > "$INCLUSIVE_OUTPUT_FILE" + +# Collects the pair of parent and child functions, with the file and object +# where the child function is declared and the inclusive count fraction of the +# pair out of the total amount of inclusive count values. +echo " +SELECT + CONCAT(replace(frame.parent_function_name, \", \", \"; \"), \";;\", + replace(frame.function_name, \", \", \"; \")) AS parent_child_functions, + frame.filename AS child_function_file, + frame.load_module_path AS child_function_dso, + SUM(frame.inclusive_count)/ANY_VALUE(total.value) AS inclusive_count +FROM + $TABLE table, + table.frame frame +CROSS JOIN ( + SELECT + SUM(count) AS value + FROM $TABLE + WHERE + $WHERE_CLAUSE_SPECIFICATIONS +) AS total +WHERE + $WHERE_CLAUSE_SPECIFICATIONS +GROUP BY + parent_child_functions, + child_function_file, + child_function_dso +HAVING + inclusive_count > 0.0 +ORDER BY + inclusive_count DESC; +" | dremel --sql_dialect=GoogleSQL --min_completion_ratio=1.0 --output=csv > \ + "$PAIRWISE_INCLUSIVE_OUTPUT_FILE" |