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