#!/bin/bash # Copyright 2013 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Produce memory metrics for run_apply_test source "$(dirname ${0})/stress_test_common" compute_percentiles() { if [ -z "${1}" ]; then return; fi local pctls=".5 .9 1" local lines=$(cat ${1} | wc -l) for p in $pctls; do local count="$(echo "${lines} * $p" | bc -lq | cut -d. -f1)" local bytes=$(cat ${1} \ | cut -d' ' -f2 \ | sort -n \ | head -n$count \ | tail -n1) echo -n "$((bytes / 1000000))MB " done } main() { if [ $# -lt 1 ]; then cat <<EOF USAGE: $(basename ${0}) dir Produce memory metrics for run_apply_test. This shows the percentiles of the max heap size across all files. EOF exit 1 fi local dir="${1}" if [ ! -d "${dir}" ]; then error "\"${dir}\" not found" exit 1 fi local metrics_dir="${dir}/metrics" local metrics="${dir}/mem_per_file.txt" if [ ! -f "${metrics}" ]; then local metrics_tmp="${metrics}.tmp" echo "computing usage percentiles for courgette. this may take a while..." find "${metrics_dir}" \ | grep "\.apply_mem$" \ | while read i; do local apply_mem="${i}" local unbz2_mem="${apply_mem%.apply_mem}.unbz2_mem" local unxz_mem="${apply_mem%.apply_mem}.unxz_mem" echo -n "$apply_mem " cat "${apply_mem}" "${unbz2_mem}" "${unxz_mem}" \ | grep "mem_heap_B" \ | cut -d= -f2 \ | sort -nr \ | head -n1 done | sort -k2 -n > "${metrics_tmp}" mv "${metrics_tmp}" "${metrics}" fi echo "$(compute_percentiles ${metrics})max heap per file for Courgette" \ "(50th 90th 100th)" local metrics_bsdiff="${dir}/mem_per_file_bsdiff.txt" if [ ! -f "${metrics_bsdiff}" ]; then local metrics_bsdiff_tmp="${metrics_bsdiff}.tmp" echo "computing usage percentiles for bsdiff. this may take a while..." find "${metrics_dir}" \ | grep "\.bsdiff_mem$" \ | while read i; do local bsdiff_mem="${i}" echo -n "$bsdiff_mem " cat $bsdiff_mem \ | grep "mem_heap_B" \ | cut -d= -f2 \ | sort -nr \ | head -n1 done | sort -k2 -n > "${metrics_bsdiff_tmp}" mv "${metrics_bsdiff_tmp}" "${metrics_bsdiff}" fi echo "$(compute_percentiles ${metrics_bsdiff})max heap per file for bsdiff" \ "(50th 90th 100th)" } main "${@}"