chet@decvax.dec.com (Chet Juszczak) (02/08/91)
More on Prestoserve: here's some NFS server performance data. This posting contains two plots in postscript form. These plots show some NFS server performance measurements made on DECsystem 5100 and DECsystem 5500 servers with Prestoserve. The measurements were made by Charlie Briggs (cb@decvax.dec.com) and myself. The measurement tool we used was nhfsstone v1.20 from Legato Systems, Inc. This utility was run on a single NFS client; it generated an artificial load of NFS operations with a particular distribution (or mix) at a particular operation rate. The plots show average server response time (in msec.) using the default nhfsstone mix over a range of applied load rates (in NFS operations/sec.). For each sample point, load was applied for 120 seconds. In all cases the client system was in my office. The first plot shows measurements made with a DECsystem 5400 client generating the load. When these measurements were made, a 5400 was our standard client (plenty of mips, robust Ethernet interface). The disk-based server systems were a SUN 4/260 w/scsi disk, a VAX 6210 w/RA81 disk, and a DECstation 5000 w/scsi disk. These are compared to DECsystem 5100 and DECsystem 5500 systems w/scsi disks and Prestoserve. Lots of caveats here! I am not trying to say that the three disk-based servers were properly tuned, or even feeling well. The point of their inclusion is to show the characteristic curve shape of response time over increasing load for the moving head disk based servers as contrasted to the shape for the NVRAM accelerated servers. The client was connected to the servers via our live engineering network. Measurements were made overnight when the server systems were idle and the network utilization was low. As we monitored CPU utilization on the DS5100 and DS5500 systems we saw that they were not fully utilized in this test. The DS5400 client was more than powerful enough to drive the disk-based servers to saturation, but not powerful enough to do this to the NVRAM-based servers. There is an important point to make here with regard to comparing nhfsstone results from various sources. At least for Version 1 of nhfsstone, client-side effects are VERY significant. It is simply not possible to measure the performance limits of a fast server unless the client (or client set) can drive it to saturation. The second plot shows DS5100 and DS5500 results using another DS5500 client. Note the difference in latencies at low operation rates for the DS5500 between the two plots. Note also how many more ops/sec. the DS5500 client was able to produce and get serviced. Server CPU utilization was at 90%+ at the highest load rates for the two servers. For these tests, the client and server systems were in my office and connected via a private net. A DS5500 is now our standard nhfsstone client. In our experiences using version 1 nhfsstone technology, we had difficulties getting reproducible results when using multiple client systems to generate load. For this level of load generation technology we feel that a single infinite speed client would be the ideal case. A DS5500 client is the fastest we now have. We understand that there is work underway for version 2 of nhfsstone that uses a completely different design; we look forward to trying it out when that work is complete. -chet Chet Juszczak chet@decvax.dec.com Digital Equipment Corporation decvax!chet 110 Spit Brook Rd. ZKO3-3/U14 Nashua, NH 03062 ***************** start of postcript plots - cut here *********************** %! 560 0 translate 90 rotate %! /symbolFont 10 dict def symbolFont begin /FontType 3 def /FontMatrix [.001 0 0 .001 0 0] def /FontBBox [-500 -500 500 500] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 1 /Cross put Encoding 2 /Triangle put Encoding 3 /Trianglefilled put Encoding 4 /Diamond put Encoding 5 /Diamondfilled put Encoding 6 /Square put Encoding 7 /Squarefilled put Encoding 8 /Rectan put Encoding 9 /Rectanfilled put Encoding 10 /Circle put Encoding 11 /Circlefilled put Encoding 12 /Bullet put Encoding 13 /Star put Encoding 14 /Plus put /graphclip {newpath moveto lineto lineto lineto closepath clip } def /Procs 15 dict def Procs begin /.notdef {} def /Cross { newpath -500 -500 moveto 500 500 lineto stroke newpath -500 500 moveto 500 -500 lineto stroke } def /Triangle { newpath -500 -500 moveto 0 500 lineto 500 -500 lineto closepath stroke } def /Trianglefilled { newpath -500 -500 moveto 0 500 lineto 500 -500 lineto closepath fill } def /Diamond { newpath -500 0 moveto 0 500 lineto 500 0 lineto 0 -500 lineto closepath stroke } def /Diamondfilled { newpath -500 0 moveto 0 500 lineto 500 0 lineto 0 -500 lineto closepath fill } def /Square { newpath -500 -500 moveto -500 500 lineto 500 500 lineto 500 -500 lineto closepath stroke } def /Squarefilled { newpath -500 -500 moveto -500 500 lineto 500 500 lineto 500 -500 lineto closepath fill } def /Rectan { newpath -200 -500 moveto -200 500 lineto 200 500 lineto 200 -500 lineto closepath stroke } def /Rectanfilled { newpath -200 -500 moveto -200 500 lineto 200 500 lineto 200 -500 lineto closepath fill } def /Circle { newpath 0 0 500 0 360 arc stroke } def /Circlefilled { newpath 0 0 500 0 360 arc closepath fill } def /Bullet { newpath 0 0 500 0 360 arc closepath fill } def /Plus { newpath 0 -500 moveto 0 500 lineto stroke newpath -500 0 moveto 500 0 lineto stroke } def /Star { newpath 0 -500 moveto 0 500 lineto stroke newpath -500 0 moveto 500 0 lineto stroke newpath -500 -500 moveto 500 500 lineto stroke newpath -500 500 moveto 500 -500 lineto stroke } def end /BuildChar { 1000 0 -500 -500 500 500 setcachedevice exch begin Encoding exch get Procs exch get end exec } def end /Symbols symbolFont definefont pop % size SetSym -> set font to be symbols scaled by 'size' /SetSym { /Symbols findfont exch scalefont setfont } def % size fontname SetTxt -> set font 'fontname' scaled by 'size' /SetTxt { findfont exch scalefont setfont } def % dashtype thicknes SL /SL { setlinewidth 0 setdash } def /cross {2 copy le {exch pop} {pop} ifelse} def %9 added to distinguish from other clashing scribe definitions % from to L9 -> print line between points 'from' and 'to' /L9 { newpath moveto lineto stroke } def /S9 { newpath moveto } def /M9 { lineto } def /D9 { stroke } def /SS9 { setscreen } def /G9 { setgray } def /F9 {newpath moveto lineto lineto lineto closepath fill} def /E9 {closepath fill} def % E9 is fills for incremental curves, while F9 for curve segments /Landscape {612 0 translate 90 rotate} def % save current point in global variable psx psy /SAVPOS { /psx currentpoint pop def /psy currentpoint exch pop def } def % string angle xpos ypos TXL -> print 'string' at pos xpos, ypos /TXL { gsave translate rotate 0 0 moveto show SAVPOS grestore } def % string angle xpos ypos TXR -> print 'string' at pos xpos, ypos /TXR { gsave translate rotate dup stringwidth pop neg 0 moveto show SAVPOS grestore } def % string angle xpos ypos TXC -> print 'string' at pos xpos, ypos /TXC { gsave translate rotate dup stringwidth pop 2 div neg 0 moveto show SAVPOS grestore } def % string angle TXREL -> print 'string' at xpos ypos translate psx psy rel /TXREL { gsave translate rotate psx psy moveto show SAVPOS grestore } def % char xpos ypos SY -> print symbol 'char' at position xpos, ypos /SY { moveto show } def /len {dup mul exch dup mul add sqrt}def %%%%%%%%%%%%%%%%%%%%%%% CURVE SMOOTHING %%%%%%%%%%%%%%%%%%%%%% % Curve Smoothing Routines % Ernest Wood - Wed Apr 16 09:05:05 1986 % % These routines will ALWAYS create a smooth curve which % intercepts EVERY point used to generate them. % % The definition qA determines the amount of overshoot smoothing % produces around each point. The distance is the distance to the % next point times aA. The factor qB scales the amount of overshoot % by the acuteness of the angle around the point. % % These values make a square of points into a circle. /qA .3 def % used in qx /qB 1 def % used in afactor /8a 8 array def % % Angle of vector from p0 to p1 p0 p1 polar ang /polar{qs neg exch neg atan}def %subtract and add points p0 p1 qs p0-p1 % p0 p1 qa p0+p1 /qs{exch 3 1 roll sub 3 1 roll sub exch}def /qa{exch 3 1 roll add 3 1 roll add exch}def % Extract point from 8 point array % /Pt{2 mul dup 8a exch get exch 1 add 8a exch get}def % a0 a1 mirrorang ma % If a0 is the angle from p1 to p0 and a1 is the angle from % p1 to p2 then ma is the mirror angle between p0-p1 and p1-p2. % a0 a1 afactor f % If a0 is the angle from p1 to p0 and a1 is the angle from % p1 to p2 then f is the ratio of the inside angle between a0 and a1 % and 180 times qB. This ratio is saturated at 1 and if qB is 0 then % the value returned is always 1. Thus the more acute the angle % the smaller the value of f. % /mirrorang{2 copy add 2 div 3 1 roll sub 0 lt {90} {-90}ifelse add}def /afactor{ qB 0 eq { 1 } {sub abs dup 180 gt {360 exch sub} if 180 div qB mul dup 1 gt {pop 1} if} ifelse }def % a d xya x y % Given angle a and distance d % produce x and y offsets. % /xya{exch 2 copy cos mul 3 1 roll sin mul}def % p0 p1 p2 p3 qx pp1 pp2 pp3 % Given 4 points on a curve produce the pp# values needed by % curveto to draw a smooth curve between p1 and p2. The slope % of the curve at p1 and p2 will be perpendicular to the bisector % of a angle between p0/p1/p2 or p1/p2/p3. % /qx{ 8a astore pop 1 Pt 2 Pt qs len qA mul /dist exch def 1 Pt 0 Pt polar 1 Pt 2 Pt polar 2 copy mirrorang 3 1 roll afactor dist mul xya 1 Pt qa 2 Pt 3 Pt polar 2 Pt 1 Pt polar 2 copy mirrorang 3 1 roll afactor dist mul xya 2 Pt qa 2 Pt }def /qp{8 copy 16 -2 roll pop pop}def /ns1{4 copy 4 -2 roll 2 copy qa 4 2 roll qs 6 2 roll /ns{ns2}def }def /ns2{qp qx curveto}def % User definitions for curve smoothing routines. % First (ms), intermediate (ns), and last points with (fs) and % without (nsfs) automatic stroke execution. % /ms{2 copy newpath moveto /ns{ns1}def}def /ns{ns1}def /fs{stroke}def /nsfs{ns 4 copy 2 copy qa 4 2 roll qs qx curveto}def /nsend{4 copy 2 copy qa 4 2 roll qs qx curveto}def 6 SetSym <0b> 360 473.143 SY 10 /Helvetica SetTxt ( DS5100 Prestoserve, 32MB, RZ57) 0 373.504 470.143 TXL 6 SetSym <07> 360 460.143 SY 10 /Helvetica SetTxt ( DS5500 Prestoserve, 32MB, RZ57) 0 373.504 457.143 TXL 6 SetSym <09> 360 447.143 SY 10 /Helvetica SetTxt ( DS5000 32MB memory, RZ57) 0 373.504 444.143 TXL 6 SetSym <05> 360 434.143 SY 10 /Helvetica SetTxt ( VAX6210 64MB, KDM70, RA81) 0 373.504 431.143 TXL 6 SetSym <03> 360 421.143 SY 10 /Helvetica SetTxt ( SUN 4/260 8MB, Micropolis 1558 (SCSI)) 0 373.504 418.143 TXL 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 131.098 105.727 ms [] 0.600000 SL 190.109 117.175 ns 248.515 126.864 ns 307.93 137.17 ns 361.699 146.304 ns 418.666 163.214 ns 472.896 184.073 ns 502.301 210.703 ns 504.259 208.574 ns 512.87 207.987 ns nsend D9 588.701 184.258 S9 [] 1.000000 SL 571.939 187.714 M9 538.675 176.297 M9 476.784 139.114 M9 421.805 124.827 M9 362.938 118.101 M9 307.67 114.552 M9 248.717 111.867 M9 190.714 103.875 M9 132.912 103.721 M9 D9 102.672 108.257 S9 131.414 121.896 M9 160.589 145.718 M9 189.936 149.976 M9 218.131 143.65 M9 248.458 156.549 M9 276.25 165.25 M9 304.646 197.743 M9 333.994 196.2 M9 368.237 235.79 M9 403.027 250.663 M9 D9 263.002 378.473 S9 260.035 386.835 M9 256.781 378.473 M9 244.627 305.928 M9 231.062 274.978 M9 217.296 249.675 M9 203.126 228.693 M9 188.842 205.827 M9 174.326 193.114 M9 160.704 182.561 M9 144.979 171.915 M9 131.818 167.966 M9 116.986 149.76 M9 102.47 144.792 M9 D9 230.602 458.177 S9 220.003 376.437 M9 202.666 323.702 M9 188.64 283.742 M9 175.018 252.329 M9 161.712 238.32 M9 145.613 220.176 M9 132.48 188.239 M9 117.446 180.37 M9 102.614 174.014 M9 D9 initclip (|) 0 72 72 TXC 10 /Helvetica-Bold SetTxt (0) 0 72 60 TXC 10 /Helvetica SetTxt (|) 0 129.6 72 TXC 10 /Helvetica-Bold SetTxt (20) 0 129.6 60 TXC 10 /Helvetica SetTxt (|) 0 187.2 72 TXC 10 /Helvetica-Bold SetTxt (40) 0 187.2 60 TXC 10 /Helvetica SetTxt (|) 0 244.8 72 TXC 10 /Helvetica-Bold SetTxt (60) 0 244.8 60 TXC 10 /Helvetica SetTxt (|) 0 302.4 72 TXC 10 /Helvetica-Bold SetTxt (80) 0 302.4 60 TXC 10 /Helvetica SetTxt (|) 0 360 72 TXC 10 /Helvetica-Bold SetTxt (100) 0 360 60 TXC 10 /Helvetica SetTxt (|) 0 417.6 72 TXC 10 /Helvetica-Bold SetTxt (120) 0 417.6 60 TXC 10 /Helvetica SetTxt (|) 0 475.2 72 TXC 10 /Helvetica-Bold SetTxt (140) 0 475.2 60 TXC 10 /Helvetica SetTxt (|) 0 532.8 72 TXC 10 /Helvetica-Bold SetTxt (160) 0 532.8 60 TXC 10 /Helvetica SetTxt (|) 0 590.4 72 TXC 10 /Helvetica-Bold SetTxt (180) 0 590.4 60 TXC 10 /Helvetica SetTxt (|) 0 648 72 TXC 10 /Helvetica-Bold SetTxt (200) 0 648 60 TXC 10 /Helvetica SetTxt (|) -90 72 72 TXC 10 /Helvetica-Bold SetTxt (0) 0 67 69 TXR 10 /Helvetica SetTxt (|) -90 72 102.857 TXC 10 /Helvetica-Bold SetTxt (10) 0 67 99.8571 TXR 10 /Helvetica SetTxt (|) -90 72 133.714 TXC 10 /Helvetica-Bold SetTxt (20) 0 67 130.714 TXR 10 /Helvetica SetTxt (|) -90 72 164.571 TXC 10 /Helvetica-Bold SetTxt (30) 0 67 161.571 TXR 10 /Helvetica SetTxt (|) -90 72 195.429 TXC 10 /Helvetica-Bold SetTxt (40) 0 67 192.429 TXR 10 /Helvetica SetTxt (|) -90 72 226.286 TXC 10 /Helvetica-Bold SetTxt (50) 0 67 223.286 TXR 10 /Helvetica SetTxt (|) -90 72 257.143 TXC 10 /Helvetica-Bold SetTxt (60) 0 67 254.143 TXR 10 /Helvetica SetTxt (|) -90 72 288 TXC 10 /Helvetica-Bold SetTxt (70) 0 67 285 TXR 10 /Helvetica SetTxt (|) -90 72 318.857 TXC 10 /Helvetica-Bold SetTxt (80) 0 67 315.857 TXR 10 /Helvetica SetTxt (|) -90 72 349.714 TXC 10 /Helvetica-Bold SetTxt (90) 0 67 346.714 TXR 10 /Helvetica SetTxt (|) -90 72 380.571 TXC 10 /Helvetica-Bold SetTxt (100) 0 67 377.571 TXR 10 /Helvetica SetTxt (|) -90 72 411.429 TXC 10 /Helvetica-Bold SetTxt (110) 0 67 408.429 TXR 10 /Helvetica SetTxt (|) -90 72 442.286 TXC 10 /Helvetica-Bold SetTxt (120) 0 67 439.286 TXR 10 /Helvetica SetTxt (|) -90 72 473.143 TXC 10 /Helvetica-Bold SetTxt (130) 0 67 470.143 TXR 10 /Helvetica SetTxt (|) -90 72 504 TXC 10 /Helvetica-Bold SetTxt (140) 0 67 501 TXR 10 /Helvetica SetTxt ( Nhfsstone v1.20, One Filesystem, Default Mix, DS5400 Client) 0 360 28 TXC 2 setlinecap 72 72 648 72 L9 0 setlinecap 72 72 72 504 L9 ( NFS Operations/Second) 0 648 47 TXR ( Response Time (Msec)) 90 41.5 504 TXR 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 6 SetSym <0b> 131.098 105.727 SY <0b> 190.109 117.175 SY <0b> 248.515 126.864 SY <0b> 307.93 137.17 SY <0b> 361.699 146.304 SY <0b> 418.666 163.214 SY <0b> 472.896 184.073 SY <0b> 502.301 210.703 SY <0b> 504.259 208.574 SY <0b> 512.87 207.987 SY <07> 588.701 184.258 SY <07> 571.939 187.714 SY <07> 538.675 176.297 SY <07> 476.784 139.114 SY <07> 421.805 124.827 SY <07> 362.938 118.101 SY <07> 307.67 114.552 SY <07> 248.717 111.867 SY <07> 190.714 103.875 SY <07> 132.912 103.721 SY <09> 102.672 108.257 SY <09> 131.414 121.896 SY <09> 160.589 145.718 SY <09> 189.936 149.976 SY <09> 218.131 143.65 SY <09> 248.458 156.549 SY <09> 276.25 165.25 SY <09> 304.646 197.743 SY <09> 333.994 196.2 SY <09> 368.237 235.79 SY <09> 403.027 250.663 SY <05> 263.002 378.473 SY <05> 260.035 386.835 SY <05> 256.781 378.473 SY <05> 244.627 305.928 SY <05> 231.062 274.978 SY <05> 217.296 249.675 SY <05> 203.126 228.693 SY <05> 188.842 205.827 SY <05> 174.326 193.114 SY <05> 160.704 182.561 SY <05> 144.979 171.915 SY <05> 131.818 167.966 SY <05> 116.986 149.76 SY <05> 102.47 144.792 SY <03> 230.602 458.177 SY <03> 220.003 376.437 SY <03> 202.666 323.702 SY <03> 188.64 283.742 SY <03> 175.018 252.329 SY <03> 161.712 238.32 SY <03> 145.613 220.176 SY <03> 132.48 188.239 SY <03> 117.446 180.37 SY <03> 102.614 174.014 SY initclip showpage %! 560 0 translate 90 rotate %! /symbolFont 10 dict def symbolFont begin /FontType 3 def /FontMatrix [.001 0 0 .001 0 0] def /FontBBox [-500 -500 500 500] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 1 /Cross put Encoding 2 /Triangle put Encoding 3 /Trianglefilled put Encoding 4 /Diamond put Encoding 5 /Diamondfilled put Encoding 6 /Square put Encoding 7 /Squarefilled put Encoding 8 /Rectan put Encoding 9 /Rectanfilled put Encoding 10 /Circle put Encoding 11 /Circlefilled put Encoding 12 /Bullet put Encoding 13 /Star put Encoding 14 /Plus put /graphclip {newpath moveto lineto lineto lineto closepath clip } def /Procs 15 dict def Procs begin /.notdef {} def /Cross { newpath -500 -500 moveto 500 500 lineto stroke newpath -500 500 moveto 500 -500 lineto stroke } def /Triangle { newpath -500 -500 moveto 0 500 lineto 500 -500 lineto closepath stroke } def /Trianglefilled { newpath -500 -500 moveto 0 500 lineto 500 -500 lineto closepath fill } def /Diamond { newpath -500 0 moveto 0 500 lineto 500 0 lineto 0 -500 lineto closepath stroke } def /Diamondfilled { newpath -500 0 moveto 0 500 lineto 500 0 lineto 0 -500 lineto closepath fill } def /Square { newpath -500 -500 moveto -500 500 lineto 500 500 lineto 500 -500 lineto closepath stroke } def /Squarefilled { newpath -500 -500 moveto -500 500 lineto 500 500 lineto 500 -500 lineto closepath fill } def /Rectan { newpath -200 -500 moveto -200 500 lineto 200 500 lineto 200 -500 lineto closepath stroke } def /Rectanfilled { newpath -200 -500 moveto -200 500 lineto 200 500 lineto 200 -500 lineto closepath fill } def /Circle { newpath 0 0 500 0 360 arc stroke } def /Circlefilled { newpath 0 0 500 0 360 arc closepath fill } def /Bullet { newpath 0 0 500 0 360 arc closepath fill } def /Plus { newpath 0 -500 moveto 0 500 lineto stroke newpath -500 0 moveto 500 0 lineto stroke } def /Star { newpath 0 -500 moveto 0 500 lineto stroke newpath -500 0 moveto 500 0 lineto stroke newpath -500 -500 moveto 500 500 lineto stroke newpath -500 500 moveto 500 -500 lineto stroke } def end /BuildChar { 1000 0 -500 -500 500 500 setcachedevice exch begin Encoding exch get Procs exch get end exec } def end /Symbols symbolFont definefont pop % size SetSym -> set font to be symbols scaled by 'size' /SetSym { /Symbols findfont exch scalefont setfont } def % size fontname SetTxt -> set font 'fontname' scaled by 'size' /SetTxt { findfont exch scalefont setfont } def % dashtype thicknes SL /SL { setlinewidth 0 setdash } def /cross {2 copy le {exch pop} {pop} ifelse} def %9 added to distinguish from other clashing scribe definitions % from to L9 -> print line between points 'from' and 'to' /L9 { newpath moveto lineto stroke } def /S9 { newpath moveto } def /M9 { lineto } def /D9 { stroke } def /SS9 { setscreen } def /G9 { setgray } def /F9 {newpath moveto lineto lineto lineto closepath fill} def /E9 {closepath fill} def % E9 is fills for incremental curves, while F9 for curve segments /Landscape {612 0 translate 90 rotate} def % save current point in global variable psx psy /SAVPOS { /psx currentpoint pop def /psy currentpoint exch pop def } def % string angle xpos ypos TXL -> print 'string' at pos xpos, ypos /TXL { gsave translate rotate 0 0 moveto show SAVPOS grestore } def % string angle xpos ypos TXR -> print 'string' at pos xpos, ypos /TXR { gsave translate rotate dup stringwidth pop neg 0 moveto show SAVPOS grestore } def % string angle xpos ypos TXC -> print 'string' at pos xpos, ypos /TXC { gsave translate rotate dup stringwidth pop 2 div neg 0 moveto show SAVPOS grestore } def % string angle TXREL -> print 'string' at xpos ypos translate psx psy rel /TXREL { gsave translate rotate psx psy moveto show SAVPOS grestore } def % char xpos ypos SY -> print symbol 'char' at position xpos, ypos /SY { moveto show } def /len {dup mul exch dup mul add sqrt}def %%%%%%%%%%%%%%%%%%%%%%% CURVE SMOOTHING %%%%%%%%%%%%%%%%%%%%%% % Curve Smoothing Routines % Ernest Wood - Wed Apr 16 09:05:05 1986 % % These routines will ALWAYS create a smooth curve which % intercepts EVERY point used to generate them. % % The definition qA determines the amount of overshoot smoothing % produces around each point. The distance is the distance to the % next point times aA. The factor qB scales the amount of overshoot % by the acuteness of the angle around the point. % % These values make a square of points into a circle. /qA .3 def % used in qx /qB 1 def % used in afactor /8a 8 array def % % Angle of vector from p0 to p1 p0 p1 polar ang /polar{qs neg exch neg atan}def %subtract and add points p0 p1 qs p0-p1 % p0 p1 qa p0+p1 /qs{exch 3 1 roll sub 3 1 roll sub exch}def /qa{exch 3 1 roll add 3 1 roll add exch}def % Extract point from 8 point array % /Pt{2 mul dup 8a exch get exch 1 add 8a exch get}def % a0 a1 mirrorang ma % If a0 is the angle from p1 to p0 and a1 is the angle from % p1 to p2 then ma is the mirror angle between p0-p1 and p1-p2. % a0 a1 afactor f % If a0 is the angle from p1 to p0 and a1 is the angle from % p1 to p2 then f is the ratio of the inside angle between a0 and a1 % and 180 times qB. This ratio is saturated at 1 and if qB is 0 then % the value returned is always 1. Thus the more acute the angle % the smaller the value of f. % /mirrorang{2 copy add 2 div 3 1 roll sub 0 lt {90} {-90}ifelse add}def /afactor{ qB 0 eq { 1 } {sub abs dup 180 gt {360 exch sub} if 180 div qB mul dup 1 gt {pop 1} if} ifelse }def % a d xya x y % Given angle a and distance d % produce x and y offsets. % /xya{exch 2 copy cos mul 3 1 roll sin mul}def % p0 p1 p2 p3 qx pp1 pp2 pp3 % Given 4 points on a curve produce the pp# values needed by % curveto to draw a smooth curve between p1 and p2. The slope % of the curve at p1 and p2 will be perpendicular to the bisector % of a angle between p0/p1/p2 or p1/p2/p3. % /qx{ 8a astore pop 1 Pt 2 Pt qs len qA mul /dist exch def 1 Pt 0 Pt polar 1 Pt 2 Pt polar 2 copy mirrorang 3 1 roll afactor dist mul xya 1 Pt qa 2 Pt 3 Pt polar 2 Pt 1 Pt polar 2 copy mirrorang 3 1 roll afactor dist mul xya 2 Pt qa 2 Pt }def /qp{8 copy 16 -2 roll pop pop}def /ns1{4 copy 4 -2 roll 2 copy qa 4 2 roll qs 6 2 roll /ns{ns2}def }def /ns2{qp qx curveto}def % User definitions for curve smoothing routines. % First (ms), intermediate (ns), and last points with (fs) and % without (nsfs) automatic stroke execution. % /ms{2 copy newpath moveto /ns{ns1}def}def /ns{ns1}def /fs{stroke}def /nsfs{ns 4 copy 2 copy qa 4 2 roll qs qx curveto}def /nsend{4 copy 2 copy qa 4 2 roll qs qx curveto}def 6 SetSym <07> 340.8 417.6 SY 10 /Helvetica SetTxt ( DECsystem 5500 Prestoserve, 32 MB, 2 RZ56) 0 354.304 414.6 TXL 6 SetSym <0b> 340.8 404.6 SY 10 /Helvetica SetTxt ( DECsystem 5100 Prestoserve, 24 MB, 2 RZ56) 0 354.304 401.6 TXL 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 111.418 110.88 ms [] 0.600000 SL 149.971 115.459 ns 190.483 129.974 ns 228.442 131.184 ns 265.766 139.133 ns 304.493 147.686 ns 338.669 145.613 ns 381.811 157.709 ns 423.571 177.926 ns 452.87 178.963 ns 505.286 204.71 ns 532.896 217.066 ns 579.744 269.424 ns 596.563 270.374 ns 612.019 275.558 ns nsend D9 111.725 154.08 ms 150.624 168.25 ns 190.157 174.384 ns 228.518 187.171 ns 265.786 202.982 ns 304.896 225.706 ns 341.568 245.664 ns 382.618 275.472 ns 423.84 321.782 ns 453.696 344.16 ns 447.706 369.562 ns 453.715 365.846 ns 451.949 371.549 ns nsend D9 initclip (|) 0 72 72 TXC 10 /Helvetica-Bold SetTxt (0) 0 72 60 TXC 10 /Helvetica SetTxt (|) 0 110.4 72 TXC 10 /Helvetica-Bold SetTxt (20) 0 110.4 60 TXC 10 /Helvetica SetTxt (|) 0 148.8 72 TXC 10 /Helvetica-Bold SetTxt (40) 0 148.8 60 TXC 10 /Helvetica SetTxt (|) 0 187.2 72 TXC 10 /Helvetica-Bold SetTxt (60) 0 187.2 60 TXC 10 /Helvetica SetTxt (|) 0 225.6 72 TXC 10 /Helvetica-Bold SetTxt (80) 0 225.6 60 TXC 10 /Helvetica SetTxt (|) 0 264 72 TXC 10 /Helvetica-Bold SetTxt (100) 0 264 60 TXC 10 /Helvetica SetTxt (|) 0 302.4 72 TXC 10 /Helvetica-Bold SetTxt (120) 0 302.4 60 TXC 10 /Helvetica SetTxt (|) 0 340.8 72 TXC 10 /Helvetica-Bold SetTxt (140) 0 340.8 60 TXC 10 /Helvetica SetTxt (|) 0 379.2 72 TXC 10 /Helvetica-Bold SetTxt (160) 0 379.2 60 TXC 10 /Helvetica SetTxt (|) 0 417.6 72 TXC 10 /Helvetica-Bold SetTxt (180) 0 417.6 60 TXC 10 /Helvetica SetTxt (|) 0 456 72 TXC 10 /Helvetica-Bold SetTxt (200) 0 456 60 TXC 10 /Helvetica SetTxt (|) 0 494.4 72 TXC 10 /Helvetica-Bold SetTxt (220) 0 494.4 60 TXC 10 /Helvetica SetTxt (|) 0 532.8 72 TXC 10 /Helvetica-Bold SetTxt (240) 0 532.8 60 TXC 10 /Helvetica SetTxt (|) 0 571.2 72 TXC 10 /Helvetica-Bold SetTxt (260) 0 571.2 60 TXC 10 /Helvetica SetTxt (|) 0 609.6 72 TXC 10 /Helvetica-Bold SetTxt (280) 0 609.6 60 TXC 10 /Helvetica SetTxt (|) 0 648 72 TXC 10 /Helvetica-Bold SetTxt (300) 0 648 60 TXC 10 /Helvetica SetTxt (|) -90 72 72 TXC 10 /Helvetica-Bold SetTxt (0) 0 67 69 TXR 10 /Helvetica SetTxt (|) -90 72 115.2 TXC 10 /Helvetica-Bold SetTxt (5) 0 67 112.2 TXR 10 /Helvetica SetTxt (|) -90 72 158.4 TXC 10 /Helvetica-Bold SetTxt (10) 0 67 155.4 TXR 10 /Helvetica SetTxt (|) -90 72 201.6 TXC 10 /Helvetica-Bold SetTxt (15) 0 67 198.6 TXR 10 /Helvetica SetTxt (|) -90 72 244.8 TXC 10 /Helvetica-Bold SetTxt (20) 0 67 241.8 TXR 10 /Helvetica SetTxt (|) -90 72 288 TXC 10 /Helvetica-Bold SetTxt (25) 0 67 285 TXR 10 /Helvetica SetTxt (|) -90 72 331.2 TXC 10 /Helvetica-Bold SetTxt (30) 0 67 328.2 TXR 10 /Helvetica SetTxt (|) -90 72 374.4 TXC 10 /Helvetica-Bold SetTxt (35) 0 67 371.4 TXR 10 /Helvetica SetTxt (|) -90 72 417.6 TXC 10 /Helvetica-Bold SetTxt (40) 0 67 414.6 TXR 10 /Helvetica SetTxt (|) -90 72 460.8 TXC 10 /Helvetica-Bold SetTxt (45) 0 67 457.8 TXR 10 /Helvetica SetTxt (|) -90 72 504 TXC 10 /Helvetica-Bold SetTxt (50) 0 67 501 TXR 10 /Helvetica SetTxt ( Nhfsstone v1.20, Two Filesystems, Default Mix, DS5500 Client) 0 360 28 TXC [] 1.000000 SL 2 setlinecap 72 72 648 72 L9 0 setlinecap 72 72 72 504 L9 ( NFS Operations/Second) 0 648 47 TXR ( Response Time (Msec)) 90 41.5 504 TXR 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 6 SetSym <07> 111.418 110.88 SY <07> 149.971 115.459 SY <07> 190.483 129.974 SY <07> 228.442 131.184 SY <07> 265.766 139.133 SY <07> 304.493 147.686 SY <07> 338.669 145.613 SY <07> 381.811 157.709 SY <07> 423.571 177.926 SY <07> 452.87 178.963 SY <07> 505.286 204.71 SY <07> 532.896 217.066 SY <07> 579.744 269.424 SY <07> 596.563 270.374 SY <07> 612.019 275.558 SY <0b> 111.725 154.08 SY <0b> 150.624 168.25 SY <0b> 190.157 174.384 SY <0b> 228.518 187.171 SY <0b> 265.786 202.982 SY <0b> 304.896 225.706 SY <0b> 341.568 245.664 SY <0b> 382.618 275.472 SY <0b> 423.84 321.782 SY <0b> 453.696 344.16 SY <0b> 447.706 369.562 SY <0b> 453.715 365.846 SY <0b> 451.949 371.549 SY initclip showpage
chet@decvax.dec.com (Chet Juszczak) (02/12/91)
Following my earlier posting on how Prestoserve affects NFS server performance, I received a number of questions about how the DECsystem 5100 and DECsystem 5500 platforms perform when Prestoserve is not being used; i.e. exactly what performance difference is the NVRAM acceleration making over what the platforms are capable of without it. This posting contains three plots in postscript form. These plots show NFS server performance measurements made on DECsystem 5100 and DECsystem 5500 servers with RZ57 scsi disks with and without Prestoserve. The measurements were made by me. The methodology used was the same as described in my earlier posting: the nhfsstone benchmark program was run on a DECsystem 5500 client. The machines were on a private network. Configuration information is included on the plots. The first plot shows measurements made with a DECsystem 5100 server, the second plot shows measurements made with a DECsystem 5500 server, and the third plot combines the data from the first two. Note that adding a second disk to the disk based configurations made a significant impact, while it made little difference to the NVRAM based configurations. Other testing has shown little effect upon server response for this benchmark when using slower disks. Assuming reasonable server cache hit rates for read requests, varying the number of disks and disk speed has little impact upon the NVRAM based server response profile. -chet Chet Juszczak chet@decvax.dec.com Digital Equipment Corporation decvax!chet 110 Spit Brook Rd. ZKO3-3/U14 Nashua, NH 03062 ***************** start of postcript plots - cut here *********************** %! 560 0 translate 90 rotate %! /symbolFont 10 dict def symbolFont begin /FontType 3 def /FontMatrix [.001 0 0 .001 0 0] def /FontBBox [-500 -500 500 500] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 1 /Cross put Encoding 2 /Triangle put Encoding 3 /Trianglefilled put Encoding 4 /Diamond put Encoding 5 /Diamondfilled put Encoding 6 /Square put Encoding 7 /Squarefilled put Encoding 8 /Rectan put Encoding 9 /Rectanfilled put Encoding 10 /Circle put Encoding 11 /Circlefilled put Encoding 12 /Bullet put Encoding 13 /Star put Encoding 14 /Plus put /graphclip {newpath moveto lineto lineto lineto closepath clip } def /Procs 15 dict def Procs begin /.notdef {} def /Cross { newpath -500 -500 moveto 500 500 lineto stroke newpath -500 500 moveto 500 -500 lineto stroke } def /Triangle { newpath -500 -500 moveto 0 500 lineto 500 -500 lineto closepath stroke } def /Trianglefilled { newpath -500 -500 moveto 0 500 lineto 500 -500 lineto closepath fill } def /Diamond { newpath -500 0 moveto 0 500 lineto 500 0 lineto 0 -500 lineto closepath stroke } def /Diamondfilled { newpath -500 0 moveto 0 500 lineto 500 0 lineto 0 -500 lineto closepath fill } def /Square { newpath -500 -500 moveto -500 500 lineto 500 500 lineto 500 -500 lineto closepath stroke } def /Squarefilled { newpath -500 -500 moveto -500 500 lineto 500 500 lineto 500 -500 lineto closepath fill } def /Rectan { newpath -200 -500 moveto -200 500 lineto 200 500 lineto 200 -500 lineto closepath stroke } def /Rectanfilled { newpath -200 -500 moveto -200 500 lineto 200 500 lineto 200 -500 lineto closepath fill } def /Circle { newpath 0 0 500 0 360 arc stroke } def /Circlefilled { newpath 0 0 500 0 360 arc closepath fill } def /Bullet { newpath 0 0 500 0 360 arc closepath fill } def /Plus { newpath 0 -500 moveto 0 500 lineto stroke newpath -500 0 moveto 500 0 lineto stroke } def /Star { newpath 0 -500 moveto 0 500 lineto stroke newpath -500 0 moveto 500 0 lineto stroke newpath -500 -500 moveto 500 500 lineto stroke newpath -500 500 moveto 500 -500 lineto stroke } def end /BuildChar { 1000 0 -500 -500 500 500 setcachedevice exch begin Encoding exch get Procs exch get end exec } def end /Symbols symbolFont definefont pop % size SetSym -> set font to be symbols scaled by 'size' /SetSym { /Symbols findfont exch scalefont setfont } def % size fontname SetTxt -> set font 'fontname' scaled by 'size' /SetTxt { findfont exch scalefont setfont } def % dashtype thicknes SL /SL { setlinewidth 0 setdash } def /cross {2 copy le {exch pop} {pop} ifelse} def %9 added to distinguish from other clashing scribe definitions % from to L9 -> print line between points 'from' and 'to' /L9 { newpath moveto lineto stroke } def /S9 { newpath moveto } def /M9 { lineto } def /D9 { stroke } def /SS9 { setscreen } def /G9 { setgray } def /F9 {newpath moveto lineto lineto lineto closepath fill} def /E9 {closepath fill} def % E9 is fills for incremental curves, while F9 for curve segments /Landscape {612 0 translate 90 rotate} def % save current point in global variable psx psy /SAVPOS { /psx currentpoint pop def /psy currentpoint exch pop def } def % string angle xpos ypos TXL -> print 'string' at pos xpos, ypos /TXL { gsave translate rotate 0 0 moveto show SAVPOS grestore } def % string angle xpos ypos TXR -> print 'string' at pos xpos, ypos /TXR { gsave translate rotate dup stringwidth pop neg 0 moveto show SAVPOS grestore } def % string angle xpos ypos TXC -> print 'string' at pos xpos, ypos /TXC { gsave translate rotate dup stringwidth pop 2 div neg 0 moveto show SAVPOS grestore } def % string angle TXREL -> print 'string' at xpos ypos translate psx psy rel /TXREL { gsave translate rotate psx psy moveto show SAVPOS grestore } def % char xpos ypos SY -> print symbol 'char' at position xpos, ypos /SY { moveto show } def /len {dup mul exch dup mul add sqrt}def %%%%%%%%%%%%%%%%%%%%%%% CURVE SMOOTHING %%%%%%%%%%%%%%%%%%%%%% % Curve Smoothing Routines % Ernest Wood - Wed Apr 16 09:05:05 1986 % % These routines will ALWAYS create a smooth curve which % intercepts EVERY point used to generate them. % % The definition qA determines the amount of overshoot smoothing % produces around each point. The distance is the distance to the % next point times aA. The factor qB scales the amount of overshoot % by the acuteness of the angle around the point. % % These values make a square of points into a circle. /qA .3 def % used in qx /qB 1 def % used in afactor /8a 8 array def % % Angle of vector from p0 to p1 p0 p1 polar ang /polar{qs neg exch neg atan}def %subtract and add points p0 p1 qs p0-p1 % p0 p1 qa p0+p1 /qs{exch 3 1 roll sub 3 1 roll sub exch}def /qa{exch 3 1 roll add 3 1 roll add exch}def % Extract point from 8 point array % /Pt{2 mul dup 8a exch get exch 1 add 8a exch get}def % a0 a1 mirrorang ma % If a0 is the angle from p1 to p0 and a1 is the angle from % p1 to p2 then ma is the mirror angle between p0-p1 and p1-p2. % a0 a1 afactor f % If a0 is the angle from p1 to p0 and a1 is the angle from % p1 to p2 then f is the ratio of the inside angle between a0 and a1 % and 180 times qB. This ratio is saturated at 1 and if qB is 0 then % the value returned is always 1. Thus the more acute the angle % the smaller the value of f. % /mirrorang{2 copy add 2 div 3 1 roll sub 0 lt {90} {-90}ifelse add}def /afactor{ qB 0 eq { 1 } {sub abs dup 180 gt {360 exch sub} if 180 div qB mul dup 1 gt {pop 1} if} ifelse }def % a d xya x y % Given angle a and distance d % produce x and y offsets. % /xya{exch 2 copy cos mul 3 1 roll sin mul}def % p0 p1 p2 p3 qx pp1 pp2 pp3 % Given 4 points on a curve produce the pp# values needed by % curveto to draw a smooth curve between p1 and p2. The slope % of the curve at p1 and p2 will be perpendicular to the bisector % of a angle between p0/p1/p2 or p1/p2/p3. % /qx{ 8a astore pop 1 Pt 2 Pt qs len qA mul /dist exch def 1 Pt 0 Pt polar 1 Pt 2 Pt polar 2 copy mirrorang 3 1 roll afactor dist mul xya 1 Pt qa 2 Pt 3 Pt polar 2 Pt 1 Pt polar 2 copy mirrorang 3 1 roll afactor dist mul xya 2 Pt qa 2 Pt }def /qp{8 copy 16 -2 roll pop pop}def /ns1{4 copy 4 -2 roll 2 copy qa 4 2 roll qs 6 2 roll /ns{ns2}def }def /ns2{qp qx curveto}def % User definitions for curve smoothing routines. % First (ms), intermediate (ns), and last points with (fs) and % without (nsfs) automatic stroke execution. % /ms{2 copy newpath moveto /ns{ns1}def}def /ns{ns1}def /fs{stroke}def /nsfs{ns 4 copy 2 copy qa 4 2 roll qs qx curveto}def /nsend{4 copy 2 copy qa 4 2 roll qs qx curveto}def 6 SetSym <02> 494.4 496.8 SY 10 /Helvetica SetTxt ( DECsystem 5100, 1 RZ57) 0 507.904 493.8 TXL 6 SetSym <03> 494.4 483.8 SY 10 /Helvetica SetTxt ( DECsystem 5100 Prestoserve, 1 RZ57) 0 507.904 480.8 TXL 6 SetSym <0a> 494.4 470.8 SY 10 /Helvetica SetTxt ( DECsystem 5100, 2 RZ57) 0 507.904 467.8 TXL 6 SetSym <0b> 494.4 457.8 SY 10 /Helvetica SetTxt ( DECsystem 5100 Prestoserve, 2 RZ57) 0 507.904 454.8 TXL 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 112.09 202.104 ms [] 0.600000 SL 151.661 202.104 ns 190.618 231.768 ns 227.981 282.744 ns 266.592 346.032 ns 296.429 435.024 ns 303.744 471.168 ns 313.44 458.136 ns 307.219 475.704 ns nsend D9 112.454 122.544 ms 150.355 142.056 ns 190.003 142.272 ns 228.691 159.12 ns 266.227 171.144 ns 306.95 190.008 ns 341.126 207.936 ns 385.498 242.424 ns 428.448 268.128 ns 436.646 323.64 ns 446.726 321.336 ns nsend D9 111.898 158.472 ms 151.027 182.304 ns 189.216 192.672 ns 227.424 205.848 ns 265.094 233.856 ns 302.4 258.84 ns 347.808 294.48 ns 365.856 341.064 ns 368.544 343.584 ns 370.848 342.792 ns nsend D9 111.974 125.424 ms 150.509 132.624 ns 190.003 142.128 ns 227.098 146.808 ns 266.765 162.432 ns 305.318 175.68 ns 348.134 199.44 ns 384.826 210.528 ns 418.368 238.176 ns 441.293 282.024 ns 446.016 287.136 ns 449.069 285.12 ns nsend D9 initclip (|) 0 72 72 TXC 10 /Helvetica-Bold SetTxt (0) 0 72 60 TXC 10 /Helvetica SetTxt (|) 0 110.4 72 TXC 10 /Helvetica-Bold SetTxt (20) 0 110.4 60 TXC 10 /Helvetica SetTxt (|) 0 148.8 72 TXC 10 /Helvetica-Bold SetTxt (40) 0 148.8 60 TXC 10 /Helvetica SetTxt (|) 0 187.2 72 TXC 10 /Helvetica-Bold SetTxt (60) 0 187.2 60 TXC 10 /Helvetica SetTxt (|) 0 225.6 72 TXC 10 /Helvetica-Bold SetTxt (80) 0 225.6 60 TXC 10 /Helvetica SetTxt (|) 0 264 72 TXC 10 /Helvetica-Bold SetTxt (100) 0 264 60 TXC 10 /Helvetica SetTxt (|) 0 302.4 72 TXC 10 /Helvetica-Bold SetTxt (120) 0 302.4 60 TXC 10 /Helvetica SetTxt (|) 0 340.8 72 TXC 10 /Helvetica-Bold SetTxt (140) 0 340.8 60 TXC 10 /Helvetica SetTxt (|) 0 379.2 72 TXC 10 /Helvetica-Bold SetTxt (160) 0 379.2 60 TXC 10 /Helvetica SetTxt (|) 0 417.6 72 TXC 10 /Helvetica-Bold SetTxt (180) 0 417.6 60 TXC 10 /Helvetica SetTxt (|) 0 456 72 TXC 10 /Helvetica-Bold SetTxt (200) 0 456 60 TXC 10 /Helvetica SetTxt (|) 0 494.4 72 TXC 10 /Helvetica-Bold SetTxt (220) 0 494.4 60 TXC 10 /Helvetica SetTxt (|) 0 532.8 72 TXC 10 /Helvetica-Bold SetTxt (240) 0 532.8 60 TXC 10 /Helvetica SetTxt (|) 0 571.2 72 TXC 10 /Helvetica-Bold SetTxt (260) 0 571.2 60 TXC 10 /Helvetica SetTxt (|) 0 609.6 72 TXC 10 /Helvetica-Bold SetTxt (280) 0 609.6 60 TXC 10 /Helvetica SetTxt (|) 0 648 72 TXC 10 /Helvetica-Bold SetTxt (300) 0 648 60 TXC 10 /Helvetica SetTxt (|) -90 72 72 TXC 10 /Helvetica-Bold SetTxt (0) 0 67 69 TXR 10 /Helvetica SetTxt (|) -90 72 108 TXC 10 /Helvetica-Bold SetTxt (5) 0 67 105 TXR 10 /Helvetica SetTxt (|) -90 72 144 TXC 10 /Helvetica-Bold SetTxt (10) 0 67 141 TXR 10 /Helvetica SetTxt (|) -90 72 180 TXC 10 /Helvetica-Bold SetTxt (15) 0 67 177 TXR 10 /Helvetica SetTxt (|) -90 72 216 TXC 10 /Helvetica-Bold SetTxt (20) 0 67 213 TXR 10 /Helvetica SetTxt (|) -90 72 252 TXC 10 /Helvetica-Bold SetTxt (25) 0 67 249 TXR 10 /Helvetica SetTxt (|) -90 72 288 TXC 10 /Helvetica-Bold SetTxt (30) 0 67 285 TXR 10 /Helvetica SetTxt (|) -90 72 324 TXC 10 /Helvetica-Bold SetTxt (35) 0 67 321 TXR 10 /Helvetica SetTxt (|) -90 72 360 TXC 10 /Helvetica-Bold SetTxt (40) 0 67 357 TXR 10 /Helvetica SetTxt (|) -90 72 396 TXC 10 /Helvetica-Bold SetTxt (45) 0 67 393 TXR 10 /Helvetica SetTxt (|) -90 72 432 TXC 10 /Helvetica-Bold SetTxt (50) 0 67 429 TXR 10 /Helvetica SetTxt (|) -90 72 468 TXC 10 /Helvetica-Bold SetTxt (55) 0 67 465 TXR 10 /Helvetica SetTxt (|) -90 72 504 TXC 10 /Helvetica-Bold SetTxt (60) 0 67 501 TXR 10 /Helvetica SetTxt ( DECsystem 5100 One and Two Disk Nhfsstone Profile) 0 360 28 TXC [] 1.000000 SL 2 setlinecap 72 72 648 72 L9 0 setlinecap 72 72 72 504 L9 ( NFS Operations/Second) 0 648 47 TXR ( Response Time (Msec)) 90 41.5 504 TXR (CONFIGURATION) 0 81.6 496.8 TXL ( ) 0 81.6 486.3 TXL (Nhfsstone:) 0 81.6 475.8 TXL ( V1.20, default mix, 6 procs ) 0 81.6 465.3 TXL (Client:) 0 81.6 454.8 TXL ( DECsystem 5500, ULTRIX V4.1, 16 MB,) 0 81.6 444.3 TXL ( 10% bufcache, 4 biods) 0 81.6 433.8 TXL (Servers:) 0 81.6 423.3 TXL ( DECsystem 5100, ULTRIX V4.1, 32 MB,) 0 81.6 412.8 TXL ( 25% bufcache, RZ57 disks, 16 nfsds) 0 81.6 402.3 TXL () 0 81.6 391.8 TXL 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 6 SetSym <02> 112.09 202.104 SY <02> 151.661 202.104 SY <02> 190.618 231.768 SY <02> 227.981 282.744 SY <02> 266.592 346.032 SY <02> 296.429 435.024 SY <02> 303.744 471.168 SY <02> 313.44 458.136 SY <02> 307.219 475.704 SY <03> 112.454 122.544 SY <03> 150.355 142.056 SY <03> 190.003 142.272 SY <03> 228.691 159.12 SY <03> 266.227 171.144 SY <03> 306.95 190.008 SY <03> 341.126 207.936 SY <03> 385.498 242.424 SY <03> 428.448 268.128 SY <03> 436.646 323.64 SY <03> 446.726 321.336 SY <0a> 111.898 158.472 SY <0a> 151.027 182.304 SY <0a> 189.216 192.672 SY <0a> 227.424 205.848 SY <0a> 265.094 233.856 SY <0a> 302.4 258.84 SY <0a> 347.808 294.48 SY <0a> 365.856 341.064 SY <0a> 368.544 343.584 SY <0a> 370.848 342.792 SY <0b> 111.974 125.424 SY <0b> 150.509 132.624 SY <0b> 190.003 142.128 SY <0b> 227.098 146.808 SY <0b> 266.765 162.432 SY <0b> 305.318 175.68 SY <0b> 348.134 199.44 SY <0b> 384.826 210.528 SY <0b> 418.368 238.176 SY <0b> 441.293 282.024 SY <0b> 446.016 287.136 SY <0b> 449.069 285.12 SY initclip showpage %! 560 0 translate 90 rotate %! /symbolFont 10 dict def symbolFont begin /FontType 3 def /FontMatrix [.001 0 0 .001 0 0] def /FontBBox [-500 -500 500 500] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 1 /Cross put Encoding 2 /Triangle put Encoding 3 /Trianglefilled put Encoding 4 /Diamond put Encoding 5 /Diamondfilled put Encoding 6 /Square put Encoding 7 /Squarefilled put Encoding 8 /Rectan put Encoding 9 /Rectanfilled put Encoding 10 /Circle put Encoding 11 /Circlefilled put Encoding 12 /Bullet put Encoding 13 /Star put Encoding 14 /Plus put /graphclip {newpath moveto lineto lineto lineto closepath clip } def /Procs 15 dict def Procs begin /.notdef {} def /Cross { newpath -500 -500 moveto 500 500 lineto stroke newpath -500 500 moveto 500 -500 lineto stroke } def /Triangle { newpath -500 -500 moveto 0 500 lineto 500 -500 lineto closepath stroke } def /Trianglefilled { newpath -500 -500 moveto 0 500 lineto 500 -500 lineto closepath fill } def /Diamond { newpath -500 0 moveto 0 500 lineto 500 0 lineto 0 -500 lineto closepath stroke } def /Diamondfilled { newpath -500 0 moveto 0 500 lineto 500 0 lineto 0 -500 lineto closepath fill } def /Square { newpath -500 -500 moveto -500 500 lineto 500 500 lineto 500 -500 lineto closepath stroke } def /Squarefilled { newpath -500 -500 moveto -500 500 lineto 500 500 lineto 500 -500 lineto closepath fill } def /Rectan { newpath -200 -500 moveto -200 500 lineto 200 500 lineto 200 -500 lineto closepath stroke } def /Rectanfilled { newpath -200 -500 moveto -200 500 lineto 200 500 lineto 200 -500 lineto closepath fill } def /Circle { newpath 0 0 500 0 360 arc stroke } def /Circlefilled { newpath 0 0 500 0 360 arc closepath fill } def /Bullet { newpath 0 0 500 0 360 arc closepath fill } def /Plus { newpath 0 -500 moveto 0 500 lineto stroke newpath -500 0 moveto 500 0 lineto stroke } def /Star { newpath 0 -500 moveto 0 500 lineto stroke newpath -500 0 moveto 500 0 lineto stroke newpath -500 -500 moveto 500 500 lineto stroke newpath -500 500 moveto 500 -500 lineto stroke } def end /BuildChar { 1000 0 -500 -500 500 500 setcachedevice exch begin Encoding exch get Procs exch get end exec } def end /Symbols symbolFont definefont pop % size SetSym -> set font to be symbols scaled by 'size' /SetSym { /Symbols findfont exch scalefont setfont } def % size fontname SetTxt -> set font 'fontname' scaled by 'size' /SetTxt { findfont exch scalefont setfont } def % dashtype thicknes SL /SL { setlinewidth 0 setdash } def /cross {2 copy le {exch pop} {pop} ifelse} def %9 added to distinguish from other clashing scribe definitions % from to L9 -> print line between points 'from' and 'to' /L9 { newpath moveto lineto stroke } def /S9 { newpath moveto } def /M9 { lineto } def /D9 { stroke } def /SS9 { setscreen } def /G9 { setgray } def /F9 {newpath moveto lineto lineto lineto closepath fill} def /E9 {closepath fill} def % E9 is fills for incremental curves, while F9 for curve segments /Landscape {612 0 translate 90 rotate} def % save current point in global variable psx psy /SAVPOS { /psx currentpoint pop def /psy currentpoint exch pop def } def % string angle xpos ypos TXL -> print 'string' at pos xpos, ypos /TXL { gsave translate rotate 0 0 moveto show SAVPOS grestore } def % string angle xpos ypos TXR -> print 'string' at pos xpos, ypos /TXR { gsave translate rotate dup stringwidth pop neg 0 moveto show SAVPOS grestore } def % string angle xpos ypos TXC -> print 'string' at pos xpos, ypos /TXC { gsave translate rotate dup stringwidth pop 2 div neg 0 moveto show SAVPOS grestore } def % string angle TXREL -> print 'string' at xpos ypos translate psx psy rel /TXREL { gsave translate rotate psx psy moveto show SAVPOS grestore } def % char xpos ypos SY -> print symbol 'char' at position xpos, ypos /SY { moveto show } def /len {dup mul exch dup mul add sqrt}def %%%%%%%%%%%%%%%%%%%%%%% CURVE SMOOTHING %%%%%%%%%%%%%%%%%%%%%% % Curve Smoothing Routines % Ernest Wood - Wed Apr 16 09:05:05 1986 % % These routines will ALWAYS create a smooth curve which % intercepts EVERY point used to generate them. % % The definition qA determines the amount of overshoot smoothing % produces around each point. The distance is the distance to the % next point times aA. The factor qB scales the amount of overshoot % by the acuteness of the angle around the point. % % These values make a square of points into a circle. /qA .3 def % used in qx /qB 1 def % used in afactor /8a 8 array def % % Angle of vector from p0 to p1 p0 p1 polar ang /polar{qs neg exch neg atan}def %subtract and add points p0 p1 qs p0-p1 % p0 p1 qa p0+p1 /qs{exch 3 1 roll sub 3 1 roll sub exch}def /qa{exch 3 1 roll add 3 1 roll add exch}def % Extract point from 8 point array % /Pt{2 mul dup 8a exch get exch 1 add 8a exch get}def % a0 a1 mirrorang ma % If a0 is the angle from p1 to p0 and a1 is the angle from % p1 to p2 then ma is the mirror angle between p0-p1 and p1-p2. % a0 a1 afactor f % If a0 is the angle from p1 to p0 and a1 is the angle from % p1 to p2 then f is the ratio of the inside angle between a0 and a1 % and 180 times qB. This ratio is saturated at 1 and if qB is 0 then % the value returned is always 1. Thus the more acute the angle % the smaller the value of f. % /mirrorang{2 copy add 2 div 3 1 roll sub 0 lt {90} {-90}ifelse add}def /afactor{ qB 0 eq { 1 } {sub abs dup 180 gt {360 exch sub} if 180 div qB mul dup 1 gt {pop 1} if} ifelse }def % a d xya x y % Given angle a and distance d % produce x and y offsets. % /xya{exch 2 copy cos mul 3 1 roll sin mul}def % p0 p1 p2 p3 qx pp1 pp2 pp3 % Given 4 points on a curve produce the pp# values needed by % curveto to draw a smooth curve between p1 and p2. The slope % of the curve at p1 and p2 will be perpendicular to the bisector % of a angle between p0/p1/p2 or p1/p2/p3. % /qx{ 8a astore pop 1 Pt 2 Pt qs len qA mul /dist exch def 1 Pt 0 Pt polar 1 Pt 2 Pt polar 2 copy mirrorang 3 1 roll afactor dist mul xya 1 Pt qa 2 Pt 3 Pt polar 2 Pt 1 Pt polar 2 copy mirrorang 3 1 roll afactor dist mul xya 2 Pt qa 2 Pt }def /qp{8 copy 16 -2 roll pop pop}def /ns1{4 copy 4 -2 roll 2 copy qa 4 2 roll qs 6 2 roll /ns{ns2}def }def /ns2{qp qx curveto}def % User definitions for curve smoothing routines. % First (ms), intermediate (ns), and last points with (fs) and % without (nsfs) automatic stroke execution. % /ms{2 copy newpath moveto /ns{ns1}def}def /ns{ns1}def /fs{stroke}def /nsfs{ns 4 copy 2 copy qa 4 2 roll qs qx curveto}def /nsend{4 copy 2 copy qa 4 2 roll qs qx curveto}def 6 SetSym <04> 494.4 496.8 SY 10 /Helvetica SetTxt ( DECsystem 5500, 1 RZ57) 0 507.904 493.8 TXL 6 SetSym <05> 494.4 483.8 SY 10 /Helvetica SetTxt ( DECsystem 5500 Prestoserve, 1 RZ57) 0 507.904 480.8 TXL 6 SetSym <06> 494.4 470.8 SY 10 /Helvetica SetTxt ( DECsystem 5500, 2 RZ57) 0 507.904 467.8 TXL 6 SetSym <07> 494.4 457.8 SY 10 /Helvetica SetTxt ( DECsystem 5500 Prestoserve, 2 RZ57) 0 507.904 454.8 TXL 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 111.533 153.72 ms [] 0.600000 SL 150.778 170.352 ns 189.062 185.904 ns 227.654 207.144 ns 266.035 227.448 ns 301.44 282.096 ns 325.056 346.68 ns 322.118 388.584 ns 321.485 394.056 ns nsend D9 111.322 112.392 ms 151.027 115.632 ns 189.542 116.064 ns 227.558 126.216 ns 267.629 129.816 ns 305.146 135.36 ns 350.688 142.704 ns 387.725 152.136 ns 420.845 168.696 ns 456.864 178.272 ns 500.755 189.72 ns 534.067 203.472 ns 560.794 233.784 ns 573.581 230.04 ns 566.899 235.152 ns nsend D9 111.302 156.672 ms 150.816 158.112 ns 189.216 164.448 ns 227.386 176.184 ns 266.227 183.6 ns 303.283 191.304 ns 348.192 207.216 ns 380.256 233.856 ns 418.368 250.776 ns 447.168 262.296 ns 464.448 271.584 ns 471.302 273.384 ns nsend D9 111.725 109.152 ms 150.912 110.736 ns 190.061 117.648 ns 227.578 122.688 ns 266.669 129.816 ns 305.03 133.56 ns 350.784 143.496 ns 385.267 148.896 ns 424.397 156.24 ns 457.152 164.736 ns 499.181 178.344 ns 533.587 193.392 ns 571.949 221.976 ns 576.979 230.76 ns 589.555 228.024 ns nsend D9 initclip (|) 0 72 72 TXC 10 /Helvetica-Bold SetTxt (0) 0 72 60 TXC 10 /Helvetica SetTxt (|) 0 110.4 72 TXC 10 /Helvetica-Bold SetTxt (20) 0 110.4 60 TXC 10 /Helvetica SetTxt (|) 0 148.8 72 TXC 10 /Helvetica-Bold SetTxt (40) 0 148.8 60 TXC 10 /Helvetica SetTxt (|) 0 187.2 72 TXC 10 /Helvetica-Bold SetTxt (60) 0 187.2 60 TXC 10 /Helvetica SetTxt (|) 0 225.6 72 TXC 10 /Helvetica-Bold SetTxt (80) 0 225.6 60 TXC 10 /Helvetica SetTxt (|) 0 264 72 TXC 10 /Helvetica-Bold SetTxt (100) 0 264 60 TXC 10 /Helvetica SetTxt (|) 0 302.4 72 TXC 10 /Helvetica-Bold SetTxt (120) 0 302.4 60 TXC 10 /Helvetica SetTxt (|) 0 340.8 72 TXC 10 /Helvetica-Bold SetTxt (140) 0 340.8 60 TXC 10 /Helvetica SetTxt (|) 0 379.2 72 TXC 10 /Helvetica-Bold SetTxt (160) 0 379.2 60 TXC 10 /Helvetica SetTxt (|) 0 417.6 72 TXC 10 /Helvetica-Bold SetTxt (180) 0 417.6 60 TXC 10 /Helvetica SetTxt (|) 0 456 72 TXC 10 /Helvetica-Bold SetTxt (200) 0 456 60 TXC 10 /Helvetica SetTxt (|) 0 494.4 72 TXC 10 /Helvetica-Bold SetTxt (220) 0 494.4 60 TXC 10 /Helvetica SetTxt (|) 0 532.8 72 TXC 10 /Helvetica-Bold SetTxt (240) 0 532.8 60 TXC 10 /Helvetica SetTxt (|) 0 571.2 72 TXC 10 /Helvetica-Bold SetTxt (260) 0 571.2 60 TXC 10 /Helvetica SetTxt (|) 0 609.6 72 TXC 10 /Helvetica-Bold SetTxt (280) 0 609.6 60 TXC 10 /Helvetica SetTxt (|) 0 648 72 TXC 10 /Helvetica-Bold SetTxt (300) 0 648 60 TXC 10 /Helvetica SetTxt (|) -90 72 72 TXC 10 /Helvetica-Bold SetTxt (0) 0 67 69 TXR 10 /Helvetica SetTxt (|) -90 72 108 TXC 10 /Helvetica-Bold SetTxt (5) 0 67 105 TXR 10 /Helvetica SetTxt (|) -90 72 144 TXC 10 /Helvetica-Bold SetTxt (10) 0 67 141 TXR 10 /Helvetica SetTxt (|) -90 72 180 TXC 10 /Helvetica-Bold SetTxt (15) 0 67 177 TXR 10 /Helvetica SetTxt (|) -90 72 216 TXC 10 /Helvetica-Bold SetTxt (20) 0 67 213 TXR 10 /Helvetica SetTxt (|) -90 72 252 TXC 10 /Helvetica-Bold SetTxt (25) 0 67 249 TXR 10 /Helvetica SetTxt (|) -90 72 288 TXC 10 /Helvetica-Bold SetTxt (30) 0 67 285 TXR 10 /Helvetica SetTxt (|) -90 72 324 TXC 10 /Helvetica-Bold SetTxt (35) 0 67 321 TXR 10 /Helvetica SetTxt (|) -90 72 360 TXC 10 /Helvetica-Bold SetTxt (40) 0 67 357 TXR 10 /Helvetica SetTxt (|) -90 72 396 TXC 10 /Helvetica-Bold SetTxt (45) 0 67 393 TXR 10 /Helvetica SetTxt (|) -90 72 432 TXC 10 /Helvetica-Bold SetTxt (50) 0 67 429 TXR 10 /Helvetica SetTxt (|) -90 72 468 TXC 10 /Helvetica-Bold SetTxt (55) 0 67 465 TXR 10 /Helvetica SetTxt (|) -90 72 504 TXC 10 /Helvetica-Bold SetTxt (60) 0 67 501 TXR 10 /Helvetica SetTxt ( DECsystem 5500 One and Two Disk Nhfsstone Profile) 0 360 28 TXC [] 1.000000 SL 2 setlinecap 72 72 648 72 L9 0 setlinecap 72 72 72 504 L9 ( NFS Operations/Second) 0 648 47 TXR ( Response Time (Msec)) 90 41.5 504 TXR (CONFIGURATION) 0 81.6 496.8 TXL ( ) 0 81.6 486.3 TXL (Nhfsstone:) 0 81.6 475.8 TXL ( V1.20, default mix, 6 procs ) 0 81.6 465.3 TXL (Client:) 0 81.6 454.8 TXL ( DECsystem 5500, ULTRIX V4.1, 16 MB,) 0 81.6 444.3 TXL ( 10% bufcache, 4 biods) 0 81.6 433.8 TXL (Servers:) 0 81.6 423.3 TXL ( DECsystem 5500, ULTRIX V4.1, 32 MB,) 0 81.6 412.8 TXL ( 25% bufcache, RZ57 disks, 16 nfsds) 0 81.6 402.3 TXL () 0 81.6 391.8 TXL 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 6 SetSym <04> 111.533 153.72 SY <04> 150.778 170.352 SY <04> 189.062 185.904 SY <04> 227.654 207.144 SY <04> 266.035 227.448 SY <04> 301.44 282.096 SY <04> 325.056 346.68 SY <04> 322.118 388.584 SY <04> 321.485 394.056 SY <05> 111.322 112.392 SY <05> 151.027 115.632 SY <05> 189.542 116.064 SY <05> 227.558 126.216 SY <05> 267.629 129.816 SY <05> 305.146 135.36 SY <05> 350.688 142.704 SY <05> 387.725 152.136 SY <05> 420.845 168.696 SY <05> 456.864 178.272 SY <05> 500.755 189.72 SY <05> 534.067 203.472 SY <05> 560.794 233.784 SY <05> 573.581 230.04 SY <05> 566.899 235.152 SY <06> 111.302 156.672 SY <06> 150.816 158.112 SY <06> 189.216 164.448 SY <06> 227.386 176.184 SY <06> 266.227 183.6 SY <06> 303.283 191.304 SY <06> 348.192 207.216 SY <06> 380.256 233.856 SY <06> 418.368 250.776 SY <06> 447.168 262.296 SY <06> 464.448 271.584 SY <06> 471.302 273.384 SY <07> 111.725 109.152 SY <07> 150.912 110.736 SY <07> 190.061 117.648 SY <07> 227.578 122.688 SY <07> 266.669 129.816 SY <07> 305.03 133.56 SY <07> 350.784 143.496 SY <07> 385.267 148.896 SY <07> 424.397 156.24 SY <07> 457.152 164.736 SY <07> 499.181 178.344 SY <07> 533.587 193.392 SY <07> 571.949 221.976 SY <07> 576.979 230.76 SY <07> 589.555 228.024 SY initclip showpage %! 560 0 translate 90 rotate %! /symbolFont 10 dict def symbolFont begin /FontType 3 def /FontMatrix [.001 0 0 .001 0 0] def /FontBBox [-500 -500 500 500] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 1 /Cross put Encoding 2 /Triangle put Encoding 3 /Trianglefilled put Encoding 4 /Diamond put Encoding 5 /Diamondfilled put Encoding 6 /Square put Encoding 7 /Squarefilled put Encoding 8 /Rectan put Encoding 9 /Rectanfilled put Encoding 10 /Circle put Encoding 11 /Circlefilled put Encoding 12 /Bullet put Encoding 13 /Star put Encoding 14 /Plus put /graphclip {newpath moveto lineto lineto lineto closepath clip } def /Procs 15 dict def Procs begin /.notdef {} def /Cross { newpath -500 -500 moveto 500 500 lineto stroke newpath -500 500 moveto 500 -500 lineto stroke } def /Triangle { newpath -500 -500 moveto 0 500 lineto 500 -500 lineto closepath stroke } def /Trianglefilled { newpath -500 -500 moveto 0 500 lineto 500 -500 lineto closepath fill } def /Diamond { newpath -500 0 moveto 0 500 lineto 500 0 lineto 0 -500 lineto closepath stroke } def /Diamondfilled { newpath -500 0 moveto 0 500 lineto 500 0 lineto 0 -500 lineto closepath fill } def /Square { newpath -500 -500 moveto -500 500 lineto 500 500 lineto 500 -500 lineto closepath stroke } def /Squarefilled { newpath -500 -500 moveto -500 500 lineto 500 500 lineto 500 -500 lineto closepath fill } def /Rectan { newpath -200 -500 moveto -200 500 lineto 200 500 lineto 200 -500 lineto closepath stroke } def /Rectanfilled { newpath -200 -500 moveto -200 500 lineto 200 500 lineto 200 -500 lineto closepath fill } def /Circle { newpath 0 0 500 0 360 arc stroke } def /Circlefilled { newpath 0 0 500 0 360 arc closepath fill } def /Bullet { newpath 0 0 500 0 360 arc closepath fill } def /Plus { newpath 0 -500 moveto 0 500 lineto stroke newpath -500 0 moveto 500 0 lineto stroke } def /Star { newpath 0 -500 moveto 0 500 lineto stroke newpath -500 0 moveto 500 0 lineto stroke newpath -500 -500 moveto 500 500 lineto stroke newpath -500 500 moveto 500 -500 lineto stroke } def end /BuildChar { 1000 0 -500 -500 500 500 setcachedevice exch begin Encoding exch get Procs exch get end exec } def end /Symbols symbolFont definefont pop % size SetSym -> set font to be symbols scaled by 'size' /SetSym { /Symbols findfont exch scalefont setfont } def % size fontname SetTxt -> set font 'fontname' scaled by 'size' /SetTxt { findfont exch scalefont setfont } def % dashtype thicknes SL /SL { setlinewidth 0 setdash } def /cross {2 copy le {exch pop} {pop} ifelse} def %9 added to distinguish from other clashing scribe definitions % from to L9 -> print line between points 'from' and 'to' /L9 { newpath moveto lineto stroke } def /S9 { newpath moveto } def /M9 { lineto } def /D9 { stroke } def /SS9 { setscreen } def /G9 { setgray } def /F9 {newpath moveto lineto lineto lineto closepath fill} def /E9 {closepath fill} def % E9 is fills for incremental curves, while F9 for curve segments /Landscape {612 0 translate 90 rotate} def % save current point in global variable psx psy /SAVPOS { /psx currentpoint pop def /psy currentpoint exch pop def } def % string angle xpos ypos TXL -> print 'string' at pos xpos, ypos /TXL { gsave translate rotate 0 0 moveto show SAVPOS grestore } def % string angle xpos ypos TXR -> print 'string' at pos xpos, ypos /TXR { gsave translate rotate dup stringwidth pop neg 0 moveto show SAVPOS grestore } def % string angle xpos ypos TXC -> print 'string' at pos xpos, ypos /TXC { gsave translate rotate dup stringwidth pop 2 div neg 0 moveto show SAVPOS grestore } def % string angle TXREL -> print 'string' at xpos ypos translate psx psy rel /TXREL { gsave translate rotate psx psy moveto show SAVPOS grestore } def % char xpos ypos SY -> print symbol 'char' at position xpos, ypos /SY { moveto show } def /len {dup mul exch dup mul add sqrt}def %%%%%%%%%%%%%%%%%%%%%%% CURVE SMOOTHING %%%%%%%%%%%%%%%%%%%%%% % Curve Smoothing Routines % Ernest Wood - Wed Apr 16 09:05:05 1986 % % These routines will ALWAYS create a smooth curve which % intercepts EVERY point used to generate them. % % The definition qA determines the amount of overshoot smoothing % produces around each point. The distance is the distance to the % next point times aA. The factor qB scales the amount of overshoot % by the acuteness of the angle around the point. % % These values make a square of points into a circle. /qA .3 def % used in qx /qB 1 def % used in afactor /8a 8 array def % % Angle of vector from p0 to p1 p0 p1 polar ang /polar{qs neg exch neg atan}def %subtract and add points p0 p1 qs p0-p1 % p0 p1 qa p0+p1 /qs{exch 3 1 roll sub 3 1 roll sub exch}def /qa{exch 3 1 roll add 3 1 roll add exch}def % Extract point from 8 point array % /Pt{2 mul dup 8a exch get exch 1 add 8a exch get}def % a0 a1 mirrorang ma % If a0 is the angle from p1 to p0 and a1 is the angle from % p1 to p2 then ma is the mirror angle between p0-p1 and p1-p2. % a0 a1 afactor f % If a0 is the angle from p1 to p0 and a1 is the angle from % p1 to p2 then f is the ratio of the inside angle between a0 and a1 % and 180 times qB. This ratio is saturated at 1 and if qB is 0 then % the value returned is always 1. Thus the more acute the angle % the smaller the value of f. % /mirrorang{2 copy add 2 div 3 1 roll sub 0 lt {90} {-90}ifelse add}def /afactor{ qB 0 eq { 1 } {sub abs dup 180 gt {360 exch sub} if 180 div qB mul dup 1 gt {pop 1} if} ifelse }def % a d xya x y % Given angle a and distance d % produce x and y offsets. % /xya{exch 2 copy cos mul 3 1 roll sin mul}def % p0 p1 p2 p3 qx pp1 pp2 pp3 % Given 4 points on a curve produce the pp# values needed by % curveto to draw a smooth curve between p1 and p2. The slope % of the curve at p1 and p2 will be perpendicular to the bisector % of a angle between p0/p1/p2 or p1/p2/p3. % /qx{ 8a astore pop 1 Pt 2 Pt qs len qA mul /dist exch def 1 Pt 0 Pt polar 1 Pt 2 Pt polar 2 copy mirrorang 3 1 roll afactor dist mul xya 1 Pt qa 2 Pt 3 Pt polar 2 Pt 1 Pt polar 2 copy mirrorang 3 1 roll afactor dist mul xya 2 Pt qa 2 Pt }def /qp{8 copy 16 -2 roll pop pop}def /ns1{4 copy 4 -2 roll 2 copy qa 4 2 roll qs 6 2 roll /ns{ns2}def }def /ns2{qp qx curveto}def % User definitions for curve smoothing routines. % First (ms), intermediate (ns), and last points with (fs) and % without (nsfs) automatic stroke execution. % /ms{2 copy newpath moveto /ns{ns1}def}def /ns{ns1}def /fs{stroke}def /nsfs{ns 4 copy 2 copy qa 4 2 roll qs qx curveto}def /nsend{4 copy 2 copy qa 4 2 roll qs qx curveto}def 6 SetSym <02> 494.4 496.8 SY 10 /Helvetica SetTxt ( DECsystem 5100, 1 RZ57) 0 507.904 493.8 TXL 6 SetSym <03> 494.4 483.8 SY 10 /Helvetica SetTxt ( DECsystem 5100 Prestoserve, 1 RZ57) 0 507.904 480.8 TXL 6 SetSym <0a> 494.4 470.8 SY 10 /Helvetica SetTxt ( DECsystem 5100, 2 RZ57) 0 507.904 467.8 TXL 6 SetSym <0b> 494.4 457.8 SY 10 /Helvetica SetTxt ( DECsystem 5100 Prestoserve, 2 RZ57) 0 507.904 454.8 TXL 6 SetSym <04> 494.4 444.8 SY 10 /Helvetica SetTxt ( DECsystem 5500, 1 RZ57) 0 507.904 441.8 TXL 6 SetSym <05> 494.4 431.8 SY 10 /Helvetica SetTxt ( DECsystem 5500 Prestoserve, 1 RZ57) 0 507.904 428.8 TXL 6 SetSym <06> 494.4 418.8 SY 10 /Helvetica SetTxt ( DECsystem 5500, 2 RZ57) 0 507.904 415.8 TXL 6 SetSym <07> 494.4 405.8 SY 10 /Helvetica SetTxt ( DECsystem 5500 Prestoserve, 2 RZ57) 0 507.904 402.8 TXL 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 112.09 202.104 ms [] 0.600000 SL 151.661 202.104 ns 190.618 231.768 ns 227.981 282.744 ns 266.592 346.032 ns 296.429 435.024 ns 303.744 471.168 ns 313.44 458.136 ns 307.219 475.704 ns nsend D9 112.454 122.544 ms 150.355 142.056 ns 190.003 142.272 ns 228.691 159.12 ns 266.227 171.144 ns 306.95 190.008 ns 341.126 207.936 ns 385.498 242.424 ns 428.448 268.128 ns 436.646 323.64 ns 446.726 321.336 ns nsend D9 111.898 158.472 ms 151.027 182.304 ns 189.216 192.672 ns 227.424 205.848 ns 265.094 233.856 ns 302.4 258.84 ns 347.808 294.48 ns 365.856 341.064 ns 368.544 343.584 ns 370.848 342.792 ns nsend D9 111.974 125.424 ms 150.509 132.624 ns 190.003 142.128 ns 227.098 146.808 ns 266.765 162.432 ns 305.318 175.68 ns 348.134 199.44 ns 384.826 210.528 ns 418.368 238.176 ns 441.293 282.024 ns 446.016 287.136 ns 449.069 285.12 ns nsend D9 111.533 153.72 ms 150.778 170.352 ns 189.062 185.904 ns 227.654 207.144 ns 266.035 227.448 ns 301.44 282.096 ns 325.056 346.68 ns 322.118 388.584 ns 321.485 394.056 ns nsend D9 111.322 112.392 ms 151.027 115.632 ns 189.542 116.064 ns 227.558 126.216 ns 267.629 129.816 ns 305.146 135.36 ns 350.688 142.704 ns 387.725 152.136 ns 420.845 168.696 ns 456.864 178.272 ns 500.755 189.72 ns 534.067 203.472 ns 560.794 233.784 ns 573.581 230.04 ns 566.899 235.152 ns nsend D9 111.302 156.672 ms 150.816 158.112 ns 189.216 164.448 ns 227.386 176.184 ns 266.227 183.6 ns 303.283 191.304 ns 348.192 207.216 ns 380.256 233.856 ns 418.368 250.776 ns 447.168 262.296 ns 464.448 271.584 ns 471.302 273.384 ns nsend D9 111.725 109.152 ms 150.912 110.736 ns 190.061 117.648 ns 227.578 122.688 ns 266.669 129.816 ns 305.03 133.56 ns 350.784 143.496 ns 385.267 148.896 ns 424.397 156.24 ns 457.152 164.736 ns 499.181 178.344 ns 533.587 193.392 ns 571.949 221.976 ns 576.979 230.76 ns 589.555 228.024 ns nsend D9 initclip (|) 0 72 72 TXC 10 /Helvetica-Bold SetTxt (0) 0 72 60 TXC 10 /Helvetica SetTxt (|) 0 110.4 72 TXC 10 /Helvetica-Bold SetTxt (20) 0 110.4 60 TXC 10 /Helvetica SetTxt (|) 0 148.8 72 TXC 10 /Helvetica-Bold SetTxt (40) 0 148.8 60 TXC 10 /Helvetica SetTxt (|) 0 187.2 72 TXC 10 /Helvetica-Bold SetTxt (60) 0 187.2 60 TXC 10 /Helvetica SetTxt (|) 0 225.6 72 TXC 10 /Helvetica-Bold SetTxt (80) 0 225.6 60 TXC 10 /Helvetica SetTxt (|) 0 264 72 TXC 10 /Helvetica-Bold SetTxt (100) 0 264 60 TXC 10 /Helvetica SetTxt (|) 0 302.4 72 TXC 10 /Helvetica-Bold SetTxt (120) 0 302.4 60 TXC 10 /Helvetica SetTxt (|) 0 340.8 72 TXC 10 /Helvetica-Bold SetTxt (140) 0 340.8 60 TXC 10 /Helvetica SetTxt (|) 0 379.2 72 TXC 10 /Helvetica-Bold SetTxt (160) 0 379.2 60 TXC 10 /Helvetica SetTxt (|) 0 417.6 72 TXC 10 /Helvetica-Bold SetTxt (180) 0 417.6 60 TXC 10 /Helvetica SetTxt (|) 0 456 72 TXC 10 /Helvetica-Bold SetTxt (200) 0 456 60 TXC 10 /Helvetica SetTxt (|) 0 494.4 72 TXC 10 /Helvetica-Bold SetTxt (220) 0 494.4 60 TXC 10 /Helvetica SetTxt (|) 0 532.8 72 TXC 10 /Helvetica-Bold SetTxt (240) 0 532.8 60 TXC 10 /Helvetica SetTxt (|) 0 571.2 72 TXC 10 /Helvetica-Bold SetTxt (260) 0 571.2 60 TXC 10 /Helvetica SetTxt (|) 0 609.6 72 TXC 10 /Helvetica-Bold SetTxt (280) 0 609.6 60 TXC 10 /Helvetica SetTxt (|) 0 648 72 TXC 10 /Helvetica-Bold SetTxt (300) 0 648 60 TXC 10 /Helvetica SetTxt (|) -90 72 72 TXC 10 /Helvetica-Bold SetTxt (0) 0 67 69 TXR 10 /Helvetica SetTxt (|) -90 72 108 TXC 10 /Helvetica-Bold SetTxt (5) 0 67 105 TXR 10 /Helvetica SetTxt (|) -90 72 144 TXC 10 /Helvetica-Bold SetTxt (10) 0 67 141 TXR 10 /Helvetica SetTxt (|) -90 72 180 TXC 10 /Helvetica-Bold SetTxt (15) 0 67 177 TXR 10 /Helvetica SetTxt (|) -90 72 216 TXC 10 /Helvetica-Bold SetTxt (20) 0 67 213 TXR 10 /Helvetica SetTxt (|) -90 72 252 TXC 10 /Helvetica-Bold SetTxt (25) 0 67 249 TXR 10 /Helvetica SetTxt (|) -90 72 288 TXC 10 /Helvetica-Bold SetTxt (30) 0 67 285 TXR 10 /Helvetica SetTxt (|) -90 72 324 TXC 10 /Helvetica-Bold SetTxt (35) 0 67 321 TXR 10 /Helvetica SetTxt (|) -90 72 360 TXC 10 /Helvetica-Bold SetTxt (40) 0 67 357 TXR 10 /Helvetica SetTxt (|) -90 72 396 TXC 10 /Helvetica-Bold SetTxt (45) 0 67 393 TXR 10 /Helvetica SetTxt (|) -90 72 432 TXC 10 /Helvetica-Bold SetTxt (50) 0 67 429 TXR 10 /Helvetica SetTxt (|) -90 72 468 TXC 10 /Helvetica-Bold SetTxt (55) 0 67 465 TXR 10 /Helvetica SetTxt (|) -90 72 504 TXC 10 /Helvetica-Bold SetTxt (60) 0 67 501 TXR 10 /Helvetica SetTxt ( DECsystem 5100 and DECsystem 5500 One and Two Disk Nhfsstone Profile) 0 360 28 TXC [] 1.000000 SL 2 setlinecap 72 72 648 72 L9 0 setlinecap 72 72 72 504 L9 ( NFS Operations/Second) 0 648 47 TXR ( Response Time (Msec)) 90 41.5 504 TXR (CONFIGURATION) 0 81.6 496.8 TXL ( ) 0 81.6 486.3 TXL (Nhfsstone:) 0 81.6 475.8 TXL ( V1.20, default mix, 6 procs ) 0 81.6 465.3 TXL (Client:) 0 81.6 454.8 TXL ( DECsystem 5500, ULTRIX V4.1, 16 MB,) 0 81.6 444.3 TXL ( 10% bufcache, 4 biods) 0 81.6 433.8 TXL (Servers:) 0 81.6 423.3 TXL ( DECsystem 5100, ULTRIX V4.1, 32 MB,) 0 81.6 412.8 TXL ( 25% bufcache, RZ57 disks, 16 nfsds) 0 81.6 402.3 TXL ( DECsystem 5500, ULTRIX V4.1, 32MB,) 0 81.6 391.8 TXL ( 25% bufcache, RZ57 disks, 16 nfsds) 0 81.6 381.3 TXL () 0 81.6 370.8 TXL 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 72.000000 72.000000 648.000000 72.000000 648.000000 504.000000 72.000000 504.000000 newpath moveto lineto lineto lineto closepath clip 6 SetSym <02> 112.09 202.104 SY <02> 151.661 202.104 SY <02> 190.618 231.768 SY <02> 227.981 282.744 SY <02> 266.592 346.032 SY <02> 296.429 435.024 SY <02> 303.744 471.168 SY <02> 313.44 458.136 SY <02> 307.219 475.704 SY <03> 112.454 122.544 SY <03> 150.355 142.056 SY <03> 190.003 142.272 SY <03> 228.691 159.12 SY <03> 266.227 171.144 SY <03> 306.95 190.008 SY <03> 341.126 207.936 SY <03> 385.498 242.424 SY <03> 428.448 268.128 SY <03> 436.646 323.64 SY <03> 446.726 321.336 SY <0a> 111.898 158.472 SY <0a> 151.027 182.304 SY <0a> 189.216 192.672 SY <0a> 227.424 205.848 SY <0a> 265.094 233.856 SY <0a> 302.4 258.84 SY <0a> 347.808 294.48 SY <0a> 365.856 341.064 SY <0a> 368.544 343.584 SY <0a> 370.848 342.792 SY <0b> 111.974 125.424 SY <0b> 150.509 132.624 SY <0b> 190.003 142.128 SY <0b> 227.098 146.808 SY <0b> 266.765 162.432 SY <0b> 305.318 175.68 SY <0b> 348.134 199.44 SY <0b> 384.826 210.528 SY <0b> 418.368 238.176 SY <0b> 441.293 282.024 SY <0b> 446.016 287.136 SY <0b> 449.069 285.12 SY <04> 111.533 153.72 SY <04> 150.778 170.352 SY <04> 189.062 185.904 SY <04> 227.654 207.144 SY <04> 266.035 227.448 SY <04> 301.44 282.096 SY <04> 325.056 346.68 SY <04> 322.118 388.584 SY <04> 321.485 394.056 SY <05> 111.322 112.392 SY <05> 151.027 115.632 SY <05> 189.542 116.064 SY <05> 227.558 126.216 SY <05> 267.629 129.816 SY <05> 305.146 135.36 SY <05> 350.688 142.704 SY <05> 387.725 152.136 SY <05> 420.845 168.696 SY <05> 456.864 178.272 SY <05> 500.755 189.72 SY <05> 534.067 203.472 SY <05> 560.794 233.784 SY <05> 573.581 230.04 SY <05> 566.899 235.152 SY <06> 111.302 156.672 SY <06> 150.816 158.112 SY <06> 189.216 164.448 SY <06> 227.386 176.184 SY <06> 266.227 183.6 SY <06> 303.283 191.304 SY <06> 348.192 207.216 SY <06> 380.256 233.856 SY <06> 418.368 250.776 SY <06> 447.168 262.296 SY <06> 464.448 271.584 SY <06> 471.302 273.384 SY <07> 111.725 109.152 SY <07> 150.912 110.736 SY <07> 190.061 117.648 SY <07> 227.578 122.688 SY <07> 266.669 129.816 SY <07> 305.03 133.56 SY <07> 350.784 143.496 SY <07> 385.267 148.896 SY <07> 424.397 156.24 SY <07> 457.152 164.736 SY <07> 499.181 178.344 SY <07> 533.587 193.392 SY <07> 571.949 221.976 SY <07> 576.979 230.76 SY <07> 589.555 228.024 SY initclip showpage