From bb2589386f9d240aee3a35eadf1e2273f85893a8 Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Wed, 12 Oct 2011 07:33:10 -0300 Subject: [PATCH] m1rc3/norruption/2/plot-corr: make scatter plot of time between corruptions With simulation (-s). Also updated the Makefile and renamed the previous "corr"(uption) to "dump", to free it for "correlation". --- m1rc3/norruption/2/Makefile | 7 +++- m1rc3/norruption/2/plot-corr | 75 ++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 2 deletions(-) create mode 100755 m1rc3/norruption/2/plot-corr diff --git a/m1rc3/norruption/2/Makefile b/m1rc3/norruption/2/Makefile index cea1dee..6b1857b 100644 --- a/m1rc3/norruption/2/Makefile +++ b/m1rc3/norruption/2/Makefile @@ -1,12 +1,12 @@ DIR=d .SILENT: -.PHONY: all list plot corr coll +.PHONY: all list plot corr dump coll all: $(MAKE) plot echo - $(MAKE) corr + $(MAKE) dump echo $(MAKE) coll echo @@ -18,6 +18,9 @@ plot: ./plot-cdf $(DIR)/log && display out.png & corr: + ./plot-corr $(DIR)/log && display out.png & + +dump: ./bscmp $(DIR)/*-corrupt.bin coll: diff --git a/m1rc3/norruption/2/plot-corr b/m1rc3/norruption/2/plot-corr new file mode 100755 index 0000000..a8deee2 --- /dev/null +++ b/m1rc3/norruption/2/plot-corr @@ -0,0 +1,75 @@ +#!/usr/bin/perl + +sub usage +{ + print STDERR "usage: $0 [-s] [log_file]\n"; + exit(1); +} + + +if ($ARGV[0] eq "-s") { + shift @ARGV; + $sim = 1; +} +&usage if $ARGV[0] =~ /^-/; + +$n = 1; +while (<>) { + next unless /^=== (\d+) ===/; + while ($1 != $n) { + push(@f, $n); + $n++; + } + $n++; +} + +$n--; +$t = int($n/@f+0.5); + +$last = 0; +for (@f) { + push(@d, $_-$last); + $last = $_; +} + +if ($sim) { + # y = 1-exp(-x/T) + # 1-y = exp(-x/T) + # ln(1-y) = -x/T + # -T*ln(1-y) = x + + $type = " (SIMULATED)"; + @d = (); + for ($i = 0; $i != @f; $i++) { + push(@d, -$t*log(1-rand)); + } +} + +for (@d) { + $max = $_ if $_ > $max; +} + +$cmd = "|gnuplot -e '". + 'set term postscript color eps enhanced solid lw 2 20;'. + 'set output "out.eps";'. + 'set xrange [0:'.$max*1.05.'];'. + 'set yrange [0:'.$max*1.05.'];'. + 'set title "Correlation of time to adjacent corruptions'.$type.'";'. + 'set xlabel "Cycles since previous event";'. + 'set ylabel "Cycles until next event";'. + 'plot "-" with points pt 7 notitle'. + "'"; + +open(PIPE, $cmd) || die "open: $!"; +undef $last; +for (@d) { + print PIPE "$last $_\n" if defined $last; + $last = $_; +} +close(PIPE) || die "close: $!"; + +system("cat out.eps | ". + "gs -sDEVICE=ppmraw -r100 -sOutputFile=- ". + "-dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sPAPERSIZE=a4 -q - | ". + "convert -trim - out.png"); +unlink("out.eps");