data-aggregator

This change introduces a loose collection of scripts for
analysis/aggregation of FAIL*'s collected data.
It's going to be developed into a proper tool in the future.

Change-Id: I63f14d87dd86b62817ec3d8089079d70f58c89c9
This commit is contained in:
Michael Lenz
2016-02-11 09:41:18 +01:00
committed by Horst Schirmeier
parent 806c71580f
commit f171fe9286
6 changed files with 137 additions and 0 deletions

View File

@ -7,6 +7,7 @@ option(BUILD_COMPUTE_HOPS "Build the compute hops tool?" OFF)
option(BUILD_DUMP_HOPS "Build the hops dump tool?" OFF) option(BUILD_DUMP_HOPS "Build the hops dump tool?" OFF)
option(BUILD_FAULTSPACEPLOT "Build the faultspace plotting tool?" OFF) option(BUILD_FAULTSPACEPLOT "Build the faultspace plotting tool?" OFF)
option(BUILD_DATA_AGGREGATOR "Build the data aggregation tools?" OFF)
### Setup search paths for headers ## ### Setup search paths for headers ##
include_directories(${CMAKE_CURRENT_BINARY_DIR}/../src/core) include_directories(${CMAKE_CURRENT_BINARY_DIR}/../src/core)
@ -39,3 +40,7 @@ endif(BUILD_DUMP_HOPS)
if(BUILD_FAULTSPACEPLOT) if(BUILD_FAULTSPACEPLOT)
add_subdirectory(analysis/faultspaceplot) add_subdirectory(analysis/faultspaceplot)
endif(BUILD_FAULTSPACEPLOT) endif(BUILD_FAULTSPACEPLOT)
if(BUILD_DATA_AGGREGATOR)
add_subdirectory(analysis/data-aggregator)
endif(BUILD_DATA_AGGREGATOR)

View File

@ -0,0 +1 @@
install(PROGRAMS resulttype-occurrences_coverage.sh resulttype-occurrences.sh symbol-occurrences_coverage.sh symbol-occurrences.sh DESTINATION bin)

View File

@ -0,0 +1,28 @@
#!/bin/bash
set -e
if [ ! $# -eq 3 ]; then
echo "usage: $0 DATABASE VARIANT BENCHMARK" >&2
exit 1
fi
DATABASE=$1
VARIANT=$2
BENCHMARK=$3
# add "-t" for more readable output
MYSQL="mysql -B --quick $DATABASE"
$MYSQL << EOT
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
SELECT r.resulttype, SUM((t.time2-t.time1+1) * t.width) AS occurrences
FROM result_GenericExperimentMessage r
INNER JOIN fspgroup g ON g.pilot_id=r.pilot_id
INNER JOIN trace t ON g.instr2=t.instr2
AND g.data_address=t.data_address
AND g.variant_id=t.variant_id
INNER JOIN variant v ON t.variant_id=v.id
WHERE v.variant="$VARIANT"
AND v.benchmark="$BENCHMARK"
GROUP BY r.resulttype
ORDER BY r.resulttype ASC;
EOT

View File

@ -0,0 +1,40 @@
#!/bin/bash
set -e
if [ ! $# -eq 3 ]; then
echo "usage: $0 DATABASE VARIANT BENCHMARK" >&2
exit 1
fi
DATABASE=$1
VARIANT=$2
BENCHMARK=$3
# add "-t" for more readable output
MYSQL="mysql -B --quick $DATABASE"
$MYSQL << EOT
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
SELECT r.resulttype,
SUM((t.time2-t.time1+1) * t.width)
/
(SELECT SUM(t.time2-t.time1+1)*t.width
FROM result_GenericExperimentMessage r
INNER JOIN fspgroup g ON g.pilot_id=r.pilot_id
INNER JOIN trace t ON g.instr2=t.instr2
AND g.data_address=t.data_address
AND g.variant_id=t.variant_id
INNER JOIN variant v ON t.variant_id=v.id
WHERE v.variant="$VARIANT"
AND v.benchmark="$BENCHMARK"
) AS coverage
FROM result_GenericExperimentMessage r
INNER JOIN fspgroup g ON g.pilot_id=r.pilot_id
INNER JOIN trace t ON g.instr2=t.instr2
AND g.data_address=t.data_address
AND g.variant_id=t.variant_id
INNER JOIN variant v ON t.variant_id=v.id
WHERE v.variant="$VARIANT"
AND v.benchmark="$BENCHMARK"
GROUP BY r.resulttype
ORDER BY r.resulttype ASC;
EOT

View File

@ -0,0 +1,26 @@
#!/bin/bash
set -e
if [ ! $# -eq 3 ]; then
echo "usage: $0 DATABASE VARIANT BENCHMARK" >&2
exit 1
fi
DATABASE=$1
VARIANT=$2
BENCHMARK=$3
# add "-t" for more readable output
MYSQL="mysql -B --quick $DATABASE"
$MYSQL << EOT
SELECT v.benchmark, v.variant, s.name, s.size, r.resulttype, SUM(t.time2-t.time1+1) AS occurrences
FROM variant v
INNER JOIN symbol s ON v.id = s.variant_id
INNER JOIN trace t ON t.variant_id = v.id AND t.data_address BETWEEN s.address AND s.address + s.size - 1
INNER JOIN fspgroup g ON t.variant_id = g.variant_id AND t.data_address = g.data_address AND t.instr2 = g.instr2
INNER JOIN result_GenericExperimentMessage r ON r.pilot_id = g.pilot_id
WHERE v.variant="$VARIANT"
AND v.benchmark="$BENCHMARK"
GROUP BY v.benchmark, v.variant, s.name, r.resulttype
ORDER BY v.benchmark, v.variant, s.name, r.resulttype;
EOT

View File

@ -0,0 +1,37 @@
#!/bin/bash
set -e
if [ ! $# -eq 3 ]; then
echo "usage: $0 DATABASE VARIANT BENCHMARK" >&2
exit 1
fi
DATABASE=$1
VARIANT=$2
BENCHMARK=$3
# add "-t" for more readable output
MYSQL="mysql -B --quick $DATABASE"
$MYSQL << EOT
SELECT v.benchmark, v.variant, s.name, s.size, r.resulttype,
SUM(t.time2-t.time1+1)
/
(SELECT SUM(t.time2-t.time1+1)
FROM variant v
INNER JOIN symbol s ON v.id = s.variant_id
INNER JOIN trace t ON t.variant_id = v.id AND t.data_address BETWEEN s.address AND s.address + s.size - 1
INNER JOIN fspgroup g ON t.variant_id = g.variant_id AND t.data_address = g.data_address AND t.instr2 = g.instr2
INNER JOIN result_GenericExperimentMessage r ON r.pilot_id = g.pilot_id
WHERE v.variant="$VARIANT"
AND v.benchmark="$BENCHMARK"
) AS coverage
FROM variant v
INNER JOIN symbol s ON v.id = s.variant_id
INNER JOIN trace t ON t.variant_id = v.id AND t.data_address BETWEEN s.address AND s.address + s.size - 1
INNER JOIN fspgroup g ON t.variant_id = g.variant_id AND t.data_address = g.data_address AND t.instr2 = g.instr2
INNER JOIN result_GenericExperimentMessage r ON r.pilot_id = g.pilot_id
WHERE v.variant="$VARIANT"
AND v.benchmark="$BENCHMARK"
GROUP BY v.benchmark, v.variant, s.name, r.resulttype
ORDER BY v.benchmark, v.variant, s.name, r.resulttype;
EOT