blob: 120296938a98be2a95d68dde061bc0c90cd81b7e [file] [log] [blame]
#!/bin/bash
#
# Reduce hash-table performance data.
#
# Usage: sh reduce.sh tag
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# Copyright (C) IBM Corporation, 2013
#
# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
tag="$1"
T=/tmp/reduce.sh.$$
trap 'rm -rf $T' 0
mkdir $T
grep -v '^nohup:' | grep -v '^perf' | grep -v '^ns' | grep -v 'rcu_exit_sig:' > $T/filt
awk < $T/filt '
/^nlookups:/ {
for (i = 1; i <= NF; i++) {
if ($i ~ /[0-9][0-9]*/)
l[i] += $i;
else
l[i] = $i;
}
}
/^hash/ && $0 != old && old != "" {
n = 0;
for (i in l)
n++;
for (i = 1; i <= n; i++) {
printf "%s", l[i] " ";
l[i] = "";
}
print "@@@ " old;
old = $0;
}
/^hash/ && old == "" {
old = $0;
}
END {
n = 0;
for (i in l)
n++;
for (i = 1; i <= n; i++) {
printf "%s", l[i] " ";
l[i] = "";
}
print "@@@ " old;
}' > $T/sum
# Produce .dat files for perftest
grep -e '--perftest' $T/sum |
awk -v tag="$tag" \
'{
dur = $9;
print($14, $2 / dur) > "perftest." $11 "." tag ".dat"
}'
# Produce .dat files for zoo scenario varying ncpus
grep -e '--schroedinger' $T/sum | grep -v -e '--nbuckets' |
grep -v -e '--nupdaters' | grep -v -e '--ncats' |
awk -v tag="$tag" \
'{
dur = $11;
print($16, $2 / dur) > "zoo.cpus." $13 "." tag ".dat"
}'
for i in 2048 4096 8192 16384
do
grep -e '--schroedinger' $T/sum | grep -e "--nbuckets $i" |
grep -v -e '--nupdaters' | grep -v -e '--ncats' |
awk -v tag="$tag" -v i="$i" \
'{
dur = $11;
print($16, $2 / dur) > "zoo.cpus." $13 "-" i "." tag ".dat"
}'
done
# Produce .dat files for zoo scenario varying ncats.
grep -e '--ncats' $T/sum | grep -v -e '--nupdaters' |
awk -v tag="$tag" \
'{
dur = $11;
print($18, $2 / dur) > "zoo.catall." $13 "." tag ".dat"
print($18, $5 / dur) > "zoo.cat." $13 "." tag ".dat"
}'
# Produce .dat files for zoo scenario varying updaters
grep -v -e '--ncats' $T/sum | grep -e '--nupdaters' |
awk -v tag="$tag" \
'{
dur = $11;
print($18, " Reads: " $2 / dur " Readfails: " $3 / dur " Adds: " $7 / dur " Dels: " $9 / dur " (All in ms)") > "zoo.mix." $13 "." tag ".out"
print($18, $2 / dur) > "zoo.updrd." $13 "." tag ".dat"
print($18, ($7 + $9) / dur) > "zoo.upd." $13 "." tag ".dat"
}'
# Produce .dat files for mixed zoo scenario.
sort -k18n $T/sum | grep -e '--ncats' | grep -e '--nupdaters' |
awk -v tag="$tag" \
'{
dur = $11;
print($18, " Reads: " $2 / dur " Readfails: " $3 / dur " Catreads: " $5 / dur " Adds: " $7 / dur " Dels: " $9 / dur " (All in ms)") > "zoo.mix." $13 "." tag ".out"
print($18, $2 / dur) > "zoo.reads." $13 "." tag ".dat"
print($18, ($7 + $9) / dur) > "zoo.updates." $13 "." tag ".dat"
}'
echo "Hit ^C to continue:"
sleep 10000