Add FaultsFiltered query to exclude memory regions
This commit is contained in:
@ -4,10 +4,12 @@ use strict;
|
||||
use warnings;
|
||||
use diagnostics;
|
||||
|
||||
use feature 'say';
|
||||
|
||||
sub query {
|
||||
my ($experiment) = @_;
|
||||
|
||||
return "SELECT
|
||||
my $querystring = "SELECT
|
||||
benchmark, resulttype, SUM(t.time2 - t.time1 + 1) AS faults,
|
||||
CONCAT('0x', HEX(p.injection_instr_absolute)) AS fault_address
|
||||
FROM variant v
|
||||
@ -18,6 +20,10 @@ JOIN fsppilot p ON r.pilot_id = p.id
|
||||
WHERE v.variant = '$experiment'
|
||||
GROUP BY benchmark, resulttype, p.injection_instr_absolute
|
||||
ORDER BY benchmark, resulttype, SUM(t.time2 - t.time1 + 1) DESC;";
|
||||
|
||||
say $querystring;
|
||||
|
||||
return $querystring;
|
||||
}
|
||||
|
||||
sub args { return "--batch --raw"; }
|
||||
|
||||
64
scripts/Queries/FaultsFiltered.pm
Normal file
64
scripts/Queries/FaultsFiltered.pm
Normal file
@ -0,0 +1,64 @@
|
||||
package Queries::FaultsFiltered;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use diagnostics;
|
||||
|
||||
use FindBin;
|
||||
use lib "$FindBin::Bin/../Modules";
|
||||
use Util;
|
||||
|
||||
use feature 'say';
|
||||
|
||||
# Those regions from linker.ld will be excluded
|
||||
my @EXCLUDE_REGIONS = (
|
||||
[ '_wamr_aot_start', '_wamr_aot_end' ],
|
||||
# [ '_wamr_mmap_start', '_wamr_mmap_end' ],
|
||||
# [ '_wamr_global_heap_start', '_wamr_global_heap_end' ],
|
||||
# [ '_wamr_runtime_pool_start', '_wamr_runtime_pool_end' ],
|
||||
# [ '_wamr_linear_pool_start', '_wamr_linear_pool_end' ],
|
||||
);
|
||||
|
||||
sub query {
|
||||
my ( $experiment, $experiment_dir ) = @_;
|
||||
|
||||
my @filters;
|
||||
if ( defined $experiment_dir && -f "$experiment_dir/system.elf" ) {
|
||||
for my $pair (@EXCLUDE_REGIONS) {
|
||||
my ( $start_sym, $end_sym ) = @$pair;
|
||||
my $start =
|
||||
Util::elf_sym_addr( "$experiment_dir/system.elf", $start_sym );
|
||||
my $end =
|
||||
Util::elf_sym_addr( "$experiment_dir/system.elf", $end_sym );
|
||||
next unless defined $start && defined $end && $end > $start;
|
||||
push @filters,
|
||||
"p.injection_instr_absolute NOT BETWEEN $start AND @{[$end - 1]}";
|
||||
}
|
||||
}
|
||||
|
||||
my $extra = @filters ? "\nAND " . join( "\nAND ", @filters ) : "";
|
||||
|
||||
my $querystring = "SELECT
|
||||
benchmark, resulttype, SUM(t.time2 - t.time1 + 1) AS faults,
|
||||
CONCAT('0x', HEX(p.injection_instr_absolute)) AS fault_address
|
||||
FROM variant v
|
||||
JOIN trace t ON v.id = t.variant_id
|
||||
JOIN fspgroup g ON g.variant_id = t.variant_id AND g.instr2 = t.instr2 AND g.data_physical_address = t.data_physical_address
|
||||
JOIN result_GenericExperimentMessage r ON r.pilot_id = g.pilot_id
|
||||
JOIN fsppilot p ON r.pilot_id = p.id
|
||||
WHERE v.variant = '$experiment'$extra
|
||||
GROUP BY benchmark, resulttype, p.injection_instr_absolute
|
||||
ORDER BY benchmark, resulttype, SUM(t.time2 - t.time1 + 1) DESC;";
|
||||
|
||||
say $querystring;
|
||||
|
||||
return $querystring;
|
||||
}
|
||||
|
||||
sub args { return "--batch --raw"; }
|
||||
|
||||
sub filename { return "faults_filtered.csv"; }
|
||||
|
||||
sub postprocess { $_[0] =~ s/\t/,/g; }
|
||||
|
||||
1;
|
||||
@ -4,10 +4,12 @@ use strict;
|
||||
use warnings;
|
||||
use diagnostics;
|
||||
|
||||
use feature 'say';
|
||||
|
||||
sub query {
|
||||
my ($experiment) = @_;
|
||||
|
||||
return "SELECT
|
||||
my $querystring = "SELECT
|
||||
benchmark, resulttype, sum(t.time2 - t.time1 + 1) AS faults
|
||||
FROM variant v
|
||||
JOIN trace t ON v.id = t.variant_id
|
||||
@ -17,6 +19,10 @@ JOIN fsppilot p ON r.pilot_id = p.id
|
||||
WHERE v.variant = '$experiment'
|
||||
GROUP BY v.id, resulttype
|
||||
ORDER BY variant, benchmark, resulttype;";
|
||||
|
||||
say $querystring;
|
||||
|
||||
return $querystring;
|
||||
}
|
||||
|
||||
sub args { return "-t"; }
|
||||
|
||||
@ -4,10 +4,12 @@ use strict;
|
||||
use warnings;
|
||||
use diagnostics;
|
||||
|
||||
use feature 'say';
|
||||
|
||||
sub query {
|
||||
my ($experiment) = @_;
|
||||
|
||||
return "SELECT
|
||||
my $querystring = "SELECT
|
||||
benchmark, resulttype, sum(t.time2 - t.time1 + 1) AS faults
|
||||
FROM variant v
|
||||
JOIN trace t ON v.id = t.variant_id
|
||||
@ -17,6 +19,10 @@ JOIN fsppilot p ON r.pilot_id = p.id
|
||||
WHERE v.variant = '$experiment'
|
||||
GROUP BY v.id, resulttype
|
||||
ORDER BY variant, benchmark, resulttype;";
|
||||
|
||||
say $querystring;
|
||||
|
||||
return $querystring;
|
||||
}
|
||||
|
||||
sub args { return "--batch --raw"; }
|
||||
|
||||
@ -147,7 +147,7 @@ make_heatmap <- function(target_resulttype, target_benchmark) {
|
||||
}
|
||||
|
||||
aggregated <- filtered |>
|
||||
select(.data$fault_address, .data$faults)
|
||||
select(fault_address, faults)
|
||||
|
||||
# ===========================================================================
|
||||
# ADDRESS HEX -> INT
|
||||
|
||||
Reference in New Issue
Block a user