1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#!/bin/bash 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# Copyright 2013 The Chromium Authors. All rights reserved. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# Use of this source code is governed by a BSD-style license that can be 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# found in the LICENSE file. 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# Produce memory metrics for run_apply_test 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdochsource "$(dirname ${0})/stress_test_common" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccicompute_percentiles() { 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if [ -z "${1}" ]; then 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return; 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fi 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch local pctls=".5 .9 1" 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch local lines=$(cat ${1} | wc -l) 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch for p in $pctls; do 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch local count="$(echo "${lines} * $p" | bc -lq | cut -d. -f1)" 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch local bytes=$(cat ${1} \ 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci | cut -d' ' -f2 \ 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci | sort -n \ 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci | head -n$count \ 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci | tail -n1) 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch echo -n "$((bytes / 1000000))MB " 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch done 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmain() { 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if [ $# -lt 1 ]; then 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cat <<EOF 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 32116680a4aac90f2aa7413d9095a592090648e557Ben MurdochUSAGE: $(basename ${0}) dir 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciProduce memory metrics for run_apply_test. This shows the percentiles 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)of the max heap size across all files. 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEOF 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci exit 1 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fi 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci local dir="${1}" 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if [ ! -d "${dir}" ]; then 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci error "\"${dir}\" not found" exit 1 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fi 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci local metrics_dir="${dir}/metrics" 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci local metrics="${dir}/mem_per_file.txt" 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if [ ! -f "${metrics}" ]; then 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch local metrics_tmp="${metrics}.tmp" 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch echo "computing usage percentiles for courgette. this may take a while..." 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch find "${metrics_dir}" \ 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch | grep "\.apply_mem$" \ 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch | while read i; do 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch local apply_mem="${i}" 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch local unbz2_mem="${apply_mem%.apply_mem}.unbz2_mem" 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci local unxz_mem="${apply_mem%.apply_mem}.unxz_mem" 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci echo -n "$apply_mem " 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cat "${apply_mem}" "${unbz2_mem}" "${unxz_mem}" \ 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch | grep "mem_heap_B" \ 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci | cut -d= -f2 \ 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci | sort -nr \ 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci | head -n1 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci done | sort -k2 -n > "${metrics_tmp}" 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci mv "${metrics_tmp}" "${metrics}" 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fi 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci echo "$(compute_percentiles ${metrics})max heap per file for Courgette" \ 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "(50th 90th 100th)" 7003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 7103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) local metrics_bsdiff="${dir}/mem_per_file_bsdiff.txt" 7203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if [ ! -f "${metrics_bsdiff}" ]; then 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch local metrics_bsdiff_tmp="${metrics_bsdiff}.tmp" 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch echo "computing usage percentiles for bsdiff. this may take a while..." 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch find "${metrics_dir}" \ 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) | grep "\.bsdiff_mem$" \ 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch | while read i; do 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch local bsdiff_mem="${i}" 80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch echo -n "$bsdiff_mem " 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cat $bsdiff_mem \ 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) | grep "mem_heap_B" \ 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch | cut -d= -f2 \ 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch | sort -nr \ 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch | head -n1 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) done | sort -k2 -n > "${metrics_bsdiff_tmp}" 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mv "${metrics_bsdiff_tmp}" "${metrics_bsdiff}" 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fi 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci echo "$(compute_percentiles ${metrics_bsdiff})max heap per file for bsdiff" \ 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "(50th 90th 100th)" 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccimain "${@}" 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci