Home | History | Annotate | Download | only in workloads
      1  7946  Andrew #
      2  7946  Andrew # CDDL HEADER START
      3  7946  Andrew #
      4  7946  Andrew # The contents of this file are subject to the terms of the
      5  7946  Andrew # Common Development and Distribution License (the "License").
      6  7946  Andrew # You may not use this file except in compliance with the License.
      7  7946  Andrew #
      8  7946  Andrew # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9  7946  Andrew # or http://www.opensolaris.org/os/licensing.
     10  7946  Andrew # See the License for the specific language governing permissions
     11  7946  Andrew # and limitations under the License.
     12  7946  Andrew #
     13  7946  Andrew # When distributing Covered Code, include this CDDL HEADER in each
     14  7946  Andrew # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15  7946  Andrew # If applicable, add the following below this CDDL HEADER, with the
     16  7946  Andrew # fields enclosed by brackets "[]" replaced with your own identifying
     17  7946  Andrew # information: Portions Copyright [yyyy] [name of copyright owner]
     18  7946  Andrew #
     19  7946  Andrew # CDDL HEADER END
     20  7946  Andrew #
     21  7946  Andrew #
     22  9801  Andrew # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     23  7946  Andrew # Use is subject to license terms.
     24  7946  Andrew #
     25  7946  Andrew # This workloads emulates a video server. It has two filesets, one of videos
     26  7946  Andrew # being actively served, and one of videos availabe but currently inactive
     27  7946  Andrew # (passive). However, one thread, vidwriter, is writing new videos to replace
     28  7946  Andrew # no longer viewed videos in the passive set. Meanwhile $nthreads threads are
     29  7946  Andrew # serving up videos from the activevids fileset. If the desired rate is R mb/s,
     30  7946  Andrew # and $nthreads is set to T, then set the $srvbwrate to R * T to get the
     31  7946  Andrew # desired rate per video stream. The video replacement rate of one video
     32  7946  Andrew # file per replacement interval, is set by $repintval which defaults to
     33  7946  Andrew # 10 seconds. Thus the write bandwidth will be set as $filesize/$repintval.
     34  7946  Andrew 
     35  7946  Andrew set $dir=/tmp
     36  9801  Andrew set $eventrate=96
     37  7946  Andrew set $filesize=10g
     38  7946  Andrew set $nthreads=48
     39  7946  Andrew set $numactivevids=32
     40  7946  Andrew set $numpassivevids=194
     41  8404  Andrew set $reuseit=false
     42  8404  Andrew set $readiosize=256k
     43  8404  Andrew set $writeiosize=1m
     44  8404  Andrew #
     45  8404  Andrew set $passvidsname=passivevids
     46  8404  Andrew set $actvidsname=activevids
     47  8404  Andrew #
     48  8404  Andrew set $repintval=10
     49  7946  Andrew 
     50  9801  Andrew eventgen rate=$eventrate
     51  7946  Andrew 
     52  8404  Andrew define fileset name=$actvidsname,path=$dir,size=$filesize,entries=$numactivevids,dirwidth=4,prealloc,paralloc,reuse=$reuseit
     53  8404  Andrew define fileset name=$passvidsname,path=$dir,size=$filesize,entries=$numpassivevids,dirwidth=20,prealloc=50,paralloc,reuse=$reuseit
     54  7946  Andrew 
     55  7946  Andrew define process name=vidwriter,instances=1
     56  7946  Andrew {
     57  7946  Andrew   thread name=vidwriter,memsize=10m,instances=1
     58  7946  Andrew   {
     59  8404  Andrew     flowop deletefile name=vidremover,filesetname=$passvidsname
     60  8404  Andrew     flowop createfile name=wrtopen,filesetname=$passvidsname,fd=1
     61  7946  Andrew     flowop writewholefile name=newvid,iosize=$writeiosize,fd=1,srcfd=1
     62  7946  Andrew     flowop closefile name=wrtclose, fd=1
     63  7946  Andrew     flowop delay name=replaceinterval, value=$repintval
     64  7946  Andrew   }
     65  7946  Andrew }
     66  7946  Andrew 
     67  7946  Andrew define process name=vidreaders,instances=1
     68  7946  Andrew {
     69  7946  Andrew   thread name=vidreaders,memsize=10m,instances=$nthreads
     70  7946  Andrew   {
     71  8404  Andrew     flowop read name=vidreader,filesetname=$actvidsname,iosize=$readiosize
     72  7946  Andrew     flowop bwlimit name=serverlimit, target=vidreader
     73  7946  Andrew   }
     74  7946  Andrew }
     75  7946  Andrew 
     76  9801  Andrew echo  "Video Server Version 1.1 personality successfully loaded"
     77  7946  Andrew usage "Usage: set \$dir=<dir>              defaults to $dir"
     78  9801  Andrew usage "       set \$eventrate=<value>      defaults to $eventrate"
     79  7946  Andrew usage "       set \$filesize=<size>        defaults to $filesize"
     80  7946  Andrew usage "       set \$nthreads=<value>       defaults to $nthreads"
     81  7946  Andrew usage "       set \$writeiosize=<value>    defaults to $writeiosize"
     82  7946  Andrew usage "       set \$readiosize=<value>     defaults to $readiosize"
     83  7946  Andrew usage "       set \$numactivevids=<value>  defaults to $numactivevids"
     84  7946  Andrew usage "       set \$numpassivevids=<value> defaults to $numpassivevids"
     85  7946  Andrew usage " "
     86  7946  Andrew usage "       run runtime (e.g. run 60)"
     87  7946  Andrew 
     88