diff --git a/scripts/runner.pl b/scripts/runner.pl index 09be86e..806997a 100644 --- a/scripts/runner.pl +++ b/scripts/runner.pl @@ -86,28 +86,10 @@ sub trace { notify("Tracing $experiment..."); system( - $bochs_runner, - "-V", - "$fail_share/vgabios.bin", - "-b", - "$fail_share/BIOS-bochs-latest", - "-1", - "-f", - "$fail_trace", - "-e", - "$remote_builds_dir/$experiment/system.elf", - "-i", - "$remote_builds_dir/$experiment/system.iso", - "--", - "-Wf,--start-symbol=fail_start_trace", - "-Wf,--save-symbol=fail_start_trace", - "-Wf,--end-symbol=fail_stop_trace", - "-Wf,--state-file=$remote_builds_dir/$experiment/state", - "-Wf,--trace-file=$remote_builds_dir/$experiment/trace.pb", - "-Wf,--elf-file=$remote_builds_dir/$experiment/system.elf" + "$bochs_runner -V $fail_share/vgabios.bin -b $fail_share/BIOS-bochs-latest -1 -f $fail_trace -e $remote_builds_dir/$experiment/system.elf -i $remote_builds_dir/$experiment/system.iso -- -Wf,--start-symbol=fail_start_trace -Wf,--save-symbol=fail_start_trace -Wf,--end-symbol=fail_stop_trace -Wf,--state-file=$remote_builds_dir/$experiment/state -Wf,--trace-file=$remote_builds_dir/$experiment/trace.pb -Wf,--elf-file=$remote_builds_dir/$experiment/system.elf" ); - notify("Tracing $experiment complete."); + # notify("Tracing $experiment complete."); } sub import_trace { @@ -116,67 +98,26 @@ sub import_trace { notify("Importing $experiment trace..."); system( - "$fail_import", "--database-option-file", - $remote_db_conf, "-t", - "$remote_builds_dir/$experiment/trace.pb", "-i", - "MemoryImporter", "-e", - "$remote_builds_dir/$experiment/system.elf", "-v", - $experiment, "-b", - "mem" + "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i MemoryImporter -e $remote_builds_dir/$experiment/system.elf -v $experiment -b mem" ); system( - "$fail_import", "--database-option-file", - $remote_db_conf, "-t", - "$remote_builds_dir/$experiment/trace.pb", "-i", - "RegisterImporter", "-e", - "$remote_builds_dir/$experiment/system.elf", "-v", - $experiment, "-b", - "regs", "--flags" + "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i RegisterImporter -e $remote_builds_dir/$experiment/system.elf -v $experiment -b regs --flags" ); system( - "$fail_import", "--database-option-file", - $remote_db_conf, "-t", - "$remote_builds_dir/$experiment/trace.pb", "-i", - "RegisterImporter", "-e", - "$remote_builds_dir/$experiment/system.elf", "-v", - $experiment, "-b", - "ip", "--no-gp", - "--ip" + "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i RegisterImporter -e $remote_builds_dir/$experiment/system.elf -v $experiment -b ip --no-gp --ip" ); system( - "$fail_import", "--database-option-file", - $remote_db_conf, "-t", - "$remote_builds_dir/$experiment/trace.pb", "-i", - "ElfImporter", "--objdump", - "objdump", "-e", - "$remote_builds_dir/$experiment/system.elf", "-v", - $experiment, "-b", - "ip" + "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i ElfImporter --objdump objdump -e $remote_builds_dir/$experiment/system.elf -v $experiment -b ip" ); system( - "$fail_import", "--database-option-file", - $remote_db_conf, "-t", - "$remote_builds_dir/$experiment/trace.pb", "-i", - "ElfImporter", "--objdump", - "objdump", "-e", - "$remote_builds_dir/$experiment/system.elf", "-v", - $experiment, "-b", - "mem" + "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i ElfImporter --objdump objdump -e $remote_builds_dir/$experiment/system.elf -v $experiment -b mem" ); system( - "$fail_import", "--database-option-file", - $remote_db_conf, "-t", - "$remote_builds_dir/$experiment/trace.pb", "-i", - "ElfImporter", "--objdump", - "objdump", "-e", - "$remote_builds_dir/$experiment/system.elf", "-v", - "$experiment", "-b", - "regs" + "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i ElfImporter --objdump objdump -e $remote_builds_dir/$experiment/system.elf -v $experiment -b regs" ); - system( "$fail_prune", "--database-option-file", "$remote_db_conf", - "-v", $experiment, "-b", "%%", "--overwrite" ); + system( "$fail_prune --database-option-file $remote_db_conf -v $experiment -b %% --overwrite" ); - notify("Importing $experiment trace complete."); + # notify("Importing $experiment trace complete."); } sub inject { @@ -191,50 +132,31 @@ sub inject { # child -> server exec( - $fail_server, "--port", - $fail_server_port, "--database-option-file", - $remote_db_conf, "-v", - $experiment, "-b", - "%", "--inject-single-bit", - "--inject-registers" + "$fail_server --port $fail_server_port --database-option-file $remote_db_conf -v $experiment -b % --inject-single-bit --inject-registers" ) or die "exec server failed: $!"; } # parent -> client - my $count = cpu_count(); - system( - "nice", - $bochs_runner, - "-V", "$fail_share/vgabios.bin", - "-b", "$fail_share/BIOS-bochs-latest", - "-f", "$fail_inject", - "-e", "$remote_builds_dir/$experiment/system.elf", - "-i", "$remote_builds_dir/$experiment/system.iso", - "-j", $count, - "--", - "-Wf,--server-port=$fail_server_port", - "-Wf,--state-dir=$remote_builds_dir/$experiment/state", - "-Wf,--trap", - "-Wf,--catch-outerspace", + # my $count = cpu_count(); + my $count = 1; # "-Wf,--catch-write-textsegment", - "-Wf,--timeout=500000", - "-Wf,--ok-marker=fail_marker_positive", - "-Wf,--fail-marker=fail_marker_negative", - "-Wf,--detected-marker=fail_marker_detected", - ">/dev/null" + system( + "nice $bochs_runner -V $fail_share/vgabios.bin -b $fail_share/BIOS-bochs-latest -f $fail_inject -e $remote_builds_dir/$experiment/system.elf -i $remote_builds_dir/$experiment/system.iso -j $count -- -Wf,--server-port=$fail_server_port -Wf,--state-dir=$remote_builds_dir/$experiment/state -Wf,--trap -Wf,--catch-outerspace -Wf,--timeout=500000 -Wf,--ok-marker=fail_marker_positive -Wf,--fail-marker=fail_marker_negative -Wf,--detected-marker=fail_marker_detected > /dev/null" ) or die "client failed: $?"; kill 'TERM', $pid; waitpid( $pid, 0 ); - notify("Injecting $experiment complete."); + # notify("Injecting $experiment complete."); } # TODO: Add a function that accepts query + output file args sub results { my ($experiment) = @_; + notify("Querying $experiment..."); + my $results_overview_query = "SELECT variant, benchmark, resulttype, sum(t.time2 - t.time1 + 1) as faults FROM variant v