FileBench Users,
   I have modified FileBench so that it now features a couple of "run to 
completion" modes of operation. This is useful for benchmarks that do a 
specified amount of work and then quit rather than running for a 
specified time. Currently with the finishonbytes and finishoncount 
flowops a workload will cleanly shut down when the finish condition is 
met, or when the time expires if that happens first. But the workloads: 
bringover.f copyfiles.f createfiles.f and deletefiles.f will stop when 
they have processed all the files in their filesets. If the number of 
entries in the filesets is too small, or the runtime is too long, they 
will generate errors when the usable files are exhausted, which is 
confusing.

With the FileBench code covered by this webrev you can specify:
       set mode quit timeout
to quit when the timer expires just as now (the default setting).

or:
       set mode quit firstdone
to quit when the first thread runs out of files to use.

or:
       set mode quit alldone
to quit when the last thread runs out of files to use.

These modes can be set in the workload file, or entered interactively, 
however the intention is to have them set in the workload files of those 
workloads for which firstdone or alldone behavior is appropriate. When 
these modes are in effect, FileBench will gracefully exit just as though 
it had run out of runtime. If timeout mode is in effect, it will still 
report running out of files as an error, but do so less cryptically than 
it does now.

The webrev can be found at:
http://cr.opensolaris.org/~dreww/run2completion/

Drew

P.S. three examples:

First, the alldone mode.

FileBench Version 1.1.1
filebench> load copyfiles
104594: 3.533: CopyFiles Version 2.2 personality successfully loaded
104594: 3.535: Usage: set $dir=<dir>
104594: 3.535:        set $filesize=<size>   defaults to 16384
104594: 3.535:        set $nfiles=<value>    defaults to 5000
104594: 3.535:        set $iosize=<size>     defaults to 1048576
104594: 3.536:        set $dirwidth=<value>  defaults to 20
104594: 3.536:        set $nthreads=<value>  defaults to 16
104594: 3.536:
104594: 3.536:        run 0
filebench> run 0
104594: 5.372: Creating/pre-allocating files and filesets
104594: 5.581: Fileset destfiles: 5000 files, avg dir = 20.0, avg depth 
= 2.8, mbytes=78
104594: 6.079: Removed any existing fileset destfiles in 1 seconds
104594: 6.274: Creating fileset destfiles...
104594: 6.274: Preallocated 0 of 5000 of fileset destfiles in 1 seconds
104594: 6.644: Fileset bigfileset: 5000 files, avg dir = 20.0, avg depth 
= 2.8, mbytes=78
104594: 7.107: Removed any existing fileset bigfileset in 1 seconds
104594: 7.284: Creating fileset bigfileset...
104594: 87.671: Preallocated 5000 of 5000 of fileset bigfileset in 81 
seconds
104594: 87.671: waiting for fileset pre-allocation to finish
104594: 87.672: Starting 1 filereader instances
104599: 88.685: Starting 16 filereaderthread threads
104594: 91.694: Running...
104594: 100.764: Run took 9 seconds...
104594: 100.768: Per-Operation Breakdown
closefile2                551ops/s   0.0mb/s      0.1ms/op       
25us/op-cpu
closefile1                551ops/s   0.0mb/s      0.0ms/op       
29us/op-cpu
writefile2                551ops/s   8.6mb/s      0.6ms/op      
347us/op-cpu
createfile2               551ops/s   0.0mb/s      1.4ms/op      
639us/op-cpu
readfile1                 551ops/s   8.6mb/s      0.4ms/op      
110us/op-cpu
openfile1                 551ops/s   0.0mb/s      0.7ms/op      
219us/op-cpu

104594: 100.769:
IO Summary:      30000 ops 3308.1 ops/s, (551/551 r/w)  17.2mb/s,   
1613us cpu/op,   1.6ms latency
104594: 100.769: Shutting down processes
filebench> quit

Then, what happens with firstdone mode. Note that the total number of 
ops is slightly less because a few threads are prevented from finishing 
their last cycle through their flowop list.

