1 9801 Andrew # 2 9801 Andrew # CDDL HEADER START 3 9801 Andrew # 4 9801 Andrew # The contents of this file are subject to the terms of the 5 9801 Andrew # Common Development and Distribution License (the "License"). 6 9801 Andrew # You may not use this file except in compliance with the License. 7 9801 Andrew # 8 9801 Andrew # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 9801 Andrew # or http://www.opensolaris.org/os/licensing. 10 9801 Andrew # See the License for the specific language governing permissions 11 9801 Andrew # and limitations under the License. 12 9801 Andrew # 13 9801 Andrew # When distributing Covered Code, include this CDDL HEADER in each 14 9801 Andrew # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 9801 Andrew # If applicable, add the following below this CDDL HEADER, with the 16 9801 Andrew # fields enclosed by brackets "[]" replaced with your own identifying 17 9801 Andrew # information: Portions Copyright [yyyy] [name of copyright owner] 18 9801 Andrew # 19 9801 Andrew # CDDL HEADER END 20 9801 Andrew # 21 9801 Andrew # Copyright 2009 Sun Microsystems, Inc. All rights reserved. 22 9801 Andrew # Use is subject to license terms. 23 9801 Andrew # 24 9801 Andrew # $dir - directory for datafiles 25 9801 Andrew # $eventrate - event generator rate (0 == free run) 26 9801 Andrew # $nfiles - number of data files 27 9801 Andrew # $nthreads - number of worker threads 28 9801 Andrew 29 9801 Andrew set $dir=/tmp 30 9801 Andrew set $cached=false 31 9801 Andrew set $eventrate=10 32 9801 Andrew set $meandirwidth=20 33 9801 Andrew set $nthreads=1 34 9801 Andrew set $nfiles=10000 35 9801 Andrew set $sync=false 36 9801 Andrew set $totalfiles=$nfiles * $eventrate 37 9801 Andrew 38 9801 Andrew eventgen rate=$eventrate 39 9801 Andrew 40 9801 Andrew define randvar name=$wrtiosize, type=tabular, min=1k, round=1k, randtable = 41 9801 Andrew {{ 0, 1k, 7k}, 42 9801 Andrew {50, 9k, 15k}, 43 9801 Andrew {14, 17k, 23k}, 44 9801 Andrew {14, 33k, 39k}, 45 9801 Andrew {12, 65k, 71k}, 46 9801 Andrew {10, 129k, 135k} 47 9801 Andrew } 48 9801 Andrew 49 9801 Andrew define randvar name=$rdiosize, type=tabular, min=8k, round=1k, randtable = 50 9801 Andrew {{85, 8k, 8k}, 51 9801 Andrew { 8, 17k, 23k}, 52 9801 Andrew { 4, 33k, 39k}, 53 9801 Andrew { 2, 65k, 71k}, 54 9801 Andrew { 1, 129k, 135k} 55 9801 Andrew } 56 9801 Andrew 57 9801 Andrew define randvar name=$filesize, type=tabular, min=1k, round=1k, randtable = 58 9801 Andrew {{33, 1k, 1k}, 59 9801 Andrew {21, 1k, 3k}, 60 9801 Andrew {13, 3k, 5k}, 61 9801 Andrew {10, 5k, 11k}, 62 9801 Andrew {08, 11k, 21k}, 63 9801 Andrew {05, 21k, 43k}, 64 9801 Andrew {04, 43k, 85k}, 65 9801 Andrew {03, 85k, 171k}, 66 9801 Andrew {02, 171k, 341k}, 67 9801 Andrew {01, 341k, 1707k} 68 9801 Andrew } 69 9801 Andrew 70 9801 Andrew define randvar name=$fileidx, type=gamma, min=0, gamma=100 71 9801 Andrew 72 9801 Andrew define fileset name=bigfileset,path=$dir,size=$filesize,entries=$totalfiles,dirwidth=$meandirwidth,prealloc=60,cached=$cached 73 9801 Andrew 74 9801 Andrew define flowop name=rmw, $filesetrmw 75 9801 Andrew { 76 9801 Andrew flowop openfile name=openfile1,filesetname=$filesetrmw,indexed=$fileidx,fd=1 77 9801 Andrew flowop readwholefile name=readfile1,iosize=$rdiosize,fd=1 78 9801 Andrew flowop createfile name=newfile2,filesetname=$filesetrmw,indexed=$fileidx,fd=2 79 9801 Andrew flowop writewholefile name=writefile2,fd=2,iosize=$wrtiosize,srcfd=1 80 9801 Andrew flowop closefile name=closefile1,fd=1 81 9801 Andrew flowop closefile name=closefile2,fd=2 82 9801 Andrew flowop deletefile name=deletefile1,fd=1 83 9801 Andrew } 84 9801 Andrew 85 9801 Andrew define flowop name=launch, $filesetlch 86 9801 Andrew { 87 9801 Andrew flowop openfile name=openfile3,filesetname=$filesetlch,indexed=$fileidx,fd=3 88 9801 Andrew flowop readwholefile name=readfile3,iosize=$rdiosize,fd=3 89 9801 Andrew flowop openfile name=openfile4,filesetname=$filesetlch,indexed=$fileidx,fd=4 90 9801 Andrew flowop readwholefile name=readfile4,iosize=$rdiosize,fd=4 91 9801 Andrew flowop closefile name=closefile3,fd=3 92 9801 Andrew flowop openfile name=openfile5,filesetname=$filesetlch,indexed=$fileidx,fd=5 93 9801 Andrew flowop readwholefile name=readfile5,iosize=$rdiosize,fd=5 94 9801 Andrew flowop closefile name=closefile4,fd=4 95 9801 Andrew flowop closefile name=closefile5,fd=5 96 9801 Andrew } 97 9801 Andrew 98 9801 Andrew define flowop name=appnd, $filesetapd 99 9801 Andrew { 100 9801 Andrew flowop openfile name=openfile6,filesetname=$filesetapd,indexed=$fileidx,fd=6 101 9801 Andrew flowop appendfilerand name=appendfilerand6,iosize=$wrtiosize,fd=6 102 9801 Andrew flowop closefile name=closefile6,fd=6 103 9801 Andrew } 104 9801 Andrew 105 9801 Andrew define process name=netclient,instances=1 106 9801 Andrew { 107 9801 Andrew thread name=fileuser,memsize=10m,instances=$nthreads 108 9801 Andrew { 109 9801 Andrew flowop launch name=launch1, iters=1, $filesetlch=bigfileset 110 9801 Andrew flowop rmw name=rmw1, iters=6, $filesetrmw=bigfileset 111 9801 Andrew flowop appnd name=appnd1, iters=3, $filesetapd=bigfileset 112 9801 Andrew flowop statfile name=statfile1,filesetname=bigfileset,indexed=$fileidx 113 9801 Andrew flowop eventlimit name=ratecontrol 114 9801 Andrew } 115 9801 Andrew } 116 9801 Andrew 117 9801 Andrew echo "NetworkFileServer Version 1.0 personality successfully loaded" 118 9801 Andrew usage "Usage: set \$dir=<dir> defaults to $dir" 119 9801 Andrew usage " set \$cached=<bool> defaults to $cached" 120 9801 Andrew usage " set \$eventrate=<value> defaults to $eventrate" 121 9801 Andrew usage " set \$wrtiosize.type=<type> defaults to $wrtiosize.type" 122 9801 Andrew usage " set \$wrtiosize.randsrc=<src> defaults to $wrtiosize.randsrc" 123 9801 Andrew usage " set \$rdiosize.type=<type> defaults to $rdiosize.type" 124 9801 Andrew usage " set \$rdiosize.randsrc=<src> defaults to $rdiosize.randsrc" 125 9801 Andrew usage " set \$filesize.type=<type> defaults to $filesize.type" 126 9801 Andrew usage " set \$filesize.randsrc=<src> defaults to $filesize.randsrc" 127 9801 Andrew usage " set \$nfiles=<value> defaults to $nfiles" 128 9801 Andrew usage " set \$nthreads=<value> defaults to $nthreads" 129 9801 Andrew usage " set \$sync=<bool> defaults to $sync" 130 9801 Andrew usage " " 131 9801 Andrew usage " run runtime (e.g. run 60)" 132