Update faults filtering to be selectable from menu

This commit is contained in:
2026-06-13 21:22:56 +02:00
parent 797c9512b4
commit b344c55eee
8 changed files with 176 additions and 95 deletions

View File

@ -4,10 +4,19 @@ use strict;
use warnings;
use diagnostics;
use FindBin;
use lib "$FindBin::Bin/..";
use lib "$FindBin::Bin/../Modules";
use Modules::Filters;
use feature 'say';
sub query {
my ($experiment) = @_;
my ( $experiment, $experiment_dir, $filter_config_name ) = @_;
$filter_config_name //= '';
my $filters = Modules::Filters::build_filter_clause( $experiment_dir,
$filter_config_name );
my $querystring = "SELECT
benchmark, resulttype, SUM(t.time2 - t.time1 + 1) AS faults,
@ -17,7 +26,7 @@ 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'
WHERE v.variant = '$experiment'$filters
GROUP BY benchmark, resulttype, p.injection_instr_absolute
ORDER BY benchmark, resulttype, SUM(t.time2 - t.time1 + 1) DESC;";
@ -28,7 +37,12 @@ ORDER BY benchmark, resulttype, SUM(t.time2 - t.time1 + 1) DESC;";
sub args { return "--batch --raw"; }
sub filename { return "faults.csv"; }
sub filename {
my ($filter_config_name) = @_;
$filter_config_name //= '';
my $suffix = length($filter_config_name) ? "_$filter_config_name" : "";
return "faults${suffix}.csv";
}
sub postprocess { $_[0] =~ s/\t/,/g; }

View File

@ -1,64 +0,0 @@
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;

View File

@ -4,10 +4,19 @@ use strict;
use warnings;
use diagnostics;
use FindBin;
use lib "$FindBin::Bin/..";
use lib "$FindBin::Bin/../Modules";
use Modules::Filters;
use feature 'say';
sub query {
my ($experiment) = @_;
my ( $experiment, $experiment_dir, $filter_config_name ) = @_;
$filter_config_name //= '';
my $extra = Modules::Filters::build_filter_clause( $experiment_dir,
$filter_config_name );
my $querystring = "SELECT
benchmark, resulttype, sum(t.time2 - t.time1 + 1) AS faults
@ -16,7 +25,7 @@ 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'
WHERE v.variant = '$experiment'$extra
GROUP BY v.id, resulttype
ORDER BY variant, benchmark, resulttype;";
@ -27,7 +36,12 @@ ORDER BY variant, benchmark, resulttype;";
sub args { return "-t"; }
sub filename { return "results.txt"; }
sub filename {
my ($filter_config_name) = @_;
$filter_config_name //= '';
my $suffix = length($filter_config_name) ? "_filtered_$filter_config_name" : "";
return "results${suffix}.txt";
}
sub postprocess { }

View File

@ -4,10 +4,19 @@ use strict;
use warnings;
use diagnostics;
use FindBin;
use lib "$FindBin::Bin/..";
use lib "$FindBin::Bin/../Modules";
use Modules::Filters;
use feature 'say';
sub query {
my ($experiment) = @_;
my ( $experiment, $experiment_dir, $filter_config_name ) = @_;
$filter_config_name //= '';
my $extra = Modules::Filters::build_filter_clause( $experiment_dir,
$filter_config_name );
my $querystring = "SELECT
benchmark, resulttype, sum(t.time2 - t.time1 + 1) AS faults
@ -16,7 +25,7 @@ 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'
WHERE v.variant = '$experiment'$extra
GROUP BY v.id, resulttype
ORDER BY variant, benchmark, resulttype;";
@ -27,7 +36,12 @@ ORDER BY variant, benchmark, resulttype;";
sub args { return "--batch --raw"; }
sub filename { return "resultsdata.csv"; }
sub filename {
my ($filter_config_name) = @_;
$filter_config_name //= '';
my $suffix = length($filter_config_name) ? "_filtered_$filter_config_name" : "";
return "resultsdata${suffix}.csv";
}
sub postprocess { $_[0] =~ s/\t/,/g; }