home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / perfTuning / ChallengeIO / Disk.perf.disk / graph_1vs4 < prev    next >
Encoding:
Text File  |  1994-08-02  |  10.5 KB  |  362 lines

  1. #!/bin/sh
  2.  
  3. # Script compares 1 cache segment with 4 cache segments using read, write,
  4. # and compare data on raw, efs, and direct I/O.
  5.  
  6. # On stdout it produces a table of the results - discarding the lowest and
  7. # highest, then averaging the remainder.
  8.  
  9. # Creates graph.dw4, graph.dw1, graph.ew1, graph.ew4, graph.rw4, graph.rw1
  10. #    Which are shell scripts to display the graph of the 5 cases.
  11. # Also leaves perf.dw4, perf.dw1, perf.ew4, perf.ew1, perf.rw4, perf.rw1.
  12. # Also creates graph.r, graph.w, graph.c which are shell scripts
  13. #    to display the graphs of read, write, create.
  14.  
  15. # Each graph has an entry 0 0.0 forced in to give an origin. Could be removed.
  16.  
  17. cat <<'EOF' >/usr/tmp/d.awk$$
  18. BEGIN            { cnt = 0; max=0.0; min=1000.1; maxi=0.0; mini=1000.1;
  19.                 ndisks=0; rawefs="?"; async="?"; direct="?";
  20.                 nthrd=0; xfrsz=0; stepsz=0; xfrtyp="?";
  21.                 sr="?"; mbs=0.0; iops=0.0;
  22.             }
  23. /^#TITLE/        { ttl1=$2; ttl2=$3; ttl3=$4; ttl4=$5; ttl5=$6;
  24.             }
  25. / way stripe, step/    { ndisks=$1; stepsz=$6;
  26.                 cnt = 0; max=0.0; min=1000.1; maxi=0.0;
  27.                 mini=1000.1; rawefs="R"; async="?";
  28.                 direct=" "; nthrd=0; xfrsz=0;
  29.                 xfrtyp="?"; sr="?"; mbs=0.0; iops=0.0;
  30.                 if ( ndisks == 84 ) {
  31.                     printf "\n%s %s %s %s %s\n", ttl1, ttl2, ttl3, ttl4, ttl5;
  32.                     printf "  #     #     # R/A/D    #    transfer step  OS R/W seq  MB/sec IOP/sec\n";
  33.                     printf "disks busses LV  E/M  threads   size   size rev  C  rand\n";
  34.                 }
  35.             }
  36. /^$/            {prline();}
  37. /^mkfs/            {rawefs="E";}
  38. /^.usr.disk.sio -V -A/    {nthrd=$4; async="A";
  39.                 if ( $5 == "-D" ) {
  40.                     direct="D";
  41.                 }
  42.             }
  43. /^sequential create/    {prline(); sr="S"; xfrtyp="C"; xfrsz=$4; }
  44. /^sequential write/    {prline(); sr="S"; xfrtyp="W"; xfrsz=$4; }
  45. /^sequential read/    {prline(); sr="S"; xfrtyp="R"; xfrsz=$4; }
  46. /blocks.*KB.*MB.*IO/    {mbs += $8; iops += $11; cnt++;
  47.                 if ( $8 > max ) {
  48.                     max = $8;
  49.                 }
  50.                 if ( $8 < min ) {
  51.                     min = $8;
  52.                 }
  53.                 if ( $11 > maxi ) {
  54.                     maxi = $11;
  55.                 }
  56.                 if ( $11 < mini ) {
  57.                     mini = $11;
  58.                 }
  59.             }
  60.  
  61. #            {}
  62.  
  63. function prline() {
  64.     if ( cnt != 0 ) {
  65.         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);
  66.     }
  67.     cnt = 0; max=0.0; min=1000.1; maxi=0.0; mini=1000.1;
  68.     mbs=0.0; iops=0.0;
  69. }
  70.  
  71. END    {
  72.         prline();
  73.     }
  74.  
  75. EOF
  76. sed -e 's/[()]//g' -e 's/^------* /#TITLE /' -e 's/^\(#TITL.*\) -----*$/\1/' $1 | nawk -f /usr/tmp/d.awk$$ |tee /usr/tmp/d.res$$
  77. rm -f /usr/tmp/d.awk$$
  78. #Split into perf.dw4, perf.dw1, perf.ew4, perf.ew1, perf.rw4, perf.rw1.
  79. sed -e '1,/^Reg.*4/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.ew4
  80. sed -e '1,/^Reg.*1/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.ew1
  81. sed -e '1,/^Raw.*4/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.rw4
  82. sed -e '1,/^Raw.*1/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.rw1
  83. sed -e '1,/^Dir.*4/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.dw4
  84. sed -e '1,/^Dir.*1/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.dw1
  85. #Start of graph ------------------------------------------------
  86. #Start of write graph ------------------------------------------------
  87. cat <<EOF >graph.w
  88. #!/bin/sh
  89. exec xgraph -t "Write" -x "# of disks" -y "MBytes/sec" <<EOD
  90. "Direct 4 segment"
  91. 0 0.0
  92. EOF
  93. grep '^ .* W ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
  94. cat <<EOF >>graph.w
  95.  
  96. "Direct 1 segment"
  97. 0 0.0
  98. EOF
  99. grep '^ .* W ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
  100. cat <<EOF >>graph.w
  101.  
  102. "Raw 4 segment"
  103. 0 0.0
  104. EOF
  105. grep '^ .* W ' perf.rw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
  106. cat <<EOF >>graph.w
  107.  
  108. "Raw 1 segment"
  109. 0 0.0
  110. EOF
  111. grep '^ .* W ' perf.rw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
  112. cat <<EOF >>graph.w
  113.  
  114. "EFS 4 segment"
  115. 0 0.0
  116. EOF
  117. grep '^ .* W ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
  118. cat <<EOF >>graph.w
  119.  
  120. "EFS 1 segment"
  121. 0 0.0
  122. EOF
  123. grep '^ .* W ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.w
  124. cat <<EOF >>graph.w
  125.  
  126. EOD
  127. EOF
  128. chmod 755 graph.w
  129. ./graph.w&
  130. #End of Write graph ------------------------------------------------
  131. #Start of Read graph ------------------------------------------------
  132. cat <<EOF >graph.r
  133. #!/bin/sh
  134. exec xgraph -t "Read" -x "# of disks" -y "MBytes/sec" <<EOD
  135. "Direct 4 segment"
  136. 0 0.0
  137. EOF
  138. grep '^ .* R ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
  139. cat <<EOF >>graph.r
  140.  
  141. "Direct 1 segment"
  142. 0 0.0
  143. EOF
  144. grep '^ .* R ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
  145. cat <<EOF >>graph.r
  146.  
  147. "Raw 4 segment"
  148. 0 0.0
  149. EOF
  150. grep '^ .* R ' perf.rw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
  151. cat <<EOF >>graph.r
  152.  
  153. "Raw 1 segment"
  154. 0 0.0
  155. EOF
  156. grep '^ .* R ' perf.rw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
  157. cat <<EOF >>graph.r
  158.  
  159. "EFS 4 segment"
  160. 0 0.0
  161. EOF
  162. grep '^ .* R ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
  163. cat <<EOF >>graph.r
  164.  
  165. "EFS 1 segment"
  166. 0 0.0
  167. EOF
  168. grep '^ .* R ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.r
  169. cat <<EOF >>graph.r
  170.  
  171. EOD
  172. EOF
  173. chmod 755 graph.r
  174. ./graph.r&
  175. #End of Read graph ------------------------------------------------
  176. #Start of Create graph ------------------------------------------------
  177. cat <<EOF >graph.c
  178. #!/bin/sh
  179. exec xgraph -t "Create" -x "# of disks" -y "MBytes/sec" <<EOD
  180. "Direct 4 segment"
  181. 0 0.0
  182. EOF
  183. grep '^ .* C ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.c
  184. cat <<EOF >>graph.c
  185.  
  186. "Direct 1 segment"
  187. 0 0.0
  188. EOF
  189. grep '^ .* C ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.c
  190. cat <<EOF >>graph.c
  191.  
  192. "EFS 4 segment"
  193. 0 0.0
  194. EOF
  195. grep '^ .* C ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.c
  196. cat <<EOF >>graph.c
  197.  
  198. "EFS 1 segment"
  199. 0 0.0
  200. EOF
  201. grep '^ .* C ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.c
  202. cat <<EOF >>graph.c
  203.  
  204. EOD
  205. EOF
  206. chmod 755 graph.c
  207. ./graph.c&
  208. #End of Create graph ------------------------------------------------
  209. #Start of dw4 graph ------------------------------------------------
  210. cat <<EOF >graph.dw4
  211. #!/bin/sh
  212. exec xgraph -t "Direct 4 segment" -x "# of disks" -y "MBytes/sec" <<EOD
  213. "Write"
  214. 0 0.0
  215. EOF
  216. grep '^ .* W ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw4
  217. cat <<EOF >>graph.dw4
  218.  
  219. "Read"
  220. 0 0.0
  221. EOF
  222. grep '^ .* R ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw4
  223. cat <<EOF >>graph.dw4
  224.  
  225. "Create"
  226. 0 0.0
  227. EOF
  228. grep '^ .* C ' perf.dw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw4
  229. cat <<EOF >>graph.dw4
  230.  
  231. EOD
  232. EOF
  233. chmod 755 graph.dw4
  234. ./graph.dw4&
  235. #End of dw4 graph ------------------------------------------------
  236. #Start of dw1 graph ------------------------------------------------
  237. cat <<EOF >graph.dw1
  238. #!/bin/sh
  239. exec xgraph -t "Direct 1 segment" -x "# of disks" -y "MBytes/sec" <<EOD
  240. "Write"
  241. 0 0.0
  242. EOF
  243. grep '^ .* W ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw1
  244. cat <<EOF >>graph.dw1
  245.  
  246. "Read"
  247. 0 0.0
  248. EOF
  249. grep '^ .* R ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw1
  250. cat <<EOF >>graph.dw1
  251.  
  252. "Create"
  253. 0 0.0
  254. EOF
  255. grep '^ .* C ' perf.dw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dw1
  256. cat <<EOF >>graph.dw1
  257.  
  258. EOD
  259. EOF
  260. chmod 755 graph.dw1
  261. ./graph.dw1&
  262. #End of dw1 graph ------------------------------------------------
  263. #Start of ew4 graph ------------------------------------------------
  264. cat <<EOF >graph.ew4
  265. #!/bin/sh
  266. exec xgraph -t "EFS 4 segment" -x "# of disks" -y "MBytes/sec" <<EOD
  267. "Write"
  268. 0 0.0
  269. EOF
  270. grep '^ .* W ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew4
  271. cat <<EOF >>graph.ew4
  272.  
  273. "Read"
  274. 0 0.0
  275. EOF
  276. grep '^ .* R ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew4
  277. cat <<EOF >>graph.ew4
  278.  
  279. "Create"
  280. 0 0.0
  281. EOF
  282. grep '^ .* C ' perf.ew4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew4
  283. cat <<EOF >>graph.ew4
  284.  
  285. EOD
  286. EOF
  287. chmod 755 graph.ew4
  288. ./graph.ew4&
  289. #End of ew4 graph ------------------------------------------------
  290. #Start of ew1 graph ------------------------------------------------
  291. cat <<EOF >graph.ew1
  292. #!/bin/sh
  293. exec xgraph -t "EFS 1 segment" -x "# of disks" -y "MBytes/sec" <<EOD
  294. "Write"
  295. 0 0.0
  296. EOF
  297. grep '^ .* W ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew1
  298. cat <<EOF >>graph.ew1
  299.  
  300. "Read"
  301. 0 0.0
  302. EOF
  303. grep '^ .* R ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew1
  304. cat <<EOF >>graph.ew1
  305.  
  306. "Create"
  307. 0 0.0
  308. EOF
  309. grep '^ .* C ' perf.ew1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ew1
  310. cat <<EOF >>graph.ew1
  311.  
  312. EOD
  313. EOF
  314. chmod 755 graph.ew1
  315. ./graph.ew1&
  316. #End of ew1 graph ------------------------------------------------
  317. #Start of rw1 graph ------------------------------------------------
  318. cat <<EOF >graph.rw1
  319. #!/bin/sh
  320. exec xgraph -t "Raw 1 segment" -x "# of disks" -y "MBytes/sec" <<EOD
  321. "Write"
  322. 0 0.0
  323. EOF
  324. grep '^ .* W ' perf.rw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rw1
  325. cat <<EOF >>graph.rw1
  326.  
  327. "Read"
  328. 0 0.0
  329. EOF
  330. grep '^ .* R ' perf.rw1 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rw1
  331. cat <<EOF >>graph.rw1
  332.  
  333. EOD
  334. EOF
  335. chmod 755 graph.rw1
  336. ./graph.rw1&
  337. #End of rw1 graph ------------------------------------------------
  338. #Start of rw4 graph ------------------------------------------------
  339. cat <<EOF >graph.rw4
  340. #!/bin/sh
  341. exec xgraph -t "Raw 4 segment" -x "# of disks" -y "MBytes/sec" <<EOD
  342. "Write"
  343. 0 0.0
  344. EOF
  345. grep '^ .* W ' perf.rw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rw4
  346. cat <<EOF >>graph.rw4
  347.  
  348. "Read"
  349. 0 0.0
  350. EOF
  351. grep '^ .* R ' perf.rw4 | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rw4
  352. cat <<EOF >>graph.rw4
  353.  
  354. EOD
  355. EOF
  356. chmod 755 graph.rw4
  357. ./graph.rw4&
  358. #End of rw4 graph ------------------------------------------------
  359. rm -f /usr/tmp/d.res$$
  360. exit 0
  361.  
  362.