diff options
Diffstat (limited to 'user_activity_benchmarks/collect_experiment_data_odd_even_session.sh')
-rwxr-xr-x | user_activity_benchmarks/collect_experiment_data_odd_even_session.sh | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/user_activity_benchmarks/collect_experiment_data_odd_even_session.sh b/user_activity_benchmarks/collect_experiment_data_odd_even_session.sh new file mode 100755 index 00000000..900e582b --- /dev/null +++ b/user_activity_benchmarks/collect_experiment_data_odd_even_session.sh @@ -0,0 +1,95 @@ +#!/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 +# for odd/even profile collection session ids. +# The data is collected for an odd or even collection session id. + +set -e + +if [ $# -lt 8 ]; then + echo "Usage: collect_experiment_data_odd_even_session.sh cwp_table board " \ + "board_arch Chrome_version Chrome_OS_version odd_even " \ + "inclusive_output_file pairwise_inclusive_output_file" + exit 1 +fi + +readonly TABLE=$1 +readonly INCLUSIVE_OUTPUT_FILE=$7 +readonly PAIRWISE_INCLUSIVE_OUTPUT_FILE=$8 +readonly PERIODIC_COLLECTION=1 +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 \ + MOD(session.id, 2) = $6 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" |