home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- # Script compares 1 cache segment with 4 cache segments using read, write,
- # and compare data on raw, efs, and direct I/O.
-
- # On stdout it produces a table of the results - discarding the lowest and
- # highest, then averaging the remainder.
-
- # Creates graph.dw4, graph.dw1, graph.ew1, graph.ew4, graph.rw4, graph.rw1
- # Which are shell scripts to display the graph of the 5 cases.
- # Also leaves perf.dw4, perf.dw1, perf.ew4, perf.ew1, perf.rw4, perf.rw1.
- # Also creates graph.r, graph.w, graph.c which are shell scripts
- # to display the graphs of read, write, create.
-
- # Each graph has an entry 0 0.0 forced in to give an origin. Could be removed.
-
- cat <<'EOF' >/usr/tmp/d.awk$$
- BEGIN { cnt = 0; max=0.0; min=1000.1; maxi=0.0; mini=1000.1;
- ndisks=0; rawefs="?"; async="?"; direct="?";
- nthrd=0; xfrsz=0; stepsz=0; xfrtyp="?";
- sr="?"; mbs=0.0; iops=0.0;
- }
- /^#TITLE/ { ttl1=$2; ttl2=$3; ttl3=$4; ttl4=$5; ttl5=$6;
- }
- / way stripe, step/ { ndisks=$1; stepsz=$6;
- cnt = 0; max=0.0; min=1000.1; maxi=0.0;
- mini=1000.1; rawefs="R"; async="?";
- direct=" "; nthrd=0; xfrsz=0;
- xfrtyp="?"; sr="?"; mbs=0.0; iops=0.0;
- if ( ndisks == 84 ) {
- printf "\n%s %s %s %s %s\n", ttl1, ttl2, ttl3, ttl4, ttl5;
- printf " # # # R/A/D # transfer step OS R/W seq MB/sec IOP/sec\n";
- printf "disks busses LV E/M threads size size rev C rand\n";
- }
- }
- /^$/ {prline();}
- /^mkfs/ {rawefs="E";}
- /^.usr.disk.sio -V -A/ {nthrd=$4; async="A";
- if ( $5 == "-D" ) {
- direct="D";
- }
- }
- /^sequential create/ {prline(); sr="S"; xfrtyp="C"; xfrsz=$4; }
- /^sequential write/ {prline(); sr="S"; xfrtyp="W"; xfrsz=$4; }
- /^sequential read/ {prline(); sr="S"; xfrtyp="R"; xfrsz=$4; }
- /blocks.*KB.*MB.*IO/ {mbs += $8; iops += $11; cnt++;
- if ( $8 > max ) {
- max = $8;
- }
- if ( $8 < min ) {
- min = $8;
- }
- if ( $11 > maxi ) {
- maxi = $11;
- }
- if ( $11 < mini ) {
- mini = $11;
- }
- }
-
- # {}
-
- function prline() {
- if ( cnt != 0 ) {
- printf "%4d %3d 1 %cM%c%c %4d %6d %3d 5.2 %c %3s %6.2f %5.2f\n", ndisks, ndisks/4, rawefs, async, direct, nthrd, xfrsz, stepsz, xfrtyp, sr, (mbs-max-min)/(cnt-2), (iops-maxi-mini)/(cnt-2);
- }
- cnt = 0; max=0.0; min=1000.1; maxi=0.0; mini=1000.1;
- mbs=0.0; iops=0.0;
- }
-
- END {
- prline();
- }
-
- EOF
- sed -e 's/[()]//g' -e 's/^------* /#TITLE /' -e 's/^\(#TITL.*\) -----*$/\1/' $1 | nawk -f /usr/tmp/d.awk$$ |tee /usr/tmp/d.res$$
- rm -f /usr/tmp/d.awk$$
- #Split into perf.dw4, perf.dw1, perf.ew4, perf.ew1, perf.rw4, perf.rw1.
- sed -e '1,/^Reg.*4/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.ew4
- sed -e '1,/^Reg.*1/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.ew1
- sed -e '1,/^Raw.*4/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.rw4
- sed -e '1,/^Raw.*1/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.rw1
- sed -e '1,/^Dir.*4/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.dw4
- sed -e '1,/^Dir.*1/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.dw1
- #Start of graph ------------------------------------------------
- #Start of write graph ------------------------------------------------
- cat <<EOF >graph.w
- #!/bin/sh
- exec xgraph -t "Write" -x "# of disks" -y "MBytes/sec" <<EOD
- "Direct 4 segment"
- 0 0.0
- EOF
- grep '^ .* W ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
- cat <<EOF >>graph.w
-
- "Direct 1 segment"
- 0 0.0
- EOF
- grep '^ .* W ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
- cat <<EOF >>graph.w
-
- "Raw 4 segment"
- 0 0.0
- EOF
- grep '^ .* W ' perf.rw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
- cat <<EOF >>graph.w
-
- "Raw 1 segment"
- 0 0.0
- EOF
- grep '^ .* W ' perf.rw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
- cat <<EOF >>graph.w
-
- "EFS 4 segment"
- 0 0.0
- EOF
- grep '^ .* W ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
- cat <<EOF >>graph.w
-
- "EFS 1 segment"
- 0 0.0
- EOF
- grep '^ .* W ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
- cat <<EOF >>graph.w
-
- EOD
- EOF
- chmod 755 graph.w
- ./graph.w&
- #End of Write graph ------------------------------------------------
- #Start of Read graph ------------------------------------------------
- cat <<EOF >graph.r
- #!/bin/sh
- exec xgraph -t "Read" -x "# of disks" -y "MBytes/sec" <<EOD
- "Direct 4 segment"
- 0 0.0
- EOF
- grep '^ .* R ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
- cat <<EOF >>graph.r
-
- "Direct 1 segment"
- 0 0.0
- EOF
- grep '^ .* R ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
- cat <<EOF >>graph.r
-
- "Raw 4 segment"
- 0 0.0
- EOF
- grep '^ .* R ' perf.rw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
- cat <<EOF >>graph.r
-
- "Raw 1 segment"
- 0 0.0
- EOF
- grep '^ .* R ' perf.rw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
- cat <<EOF >>graph.r
-
- "EFS 4 segment"
- 0 0.0
- EOF
- grep '^ .* R ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
- cat <<EOF >>graph.r
-
- "EFS 1 segment"
- 0 0.0
- EOF
- grep '^ .* R ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
- cat <<EOF >>graph.r
-
- EOD
- EOF
- chmod 755 graph.r
- ./graph.r&
- #End of Read graph ------------------------------------------------
- #Start of Create graph ------------------------------------------------
- cat <<EOF >graph.c
- #!/bin/sh
- exec xgraph -t "Create" -x "# of disks" -y "MBytes/sec" <<EOD
- "Direct 4 segment"
- 0 0.0
- EOF
- grep '^ .* C ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.c
- cat <<EOF >>graph.c
-
- "Direct 1 segment"
- 0 0.0
- EOF
- grep '^ .* C ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.c
- cat <<EOF >>graph.c
-
- "EFS 4 segment"
- 0 0.0
- EOF
- grep '^ .* C ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.c
- cat <<EOF >>graph.c
-
- "EFS 1 segment"
- 0 0.0
- EOF
- grep '^ .* C ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.c
- cat <<EOF >>graph.c
-
- EOD
- EOF
- chmod 755 graph.c
- ./graph.c&
- #End of Create graph ------------------------------------------------
- #Start of dw4 graph ------------------------------------------------
- cat <<EOF >graph.dw4
- #!/bin/sh
- exec xgraph -t "Direct 4 segment" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw4
- cat <<EOF >>graph.dw4
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw4
- cat <<EOF >>graph.dw4
-
- "Create"
- 0 0.0
- EOF
- grep '^ .* C ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw4
- cat <<EOF >>graph.dw4
-
- EOD
- EOF
- chmod 755 graph.dw4
- ./graph.dw4&
- #End of dw4 graph ------------------------------------------------
- #Start of dw1 graph ------------------------------------------------
- cat <<EOF >graph.dw1
- #!/bin/sh
- exec xgraph -t "Direct 1 segment" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw1
- cat <<EOF >>graph.dw1
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw1
- cat <<EOF >>graph.dw1
-
- "Create"
- 0 0.0
- EOF
- grep '^ .* C ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw1
- cat <<EOF >>graph.dw1
-
- EOD
- EOF
- chmod 755 graph.dw1
- ./graph.dw1&
- #End of dw1 graph ------------------------------------------------
- #Start of ew4 graph ------------------------------------------------
- cat <<EOF >graph.ew4
- #!/bin/sh
- exec xgraph -t "EFS 4 segment" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew4
- cat <<EOF >>graph.ew4
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew4
- cat <<EOF >>graph.ew4
-
- "Create"
- 0 0.0
- EOF
- grep '^ .* C ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew4
- cat <<EOF >>graph.ew4
-
- EOD
- EOF
- chmod 755 graph.ew4
- ./graph.ew4&
- #End of ew4 graph ------------------------------------------------
- #Start of ew1 graph ------------------------------------------------
- cat <<EOF >graph.ew1
- #!/bin/sh
- exec xgraph -t "EFS 1 segment" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew1
- cat <<EOF >>graph.ew1
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew1
- cat <<EOF >>graph.ew1
-
- "Create"
- 0 0.0
- EOF
- grep '^ .* C ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew1
- cat <<EOF >>graph.ew1
-
- EOD
- EOF
- chmod 755 graph.ew1
- ./graph.ew1&
- #End of ew1 graph ------------------------------------------------
- #Start of rw1 graph ------------------------------------------------
- cat <<EOF >graph.rw1
- #!/bin/sh
- exec xgraph -t "Raw 1 segment" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.rw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rw1
- cat <<EOF >>graph.rw1
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.rw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rw1
- cat <<EOF >>graph.rw1
-
- EOD
- EOF
- chmod 755 graph.rw1
- ./graph.rw1&
- #End of rw1 graph ------------------------------------------------
- #Start of rw4 graph ------------------------------------------------
- cat <<EOF >graph.rw4
- #!/bin/sh
- exec xgraph -t "Raw 4 segment" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.rw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rw4
- cat <<EOF >>graph.rw4
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.rw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rw4
- cat <<EOF >>graph.rw4
-
- EOD
- EOF
- chmod 755 graph.rw4
- ./graph.rw4&
- #End of rw4 graph ------------------------------------------------
- rm -f /usr/tmp/d.res$$
- exit 0
-
-