.Dd "February 21, 2008" .Dt TORQUE 1 .Sh NAME .Nm torque ./" ./" .Nd Launches one or more child processes, each of which performs a series of bandwidth intensive operations, and after completion .Nm reports the bandwidth actually achieved by each operation during a period when all operation streams were executing simultaneously. ./" ./" .Sh SYNOPSIS .Pp .Nm .Op Global Parameters .Op [ Ar Local Parameters ] Ar Action1 .Op [ Ar Local Parameters ] Ar Action2 .Op [ Ar Local Parameters ] Ar Action3 .Op ... .br .Pp Global Parameters (affect all actions performed): .br .Op Fl aliasFile Ar f .Op Fl bo .Op Fl c Ar configuration file .Op Fl example .Op Fl f Ar test file .Op Fl fast .Op Fl freeSharedMemory .Op Fl g .Op Fl h .Op Fl ha .Op Fl help .Op Fl hg .Op Fl hl .Op Fl nh .Op Fl printAlias .Op Fl quit .Op Fl seed Ar n .Op Fl slow .Op Fl smkey Ar key .Op Fl sp ./".Op Fl t .Op Fl v .Op Fl version .Op Fl vl Ar n ./" .Pp Local Parameters (only affect immediately following action): .br .Op Fl affinityNumber Ar n .Op Fl affinityNumberDiff Ar n .Op Fl affinityParent Ar n .Op Fl B Ar bytes .Op Fl bp Ar p .Op Fl bpkey Ar p .Op Fl bp1 Ar p .Op Fl bp2 Ar p .Op Fl bt Ar p .Op Fl btr .Op Fl cfiles .Op Fl checkpoint .Op Fl dir Ar path .Op Fl display Ar display .Op Fl execChild .Op Fl extraReadB Ar n .Op Fl fbc .Op Fl GB Ar GBytes .Op Fl i Ar iterations .Op Fl IH Ar pixels .Op Fl IW Ar pixels .Op Fl KB Ar KBytes .Op Fl linesize Ar bytes .Op Fl m .Op Fl MB Ar MBytes .Op Fl mfileKB Ar n .Op Fl mfileXfer Ar transfers .Op Fl n Ar transfers .Op Fl noResetParentAffinity .Op Fl noVideoInitLoops .Op Fl offsetB Ar n .Op Fl p Ar process count .Op Fl percR Ar p .Op Fl s Ar offset .Op Fl sa Ar interval .Op Fl sample Ar interval .Op Fl sleepEnd Ar n .Op Fl stride Ar bytes .Op Fl T Ar usec .Op Fl touch .Op Fl touch4K .Op Fl vectorB Ar n .Op Fl wire ./" .Pp Actions (Specific action to perform): .br .Op Fl aio Ar n .Op Fl bcopy .Op Fl bzero .Op Fl child Ar n .Op Fl files Ar n .Op Fl load .Op Fl ls .Op Fl memStreams Ar label lookahead size bw startTime runTime mfile .Op Fl r .Op Fl rand .Op Fl rmw .Op Fl rw .Op Fl Sadd .Op Fl scan Ar fn .Op Fl scanfile Ar fn .Op Fl Scopy .Op Fl spinWait .Op Fl Sscale .Op Fl store .Op Fl streams Ar label lookahead size bw startTime runTime mfile .Op Fl Striad .Op Fl V Ar n .Op Fl w .Pp .Pp .Sh DESCRIPTION .Nm exercises a computer system in ways that mimic normal operation, while retaining as much simplicity as possible to aid in debugging. This is achieved by launching one or more child processes performing a series of operations (usually high bandwidth) and after completion reporting the bandwidth achieved by each operation during a period where all operation streams were executing simultaneously in their steady-state behavior. Note that .Nm only measures its own processes and does not measure bandwidth of any other executing process. .Pp This tool is currently in use for measuring system bandwidth, testing for interactions between different sub-systems, reproducing problems, power analysis, thermal analysis, signal sensitivity analysis, and more. .Nm contains a number of simple tests that are used together in any combination to exercise memory, video, and/or any component that supports a file system. Each separate test is run in its own process, and each action listed above specifies one or more tests to execute simultaneously. Common processor memory access patterns such as bcopy, bzero, load, and store are supported as well as different ways to access the file system. All test runtime parameters can be entered using a configuration file or as a command line parameter. .Pp When executed, .Nm reports the most common system characteristics such as processor speed and memory size. In addition many more configuration details are left behind in the file sysctl.current. During an execution, the first two things displayed are always the .Nm version number and the command line used for execution to make it as easy as possible to rerun the test and reproduce results at a later time. .Pp Since .Nm uses a large number of operational parameters, the command line parameters are broken into three groups: global test parameters, local test parameters, and actions/tests. All tests have default configurations and can be executed with just an action parameter. For example, " .Nm -V 7", the action parameter is "-V 7" (run video test 7) requesting execution of a video system memory read test. .Pp If a user wishes to change the tests for things like working-set size, transaction size, number of transactions, duration, etc.; all local test parameters on the command line before the action apply to the action. For the video read test a common sequence is .Pp .Nm -n 256 -i 1 -V 6 .Pp to make sure there are exactly 256 transactions (-n 256) issued once. The local parameters "-n 256 -i 1" only apply to the video read test and not to any other test. If the user wishes to execute a stream of memory reads while performing the video read test an example command line is: .Pp .Nm -p 1 -n 8 -i 20 -MB 4 -load -n 256 -V 6 .Pp In this case the load test has a working-set size of 4 x 8 = 32 MBytes (-n 8 -MB 4) that is executed twenty times (-i 20). The video test still uses the same parameters mentioned above but is executed ten times (default) since "-i 1" was not entered on the command line. Note that the "-i 20" does not apply to the video test in this example. .Pp Global parameters can be entered anywhere on the command line and control functions that affect all of the tests. For example .Pp .Nm -n 256 -i 1 -V 6 -nh .Pp removes the header output for each test, reducing the amount of text added to the screen after execution. .Pp .Pp . .Sh OPTIONS (Actions) .Bl -tag -width Fl ./" ./" .It Fl aio Ar n = number of outstanding transactions .br Performs reads and writes of transferSize (e.g. -B, -KB, -MB, -GB) using asynchronous I/O. The argument -percR sets the percentage of reads and writes. One process is launched that keeps the specified number of Asynchronous I/Os outstanding. Using Asynchronous I/O allows the file system greater flexibility in ordering transactions. All test transactions are sequential, unless vector stride (-vectorKB) is set to space the transactions linearly across a single file. Setting -percR 100 makes all outstanding transactions reads and -percR 0 makes all outstanding transactions writes. Any other settings causes each transaction to randomly be a read or write. Note that the system has a maximum number of outstanding AIOs for every process which for OS 10.4.3 is 16. .Nm makes sure a single process does not go over this limit, but it is up to the user to make sure multiple processes do not exceed the system's maximum outstanding AIO limit. ./" ./" .It Fl bcopy Perform bcopy test. Uses system bcopy function. ./" ./" .It Fl bzero Perform bzero test. Uses system bzero function ./" ./" .It Fl files Ar n = number of files to test .br .Pp Random access read/write test to large number of files. To adjust read vs. write and max file size set -percR and -mfileMB repectively. The files test represents the use of a web server. There are thousands of files being read and written in random increments as the web site is being accessed. The accesses are of fixed size (transfer size) but random file choice and file location. ./" ./" .It Fl load Perform loads as fast as possible. The default is one integer load for every sequential cache line. ./" ./" .It Fl ls Performs bursts of loads and stores as fast as possible. The burst size is the transactionSize specified. ./" ./" .It Fl memStreams Ar