X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=linux-tests%2Fplot_data.sh;h=e7482bc49f8650fece50e9d9e1defffd6616fb32;hp=23a22024c15ff90408fab6b7483b37e88014374a;hb=7715144e7d55b2854f907001c432348e4caa5954;hpb=1f4323687427e7b156a7391bea3f1f4e55d90838 diff --git a/linux-tests/plot_data.sh b/linux-tests/plot_data.sh index 23a2202..e7482bc 100755 --- a/linux-tests/plot_data.sh +++ b/linux-tests/plot_data.sh @@ -1,5 +1,92 @@ #!/bin/sh -# plot_data.sh runs the plot, updating it in realtime +# Script that gathers data erased vs free data from /proc/yaffs_stats and simultaneously \ +# plots it using gnuplot. -./drive_gnuplot.sh | gnuplot + +#Gather settings +log_file=data +gather_delay=1 + +done_file=plot_done + +# Plot settings +trunc_file=trunc_data +plot_samples=1000 +plot_delay=2 + + + + + +# Gathering task + +gather_data() { +i=0; +rm -f $log_file + +while [ ! -e $done_file ] ; do + xx='1' + erased_blocks='2' + while [ "$xx" != "$erased_blocks" ] ; do + xx=$(cat /proc/yaffs | grep n_erased_blocks | cut -d ' ' -f 2) + erased_blocks=$(cat /proc/yaffs | grep n_erased_blocks | cut -d ' ' -f 2) + if [ -z "$xx" ] ; then + xx='bad value' + fi + done + xx='1' + free_chunks='2' + while [ "$xx" != "$free_chunks" ] ; do + xx=$(cat /proc/yaffs | grep n_free_chunks | cut -d ' ' -f 2) + free_chunks=$(cat /proc/yaffs | grep n_free_chunks | cut -d ' ' -f 2) + if [ -z "$xx" ] ; then + xx='bad value' + fi + done + erased_chunks=$(($erased_blocks*64)) + str=" $i, 0, $free_chunks, $erased_chunks" + echo $str + echo $str >> $log_file + i=$(($i+1)) + sleep $gather_delay +done +} + + +# Plotting task +# Periodically creates a truncated version of the log file and +# outputs commands into gnuplot, thus driving gnuplot + +drive_gnuplot(){ +sleep 5 +tail -$plot_samples $log_file > $trunc_file + +plot_str=" plot '$trunc_file' using 1:3 with linespoints title 'free', '' using 1:4 with linespoints title 'erased'" + +echo "set title 'yaffs free space vs erased space'" +echo "set xlabel 'seconds'" +echo "set ylabel 'chunks'" + + +echo $plot_str + +while [ ! -e $done_file ]; do +sleep $plot_delay +tail -$plot_samples $log_file > $trunc_file +echo replot +done +} + + +rm -f $done_file +trap "touch $done_file" INT + +echo "Start gathering task in background" +gather_data & +echo "Run plotting task" +drive_gnuplot | gnuplot + +wait + +echo "All done"