FileBench Version 1.1.1
filebench> load copyfiles
104600: 2.581: CopyFiles Version 2.2 personality successfully loaded
104600: 2.582: Usage: set $dir=<dir>
104600: 2.583:        set $filesize=<size>   defaults to 16384
104600: 2.583:        set $nfiles=<value>    defaults to 5000
104600: 2.583:        set $iosize=<size>     defaults to 1048576
104600: 2.583:        set $dirwidth=<value>  defaults to 20
104600: 2.583:        set $nthreads=<value>  defaults to 16
104600: 2.584:
104600: 2.584:        run 0
filebench> set mode quitfirstdone
filebench> run 0
104600: 15.614: Creating/pre-allocating files and filesets
104600: 15.823: Fileset destfiles: 5000 files, avg dir = 20.0, avg depth 
= 2.8, mbytes=78
104600: 18.178: Removed any existing fileset destfiles in 3 seconds
104600: 18.371: Creating fileset destfiles...
104600: 18.371: Preallocated 0 of 5000 of fileset destfiles in 1 seconds
104600: 18.723: Fileset bigfileset: 5000 files, avg dir = 20.0, avg 
depth = 2.8, mbytes=78
104600: 21.177: Removed any existing fileset bigfileset in 3 seconds
104600: 21.354: Creating fileset bigfileset...
104600: 109.906: Preallocated 5000 of 5000 of fileset bigfileset in 89 
seconds
104600: 109.906: waiting for fileset pre-allocation to finish
104600: 109.908: Starting 1 filereader instances
104605: 110.913: Starting 16 filereaderthread threads
104600: 113.922: Running...
104600: 121.972: Run took 8 seconds...
104600: 121.976: Per-Operation Breakdown
closefile2                621ops/s   0.0mb/s      0.0ms/op       
26us/op-cpu
closefile1                621ops/s   0.0mb/s      0.0ms/op       
30us/op-cpu
writefile2                621ops/s   9.7mb/s      1.1ms/op      
355us/op-cpu
createfile2               621ops/s   0.0mb/s      2.1ms/op      
659us/op-cpu
readfile1                 620ops/s   9.7mb/s      0.4ms/op      
113us/op-cpu
openfile1                 621ops/s   0.0mb/s      1.0ms/op      
227us/op-cpu

104600: 121.977:
IO Summary:      29990 ops 3726.1 ops/s, (620/621 r/w)  19.4mb/s,   
1425us cpu/op,   2.3ms latency
104600: 121.977: Shutting down processes
filebench> quit

And finally, what happens if you use timeout mode and stop too soon:

FileBench Version 1.1.1
filebench> load copyfiles
104606: 3.277: CopyFiles Version 2.2 personality successfully loaded
104606: 3.278: Usage: set $dir=<dir>
104606: 3.279:        set $filesize=<size>   defaults to 16384
104606: 3.279:        set $nfiles=<value>    defaults to 5000
104606: 3.279:        set $iosize=<size>     defaults to 1048576
104606: 3.279:        set $dirwidth=<value>  defaults to 20
104606: 3.279:        set $nthreads=<value>  defaults to 16
104606: 3.280:
104606: 3.280:        run 0
filebench> set mode quittimeout
filebench> run 60
104606: 15.982: Creating/pre-allocating files and filesets
104606: 16.191: Fileset destfiles: 5000 files, avg dir = 20.0, avg depth 
= 2.8, mbytes=78
104606: 18.799: Removed any existing fileset destfiles in 3 seconds
104606: 18.991: Creating fileset destfiles...
104606: 18.991: Preallocated 0 of 5000 of fileset destfiles in 1 seconds
104606: 19.341: Fileset bigfileset: 5000 files, avg dir = 20.0, avg 
depth = 2.8, mbytes=78
104606: 23.356: Removed any existing fileset bigfileset in 5 seconds
104606: 23.538: Creating fileset bigfileset...
104606: 106.955: Preallocated 5000 of 5000 of fileset bigfileset in 84 
seconds
104606: 106.956: waiting for fileset pre-allocation to finish
104606: 106.957: Starting 1 filereader instances
104611: 107.965: Starting 16 filereaderthread threads
104606: 110.975: Running...
104611: 118.296: Run stopped early:
               flowop createfile2-1 could not obtain a file. Please
               reduce runtime, increase fileset entries, or switch modes
104606: 119.035: Run took 8 seconds...
104606: 119.039: Per-Operation Breakdown
closefile2                620ops/s   0.0mb/s      0.0ms/op       
26us/op-cpu
closefile1                620ops/s   0.0mb/s      0.0ms/op       
30us/op-cpu
writefile2                620ops/s   9.7mb/s      1.5ms/op      
355us/op-cpu
createfile2               620ops/s   0.0mb/s      2.6ms/op      
663us/op-cpu
readfile1                 619ops/s   9.7mb/s      0.6ms/op      
113us/op-cpu
openfile1                 620ops/s   0.0mb/s      0.7ms/op      
226us/op-cpu

104606: 119.039:
IO Summary:      29990 ops 3721.5 ops/s, (619/620 r/w)  19.4mb/s,   
1463us cpu/op,   2.7ms latency
104606: 119.039: Shutting down processes
filebench> quit

_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

Reply via email to