aboutsummaryrefslogtreecommitdiff
path: root/user_activity_benchmarks/collect_experiment_data.sh
diff options
context:
space:
mode:
Diffstat (limited to 'user_activity_benchmarks/collect_experiment_data.sh')
-rwxr-xr-xuser_activity_benchmarks/collect_experiment_data.sh88
1 files changed, 88 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..8ba0852b
--- /dev/null
+++ b/user_activity_benchmarks/collect_experiment_data.sh
@@ -0,0 +1,88 @@
+#!/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 6 ]; then
+ echo "USAGE: collect_validation_data.sh cwp_table board board_arch " \
+ "Chrome_OS_release inclusive_output_file pairwise_inclusive_output_file"
+ exit 1
+fi
+
+readonly TABLE=$1
+readonly INCLUSIVE_OUTPUT_FILE=$5
+readonly PAIRWISE_INCLUSIVE_OUTPUT_FILE=$6
+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.collection_info.trigger_event = $PERIODIC_COLLECTION"
+
+# Collects the function, with its file, the object and inclusive count
+# fraction out of the total amount of inclusive count values.
+echo "set sql_dialect GoogleSQL;
+
+SELECT
+ replace(frame.function_name, \", \", \"; \") AS function,
+ frame.filename AS file,
+ frame.load_module_path AS dso,
+ 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 --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 "set sql_dialect GoogleSQL;
+
+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_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
+ parent_child_functions,
+ child_function_file,
+ child_function_dso
+HAVING
+ inclusive_count_fraction > 0.0
+ORDER BY
+ inclusive_count_fraction DESC;
+" | dremel --output=csv > "$PAIRWISE_INCLUSIVE_OUTPUT_FILE"