#!/bin/csh -f
#
# get-TOCS-data -   gather the data for Excel spreadsheet
#   used in TOCS paper to compare thruputs 
#   different from get-OSDI-data, in that we include 2PIO here
#
#  must be run after 'update'
#
# Part of
#              The STARFISH Parallel file-system simulator
#        (Simulation Tool for Advanced Research in File Systems)
# 
#                               David Kotz
#                           Dartmouth College
#                              Version 3.0
#                              January 1996
#                          dfk@cs.dartmouth.edu

source environset

if ($#argv != 0 && $#argv != 2 ) then
    echo usage: get-TOCS-data '[PlainConfigDir 2pioConfigDir]'
    exit 1
endif

set configsPlain=Configs-plain
set configs2PIO=Configs-2pio
if ($#argv == 2) then
	set configsPlain=$1
	set configs2PIO=$2
endif

set tmp=/tmp/dfkget$$
onintr cleanup
mkdir $tmp

set patfile=$tmp/pats

foreach layout (contig rsectors)
    foreach fs (TC 2PIO DDIO)
	if ($fs == TC || $fs == 2PIO) set iopfs=cache
	if ($fs == DDIO) set iopfs=general

	if ($fs == TC || $fs == DDIO) set configs=$configsPlain
	if ($fs == 2PIO) set configs=$configs2PIO

        foreach sort (sort nosort)
	    if ($layout == contig && $sort == sort) continue
	    if ($iopfs == cache && $sort == sort) continue

	    foreach rec (8 8192)
		echo $fs $layout $sort $rec

		set datafile=$tmp/$fs.$layout.$sort.$rec
		echo > $datafile
		echo > $patfile

		foreach pat (wcn wcc wbc wcb wbb wnb wc wb)
		    dm x13/1024. >> $datafile \
			< $configs/$rec.1280.$iopfs.$sort.$layout.*/results/w$pat.16.16.avg
		    echo $pat >> $patfile
		end

		# wwn requires some special handling
		# use 8192 for both rec=8 and rec=8192
		dm x13/1024. >> $datafile\
		    < $configs/8192.1280.$iopfs.$sort.$layout.*/results/wwn.16.16.avg
		echo wn >> $patfile
		echo "" >> $datafile
		echo "" >> $patfile

		foreach pat (rcn rcc rbc rcb rbb rnb rc rb)
		    dm x13/1024. >> $datafile \
			< $configs/$rec.1280.$iopfs.$sort.$layout.*/results/w$pat.16.16.avg 
		    echo $pat >> $patfile
		end

		# wrn requires some special handling:
		# use 8192 for both rec=8 and rec=8192
		dm x13/1024. >> $datafile\
		    < $configs/8192.1280.$iopfs.$sort.$layout.*/results/wrn.16.16.avg
		echo rn >> $patfile
		echo "" >> $datafile
		echo "" >> $patfile

		# wrlw requires some special handling:
		# use 8192 for both rec=8 and rec=8192
		# use name 'ra' instead
		# divide by 16 to normalize
		dm x13/1024./16. >> $datafile\
		    < $configs/8192.1280.$iopfs.$sort.$layout.*/results/wrlw.16.16.avg
		echo ra >> $patfile
	    end
	end
    end
end

set data=TOCS-data

abut > $data.contig \
     $patfile \
     $tmp/DDIO.contig.nosort.8 \
     $tmp/2PIO.contig.nosort.8 \
     $tmp/TC.contig.nosort.8 \
     $tmp/DDIO.contig.nosort.8192 \
     $tmp/2PIO.contig.nosort.8192 \
     $tmp/TC.contig.nosort.8192

abut > $data.rsectors \
     $patfile \
     $tmp/DDIO.rsectors.sort.8 \
     $tmp/DDIO.rsectors.nosort.8 \
     $tmp/2PIO.rsectors.nosort.8 \
     $tmp/TC.rsectors.nosort.8 \
     $tmp/DDIO.rsectors.sort.8192 \
     $tmp/DDIO.rsectors.nosort.8192 \
     $tmp/2PIO.rsectors.nosort.8192 \
     $tmp/TC.rsectors.nosort.8192

echo output is in $data.{contig,rsectors}

cleanup:
rm -rf $tmp
