diff --git a/fuzzers/FRET/benchmark/plot_all_benchmarks.sh b/fuzzers/FRET/benchmark/plot_all_benchmarks.sh index a4f494efbc..a7b84e0ebd 100644 --- a/fuzzers/FRET/benchmark/plot_all_benchmarks.sh +++ b/fuzzers/FRET/benchmark/plot_all_benchmarks.sh @@ -4,5 +4,10 @@ if [[ -n "$1" ]]; then else TARGET=$BENCHDIR fi -number_cruncher/target/debug/number_cruncher -i $TARGET/timedump -o $TARGET/bench.sqlite + +# Check if bench.sqlite needs to be updated +if [[ ! -f $TARGET/bench.sqlite || $(find $TARGET/timedump -name '.*[0-9]+\.time' -newer $TARGET/bench.sqlite | wc -l) -gt 0 ]]; then + number_cruncher/target/debug/number_cruncher -i $TARGET/timedump -o $TARGET/bench.sqlite +fi + Rscript plot_sqlite.r $TARGET/bench.sqlite $TARGET diff --git a/fuzzers/FRET/benchmark/plot_sqlite.r b/fuzzers/FRET/benchmark/plot_sqlite.r index 96942676fd..3c801fbdf9 100644 --- a/fuzzers/FRET/benchmark/plot_sqlite.r +++ b/fuzzers/FRET/benchmark/plot_sqlite.r @@ -8,6 +8,7 @@ KNOWN_WCRT <- list( waters_seq_bytes=219542, # via INSERT_WC waters_seq_int=219542, # via INSERT_WC + manual interrupt waters_seq_full=219542,# via INSERT_WC + manual interrupt + waters_seq_unsync_full=234439,# via INSERT_WC + manual interrupt polycopter_seq_dataflow_full=343493, # via INSERT_WC + manual interrupt polycopter_seq_dataflow_int=343493, # via INSERT_WC + manual interrupt release_seq_int=645885, # via INSERT_WC + manual interrupt @@ -15,13 +16,14 @@ KNOWN_WCRT <- list( ) STATIC_WCRT <- list( - #waters_seq_bytes=, - waters_seq_int=270789 - #waters_seq_full=, - #polycopter_seq_dataflow_full=, # via INSERT_WC + manual interrupt - #polycopter_seq_dataflow_int=, # via INSERT_WC + manual interrupt - #release_seq_int=, # via INSERT_WC + manual interrupt - #release_seq_full= # via INSERT_WC + manual interrupt + waters_seq_bytes=256632, + waters_seq_int=256632, + waters_seq_full=256632, + waters_seq_unsync_full=272091, + polycopter_seq_dataflow_full=373628, + polycopter_seq_dataflow_int=373628, + release_seq_int=921360, + release_seq_full=921360 ) # Read the first command line argument as an sqlite file @@ -72,12 +74,21 @@ draw_plot <- function(data, casename) { } else { wcrt = 0 } + static_wcrt = STATIC_WCRT[[casename]] + if (!is.null(wcrt)) { + static_wcrt = static_wcrt / ISNS_PER_US + } else { + static_wcrt = 0 + } # draw limits max_x <- max(sapply(data, function(tbl) max(tbl$timestamp, na.rm = TRUE))) max_y <- max(wcrt,max(sapply(data, function(tbl) max(tbl$max, na.rm = TRUE)))) min_y <- min(sapply(data, function(tbl) min(tbl$min, na.rm = TRUE))) + # draw static wcrt + max_y <- max(max_y, static_wcrt) + # plot setup h_ = 380 w_ = h_*4/3 @@ -98,12 +109,16 @@ draw_plot <- function(data, casename) { } legend_names <- names(data) - legend_colors <- c(MY_COLORS[1:length(data)],"black") - legend_styles <- c(rep("solid",length(data)),"dotted") + legend_colors <- c(MY_COLORS[1:length(data)],"black","black") + legend_styles <- c(rep("solid",length(data)),"dotted","dashed") if (wcrt > 0) { abline(h=wcrt, col='black', lty='dotted') - legend_names <- c(names(data), "WCRT") + legend_names <- c(legend_names, "WCRT") + } + if (static_wcrt > 0) { + abline(h=static_wcrt, col='black', lty='dashed') + legend_names <- c(legend_names, "static bound") } legend(LEGEND_POS, legend=legend_names,#"bottomright", diff --git a/fuzzers/FRET/tests/static_wcrts.xlsx b/fuzzers/FRET/tests/static_wcrts.xlsx new file mode 100644 index 0000000000..b45a25747a Binary files /dev/null and b/fuzzers/FRET/tests/static_wcrts.xlsx differ