AIM Independent Resource Benchmark - Suite IX
Version 1.1



Copyright (c) 1996 - 2001 Caldera International, Inc. All Rights Reserved.

"AIM Benchmark" and "Hot Iron Awards" are trademarks of Caldera International, Inc. (Caldera) in the USA and other countries. Caldera allows use of "AIM" and "AIM Benchmarks" when presenting performance results, but places restrictions on this to promote comparability of results and avoid confusion. Results presented using the terms "AIM" and "AIM Benchmark" must be obtained with an official version of the benchmark, as designated by Caldera, using one of the standard distributed workload. No right or license is granted hereunder to use the Caldera trademarks for modified benchmark versions or for other purposes without the prior written permission of Caldera.

"UNIX" is a trademark of the The Open Group.

The documentation, consisting of this user guide, is essentially the original documentation developed by AIM Technology, lightly edited to remove references to no longer relevant restrictions and services.



TABLE OF CONTENTS

CHAPTER I1
INTRODUCTION1
HOW THE BENCHMARK WORKS: A SYNOPSIS2
GLOSSARY3
KEY TO SYMBOLS4

CHAPTER 25
GETTING STARTED: INSTALLATION AND SET UP (S9setup)5
MINIMUM SYSTEM REQUIREMENTS5
INSTALLING THE BENCHMARK7
EDITING s9workfile8
FILESIZE: PARAMETER8
RUNNING THE S9setup SCRIPT9
MAKING THE BENCHMARK: make13

CHAPTER 314
STARTING THE BENCHMARK:
RUNNING THE singleuser PROGRAM14
STOPPING THE BENCHMARK17
PREMATURE TERMINATION OF THE BENCHMARK:
TROUBLESHOOTING18

CHAPTER 419
BENCHMARK RESULTS:
THE BENCHMARK'S OUTPUT FILES19
SPREADSHEET OUTPUT FILE: suite9.ss19
DETAILED OUTPUT: logfile.suite921
GENERATING REPORTS: rpt922
ADDING CUSTOM TESTS: C Language & Shell Scripts24
EVALUATING THE BENCHMARK RESULTS25

APPENDIXES26
THE BENCHMARK'S TESTS: s9workfile26
A SAMPLE s9workfile29
THE BENCHMARK FILES31



CHAPTER 1

INTRODUCTION

Although a computer system has many different components, many benchmarks test a system as a whole and provide only one performance measurement.

The AIM Independent Resource Benchmark exercises and times each component of a UNIX computer system, independently. The benchmark uses 58 subtests to generate absolute processing rates, in operations per second, for subsystems, I/O transfers, function calls, and UNIX system calls.

Test results can be used to compare different machines on a test-by-test basis or to measure the success or failure of system tuning and configuration changes on a single system. This benchmark yields specific results on a per-test basis.

AIM previously combined the results from this benchmark with the results of the Workstation Benchmark, Suite VI and Multiuser Benchmark, Suite VII, to generate a Certified Workstation Report and Certified Multiuser Report, respectively.

HOW THE BENCHMARK WORKS: A SYNOPSIS

The following paragraphs summarize the benchmark process.

The benchmark's workfile, s9workfile, lists each of the program's 58 tests. The main purpose of s9workfile is to turn tests off. The s9workfile provided with this distribution was used for certified workstation/multiuser reports. An unmodified version of this file will cause the benchmark to run all 58 tests. If you are running the benchmark for internal testing only, you may alter s9workfile to include only the tests that are relevant to your test environment.

After you review s9workfile (and edit it, if desired), run the setup script (S9setup). Accept the script's defaults for variables, for example, compiler options, or enter new values. When you have responded to all of the script's queries, enter make to complete the benchmark setup (make generates executables).

Run the singleuser program and answer prompts to start the benchmark. The benchmark

To review the test results, examine suite9.ss, and use rpt9 to generate a report. If desired, rerun S9setup using different compiler options or after reconfiguring the system under test.

GLOSSARY

benchmark - A program that tests how computer systems perform.

Makefile - Contains instructions and rules to the compiler and linker regarding how to build the benchmark executable program from the source files.

operation - One subset of a test. For example, in the add_int test, an operation would be one integer addition.

PostScript - A page-description language that uses text to describe graphical images.

rpt9 - Executable program that generates a PostScript report from the benchmark results (suite9.ss).

S9setup script - Bourne shell script program that guides users through the steps required to gather the target Open system information needed to set up the test environment and build the benchmark.

shell script - File containing a sequence of UNIX commands to be executed when the name of the file is typed on the command line.

singleuser - Executable program for the AIM Independent Resource Benchmark - Suite IX.

system resources - System resources include: ram, disk storage, I/O subsystems, and CPUs.

test - One functional analysis of multiple operations. Add_int may have 106 inter operations.

test environment - The functions, applications, and system resources that the benchmark exercises on a system to test performance.

KEY TO SYMBOLS

SYMBOLDEFINITION

$system prompt

#system prompt when logged on as root

<>required parameters

[]default value or range of legal values

boldfacescript names or program names

italicssystem prompts, file names, or directory names

boldface, courieruser input

rootroot or superuser



CHAPTER 2

GETTING STARTED: INSTALLATION AND SET UP (S9setup)

The following steps summarize the installation and set up procedure for the benchmark:

  1. Unpack the compressed tar archive and cd s9110.
  2. Edit s9workfile, if desired.
  3. Run S9setup as root and supply configuration information. At the end of the run the script asks you to enter make. This command generates executables.

MINIMUM SYSTEM REQUIREMENTS

This benchmark will compile and run on most POSIX-compliant UNIX systems. All source code is in ANSI C. To assure its portability, the program uses standard system calls. Each test system must meet the following minimum requirements:

INSTALLING THE BENCHMARK

With this distribution, Caldera is making available, under the GPL, formerly proprietary technology developed by AIM Technology, Inc. Please refer to the beginning of this document for additional restrictions applying when presenting results.

Starting with the open source release of this benchmark, AIM Suite IX is provided only as a compressed tar archive. To unpack it

$ zcat s9110.tar.Z | tar xf -
$ cd s9110

On GNU based systems, use gzip -cd instead of zcat

EDITING s9workfile

The benchmark includes 58 tests. Tests are listed in s9workfile, a file that the benchmark reads each time the benchmark is run. Each test repeats an operation, system call, or I/O transfer for a specified time (user specifies test run time at time of benchmark set up).

NOTE: Before you alter s9workfile, use the copy command and save a copy of the original for future reference.

You may want to remove a test from s9workfile to exclude it from future benchmark runs. To remove a test from the benchmark, enter a pound sign, #, at the beginning of the line. Whenever you alter s9workfile, enter comment lines to document your changes. Comment lines begin with a pound sign (#).

FILESIZE: PARAMETER

The benchmark creates temporary files for disk tests. The size of these temporary files is controlled by the FILESIZE: parameter in s9workfile. To change the value for this parameter, edit the entry in s9workfile. The format for this entry is as follows:

FILESIZE: <temporary file size>

There must be a space between the FILESIZE: keyword and the size value. You must specify the size in integers and in kbytes or megabytes (k or K and m or M), for example:

FILESIZE: 5K

If the FILESIZE is 2K, the benchmark will create 2K temporary files. If the FILESIZE is 5K, the benchmark will create 5K temporary files.

During the benchmark run, there may be one or two temporary files at any given time. One temporary file exists for the duration of the benchmark run, and other temporary files will appear and disappear as the benchmark progresses.

RUNNING THE S9setup SCRIPT

The S9setup script used to set up the benchmark requires the following information:

VariableDescription
Compiler Name of compiler executable. Set $PATH to find this executable and all associated files.
Compiler options Enter the compiler options used to optimize code generation. Additionally, because the benchmark is written using ANSI and POSIX compliant code, you must invoke the appropriate compiler options (for example, -ansi -xpg3plus) for a given compiler.
Linker options S9setup must link the networking libraries for the interprocess communication tests. On some machines the user must specify -lsocket and possibly -Insl. If a platform requires links to special libraries (for example, -lmalloc) or more specific linking options, use this option to name the libraries.
Bourne Shell Identify location of Bourne shell executable (usually /bin/sh).

To start the script, run S9setup as root. Enter S9setup at the system prompt and press RETURN:

# S9setup

The following is a transcript of an actual S9setup run:

-BEGINNING OF TRANSCRIPT-


AIM Independent Resource Benchmark - Suite IX S9setup
Copyright (c) 1996 - 2001 Caldera International, Inc.
All rights reserved

------------
INTRODUCTION
-----------

This script guides you through the steps needed to tailor the AIM
Independent Resource Benchmark - Suite IX to your environment.
It will ask you a series of questions to identify the components of
the System Under Test (SUT). As each question is displayed on the
screen, you can accept the default value that is enclosed in brackets
(e.g. [default value] ), or enter the correct value. At any point
during the execution of this script, you may type Q to terminate it.

CAUTION: This script will NOT automatically set up the correct environment
to run the benchmark. It is important that you provide the correct
information for the computer and operating system that are being benchmarked.

Verify and edit the files Makefile as required before running singleuser.

Press RETURN to continue, press Q to exit

You will be asked to provide the following information about the system
to be tested:

1) Your compiler name
2) The compiler options to be used
3) The linker options to be used
4) The location of the Bourne shell executable

If you do not know or are unsure about any of the items mentioned above,
press Q to terminate this installation script. Check with your System 
Administrator or consult the SUT manuals for the correct information.

Press RETURN to continue, press Q to exit ...

--------
COMPILER
--------

Enter the name ofthe C compiler you wish to use for this run.

  Please use BOTH upper and lower case, exactly as required by your 
  compiler.

inter compiler name [cc] :gcc

----------------
COMPILER OPTIONS
---------------

Enter any compiler options that you want to use for gcc. Some examples
of valid entries are listed below:

	"-O" to optimize code produced by "pcc" based compilers
	"-OP" to do peephole optimization with the Pyramid OSx compiler
	"-0 -f68881" for optimization and floating point for Sun-3's

Please note that the benchmark is written in Ansi C and is POSIX
compliant. Some compilers have special flags for these options.

  Please use BOTH upper and lower case required by your
  compiler.

 You may type Q to exit and look up the correct answer.

Enter compiler options [-O] :-O -m486 -ffloat-store

Are there any linker options that you should identify for the benchmark?
For information on the linker, refer to the Programmer's Reference Manual
for your system. You might identify a non-standard location of a library
or system specific libraries that are needed to build the benchmark.
For example, enter "-Wl,L/usr/local/lib" to search for libraries in
a "/usr/local/lib" directory.

Note that the benchmark requires that networking routines such as `socket()'
be available. On some machines, an additional library such as -lsocket
will need to be specified. Check with your System Administrator or
consult your System manuals.

  Again, use BOTH upper and lower case, exactly as required by your
  compiler.

You may type Q to exit and look up the correct answer.

Enter linker options [] :

------------
BOURNE SHELL
------------

You must specify the location of the Bourne shell executable on your
system. `sh' is usually found in /bin. However, this may vary from
system to system. Check with your System Administrator or consult
your System manuals.
Enter the path to `sh' [/bin] :

Creating "Makefile" ...
 completed.

The file "Makefile" has been created.

Enter "make" to build AIM Independent Resource Benchmark Suite IX

Type "singleuser" to run AIM Independent Resource Benchmark Suite IX.

If there are any problems, you can either run this configuration script
again or edit the "Makefile" directly.

-END OF TRANSCRIPT-

MAKING THE BENCHMARK: make

Once S9setup is run, a Makefile exists and the software is ready for compilation. To compile the software and generate the singleuser executable type the following:

$ make

Once the make completes successfully, you are ready to run the benchmark.

NOTES: If you have trouble compiling, make sure you are specifying any options your compiler may need for POSIX code (for example, -xpg3plus with the SCO compiler).

If the compilation of the benchmark is failing because your system does not have the ulimit() routine and cannot find ulimit.h, supply -DNO_ULIMIT as a compile option during S9setup.

If the compilation of the benchmark is failing because your system does not have the socketpair() routine, supply -DNO_SOCKETPAIR as a compile option during S9setup.




CHAPTER 3

STARTING THE BENCHMARK:
RUNNING THE singleuser PROGRAM

The singleuser program used to run the benchmark requires the following information:

VariableDescription
Machine nameIdentify name for nun
Machine configuration Additional identifying information (optional)
Number of seconds to run each test [2 to 1000] Amount of time to run each individual test in the benchmark
Path to disk files Location for creation of temporary files used during disk tests

To start the benchmark, run singleuser as root. Enter singleuser at the system prompt and press RETURN:

# singleuser

The following text is a transcript of the singleuser script. Some text and data is abbreviated in this display.

AIM Independent Resource Benchmark - Suite IX v1.1, January 22, 1996
Copyright (c) 1996 - 2001 Caldera International, Inc.
All Rights Reserved

Machine's name                                    : tokay
Machine's configuration                           : Lx2.2.19-PII/266-128MB-1dsk
Number of seconds to run each test [2 to 1000]    : 500
Path to disk files                                : /bench

Starting time:      Thu Nov  1 17:55:23 2001
Projected Run Time: 8:20:00
Projected finish:   Fri Nov  2 02:15:23 2001

------------------------------------------------------------------------------------------------------------
 Test        Test        Elapsed  Iteration    Iteration          Operation
Number       Name      Time (sec)   Count   Rate (loops/sec)    Rate (ops/sec)
------------------------------------------------------------------------------------------------------------
     1 add_double         500.85        296    0.59100        10637.92 Thousand Double Precision Additions/second
     2 add_float          500.17       2780    5.55811        66697.32 Thousand Single Precision Additions/second
     3 add_long           500.10       4575    9.14817       548890.22 Thousand Long Integer Additions/second
     4 add_int            500.05       4575    9.14909       548945.11 Thousand Integer Additions/second
     5 add_short          500.02       7824   15.64737       375536.98 Thousand Short Integer Additions/second
     6 creat-clo          500.00      41849   83.69800        83698.00 File Creations and Closes/second
     7 page_test          500.03      13328   26.65440        45312.48 System Allocations & Pages/second
     8 brk_test           500.04       7615   15.22878       258889.29 System Memory Allocations/second
     9 jmp_test           500.00     773994 1547.98800      1547988.00 Non-local gotos/second
    10 signal_test        500.00      52496  104.99200       104992.00 Signal Traps/second
    11 exec_test          500.02      15401   30.80077          154.00 Program Loads/second
    12 fork_test          500.00       7931   15.86200         1586.20 Task Creations/second
    13 link_test          500.00     200599  401.19800        25275.47 Link/Unlink Pairs/second
    14 disk_rr            500.17       2737    5.47214        28017.35 Random Disk Reads (K)/second
    15 disk_rw            500.12       3444    6.88635        35258.10 Random Disk Writes (K)/second
    16 disk_rd            500.02      13345   26.68893       136647.33 Sequential Disk Reads (K)/second
    17 disk_wrt           500.01       6661   13.32173        68207.28 Sequential Disk Writes (K)/second
    18 disk_cp            500.02       4392    8.78365        44972.28 Disk Copies (K)/second
    19 sync_disk_rw       501.66         22    0.04385          112.27 Sync Random Disk Writes (K)/second
    20 sync_disk_wrt      510.33         49    0.09602          245.80 Sync Sequential Disk Writes (K)/second
    21 sync_disk_cp       508.71         49    0.09632          246.58 Sync Disk Copies (K)/second
    22 disk_src           500.00      89368  178.73600        13405.20 Directory Searches/second
    23 div_double         500.11       1557    3.11332         9339.95 Thousand Double Precision Divides/second
    24 div_float          500.03       3421    6.84159        20524.77 Thousand Single Precision Divides/second
    25 div_long           500.05       4118    8.23518         7411.66 Thousand Long Integer Divides/second
    26 div_int            500.12       4119    8.23602         7412.42 Thousand Integer Divides/second
    27 div_short          500.04       4118    8.23534         7411.81 Thousand Short Integer Divides/second
    28 fun_cal            500.02      12076   24.15103     12365329.39 Function Calls (no arguments)/second
    29 fun_cal1           500.01      18980   37.95924     19435131.30 Function Calls (1 argument)/second
    30 fun_cal2           500.01      20846   41.69117     21345877.08 Function Calls (2 arguments)/second
    31 fun_cal15          500.00       7228   14.45600      7401472.00 Function Calls (15 arguments)/second
    32 sieve              501.01        316    0.63073            3.15 Integer Sieves/second
    33 mul_double         500.08        407    0.81387         9766.44 Thousand Double Precision Multiplies/second
    34 mul_float          500.04       2179    4.35765        52291.82 Thousand Single Precision Multiplies/second
    35 mul_long           500.00     196107  392.21400        94131.36 Thousand Long Integer Multiplies/second
    36 mul_int            500.00     196927  393.85400        94524.96 Thousand Integer Multiplies/second
    37 mul_short          500.00     156931  313.86200        94158.60 Thousand Short Integer Multiplies/second
    38 num_rtns_1         500.00      96728  193.45600        19345.60 Numeric Functions/second
    39 new_raph           500.00     249844  499.68800        99937.60 Zeros Found/second
    40 trig_rtns          500.02       5659   11.31755       113175.47 Trigonometric Functions/second
    41 matrix_rtns        500.00     964564 1929.12800       192912.80 Point Transformations/second
    42 array_rtns         500.13       1922    3.84300           76.86 Linear Systems Solved/second
    43 string_rtns        500.18       2008    4.01455          401.46 String Manipulations/second
    44 mem_rtns_1         500.01       3696    7.39185       221755.56 Dynamic Memory Operations/second
    45 mem_rtns_2         500.00     313757  627.51400        62751.40 Block Memory Operations/second
    46 sort_rtns_1        500.07       4995    9.98860           99.89 Sort Operations/second
    47 misc_rtns_1        500.00     114650  229.30000         2293.00 Auxiliary Loops/second
    48 dir_rtns_1         500.00      36633   73.26600       732660.00 Directory Operations/second
    49 shell_rtns_1       500.02      18736   37.47050           37.47 Shell Scripts/second
    50 shell_rtns_2       500.00      18747   37.49400           37.49 Shell Scripts/second
    51 shell_rtns_3       500.00      18692   37.38400           37.38 Shell Scripts/second
    52 series_1           500.00    2390162 4780.32400       478032.40 Series Evaluations/second
    53 shared_memory      500.00     450027  900.05400        90005.40 Shared Memory Operations/second
    54 tcp_test           500.01       5000    9.99980          899.98 TCP/IP Messages/second
    55 udp_test           500.00     230475  460.95000        46095.00 UDP/IP DataGrams/second
    56 fifo_test          500.00     648781 1297.56200       129756.20 FIFO Messages/second
    57 stream_pipe        500.00     503519 1007.03800       100703.80 Stream Pipe Messages/second
    58 dgram_pipe         500.00     497055  994.11000        99411.00 DataGram Pipe Messages/second
    59 pipe_cpy           500.00     870860 1741.72000       174172.00 Pipe Messages/second
    60 ram_copy           500.00    4999209 9998.41800    250160418.36 Memory to Memory Copy/second
------------------------------------------------------------------------------------------------------------
Projected Completion time:  Fri Nov  2 02:15:23 2001
Actual Completion time:     Fri Nov  2 02:15:47 2001
Difference:                 0:00:24

AIM Independent Resource Benchmark - Suite IX
   Testing over

STOPPING THE BENCHMARK

You can use the DELETE key, CONTROL-C, or CONTROL-\ to stop the benchmark (note that some systems rename these keys). When you use these commands to stop the benchmark, you must remove all of the benchmark's temporary files. In addition, if you use, CONTROL-\ you must remove the core file that this command creates.

To identify and kill the benchmark processes, use the following commands:

Type of SystemCommand
System V # ps -ef | grep singleuser

# kill -9 <process ID>
All other systems # ps -ax | grep singleuser

# kill -9 <process ID>

If these commands are not appropriate for your system, consult your system manual.

To remove the benchmark's temporary files, enter the following command in the benchmark directory and in the directory that you specified at the "Path to Disk Files" prompt in S9setup:

# rm -fr tmpa* tmpb* link* fakeh

PREMATURE TERMINATION OF THE BENCHMARK: TROUBLESHOOTING

When a test fails in Suite IX, an error message is printed to the screen but not to the results file, suite9.ss. If you just look at suite9.ss after a Suite IX run, it is possible to incorrectly assume that the run was successful since no error message appears, and the line for a failed test is omitted. DO NOT rely solely on suite9.ss to determine the success of a run.

When AIM Technology performed an official certified run, errors were captured with the nohup utility by typing nohup RUN&. After the run, the nohup.out output file is examined for errors.

Tip: Use nohup when running Suite IX to check for errors.

Occasionally the benchmark terminates prematurely because there is not enough disk space. When this happens, you'll receive the following message:

No more disk space

When this message appears, the benchmark cannot open/create a file for reading or writing. Add more disk storage.

Additionally, the benchmark may terminate prematurely if there is not enough swap space. When this happens, you will usually receive the following message in the console window:

Out of swap space

If this message appears, the benchmark may have been unable to allocate memory necessary to complete a test. Use swap or swapon. It is recommended that your swap space be at least 2 times the size of your physical memory.


CHAPTER 4

BENCHMARK RESULTS: THE BENCHMARK'S OUTPUT FILES

SPREADSHEET OUTPUT FILE: suite9.ss

The singleuser program generates a tab delimited spreadsheet output file, suite9.ss, that contains the benchmark results. The contents include the name and configuration of the machine (supplied earlier by the user), the date of the run, the name of the benchmark, disk iteration count, and a tab separated line for each test run with name of test, timing, and units. To preserve multiple copies of suite9.ss, rename the file each time you run the benchmark. Otherwise, new results will be appended onto the current suite9.ss file.

-------------------------------------------------------------------------
tokay
Lx2.2.19-PII/266-128MB-1dsk
Nov  1 17:55:23 2001
AIM Independent Resource Benchmark - Suite IX "1.1"
5120K
add_double         10637  Thousand Double Precision Additions per second
add_float          66697  Thousand Single Precision Additions per second
add_long          548890  Thousand Long Integer Additions per second
add_int           548945  Thousand Integer Additions per second
add_short         375536  Thousand Short Integer Additions per second
creat-clo          83698  File Creations and Closes per second
page_test          45312  System Allocations & Pages per second
brk_test          258889  System Memory Allocations per second
jmp_test         1547988  Non-local gotos per second
signal_test       104992  Signal Traps per second
exec_test            154  Program Loads per second
fork_test           1586  Task Creations per second
link_test          25275  Link/Unlink Pairs per second
disk_rr            28017  Random Disk Reads (K) per second
disk_rw            35258  Random Disk Writes (K) per second
disk_rd           136647  Sequential Disk Reads (K) per second
disk_wrt           68207  Sequential Disk Writes (K) per second
disk_cp            44972  Disk Copies (K) per second
sync_disk_rw         112  Sync Random Disk Writes (K) per second
sync_disk_wrt        245  Sync Sequential Disk Writes (K) per second
sync_disk_cp         246  Sync Disk Copies (K) per second
disk_src           13405  Directory Searches per second
div_double          9339  Thousand Double Precision Divides per second
div_float          20524  Thousand Single Precision Divides per second
div_long            7411  Thousand Long Integer Divides per second
div_int             7412  Thousand Integer Divides per second
div_short           7411  Thousand Short Integer Divides per second
fun_cal         12365329  Function Calls (no arguments) per second
fun_cal1        19435131  Function Calls (1 argument) per second
fun_cal2        21345877  Function Calls (2 arguments) per second
fun_cal15        7401472  Function Calls (15 arguments) per second
sieve                  3  Integer Sieves per second
mul_double          9766  Thousand Double Precision Multiplies per second
mul_float          52291  Thousand Single Precision Multiplies per second
mul_long           94131  Thousand Long Integer Multiplies per second
mul_int            94524  Thousand Integer Multiplies per second
mul_short          94158  Thousand Short Integer Multiplies per second
num_rtns_1         19345  Numeric Functions per second
new_raph           99937  Zeros Found per second
trig_rtns         113175  Trigonometric Functions per second
matrix_rtns       192912  Point Transformations per second
array_rtns            76  Linear Systems Solved per second
string_rtns          401  String Manipulations per second
mem_rtns_1        221755  Dynamic Memory Operations per second
mem_rtns_2         62751  Block Memory Operations per second
sort_rtns_1           99  Sort Operations per second
misc_rtns_1         2293  Auxiliary Loops per second
dir_rtns_1        732660  Directory Operations per second
shell_rtns_1          37  Shell Scripts per second
shell_rtns_2          37  Shell Scripts per second
shell_rtns_3          37  Shell Scripts per second
series_1          478032  Series Evaluations per second
shared_memory      90005  Shared Memory Operations per second
tcp_test             899  TCP/IP Messages per second
udp_test           46095  UDP/IP DataGrams per second
fifo_test         129756  FIFO Messages per second
stream_pipe       100703  Stream Pipe Messages per second
dgram_pipe         99411  DataGram Pipe Messages per second
pipe_cpy          174172  Pipe Messages per second
ram_copy       250160418  Memory to Memory Copy per second

DETAILED OUTPUT: logfile.suite9

singleuser also generates a file called logfile.suite9. This file contains benchmark results as well, but in a different format, and with some additional information. Each line lists a test name, the elapsed time for that test in milliseconds, the number of times the test was called per second, and test operations per second. You can use the -nl option to prevent the creation of this logfile.

GENERATING REPORTS: rpt9

The benchmark's report generation program, rpt9, uses the data in suite9.ss to produce a PostScript output file. The output file contains data for the following parameters:

To create a Postscript output file, enter the following command at the system prompt:

$ rpt9 suite9.ss <name of output file>

(If you have renamed suite9.ss, enter the new file name in the previous command, for example, rpt9 suite9.1130 suite9.1130.ps) This command creates a Postscript file in the current directory that can be printed via any standard PostScript printer.

Figure 1: AIM Independent Resource Benchmark - Suite IX Report

ADDING CUSTOM TESTS: C Language & Shell Scripts

You can add a custom test by supplying C code or by modifying the aim_1.sh, aim_2.sh or aim_3.sh shell scripts.

To modify a shell script, modify the aim_1.sh, aim_2.sh or aim_3.sh shell scripts. Add shell_rtns_1, shell_rtns_2 or shell_rtns_3 to s9workfile.

To add a C code test, follow the steps below:

  1. Write the test, move it to the benchmark directory.
  2. Add all new source files to the Makefile to ensure that the code for the new test is linked into the singleuser program or add to S9setup.
  3. Add the appropriate register_test() call. register_test() adds a test to the internal list of available tests. All tests are registered at the beginning of singleuser.c in a loop by accessing the contents of the array source_files[]. These arrays contain a list of all initialization routines that contain register_test() calls. Either add your register_test() call to an existing initialization routine or create a new initialization routine and add it to the source_files[] array in files.h. The syntax for the register_test() function is:

    void register_test(char *name,   /* name of the test */
                       char *args,   /* pointer to the args string */
                       int (*f)(),   /* pointer to the test */
                       int factor,   /* # of operations in test */
                       char *units) /* units for the factor's
    

    For example:

    register_test("ram_copy", "64", ram_copy, 25020, "Memory to Memory Copy");
    register_test("add_short", "3 -3 2000000", add_short, 2000000, "Short Integer Additions");
    

    Add code and tests to files.h

  4. Add the test name to the new "custom" mix file. Add comment lines to identify your changes (the first character in a comment line is a pound sign, #).
  5. If you have already run singleuser, recompile by entering make at the system prompt.

EVALUATING THE BENCHMARK RESULTS

Manufacturers and suppliers of UNIX systems use the AIM benchmarks for a variety of reasons. The following are some of the more common:




APPENDIXES

THE BENCHMARK'S TESTS: s9workfile

The AIM Independent Resources Benchmark - Suite IX, includes 58 tests. Tests are listed in s9workfile, a file that the benchmark reads each time the benchmark is run (please refer to the next section to view a sample s9workfile). Each test repeats an operation, system call, or I/O transfer for a specified time (user specifies test run time at time of benchmark set up). Each test routine repeats its operation with as little overhead as possible. Note that most tests will run for approximately the specified run time, although the time required to complete a test loop may exceed the specified run time. For example, if it takes 20 seconds to run a single loop of exec test and the specified per test run time is 2 seconds, exec_test will run for 20 seconds. However, if the specified per test run time is 45 seconds, exec test will run for 3 loops (60 seconds) and overrun the scheduled time by 15 seconds.

The following table identifies and describes the benchmark's tests:

TestDescription
add doubleDouble Precision Additions
add_floatSingle Precision Additions
add_intInteger Additions
add_longLong Integer Additions
add_shortShort Integer Additions
array_rtnsSolution of linear equations using Gausian elimination
brk_testSystem Memory Allocations
creat-cloFile Creations and Closes
dgram_pipeDataGram Pipe Messages (when not supported, UDP is used)
dir_rtns_1Directory Operations
disk_cpDisk Copies
disk_rdSequential Disk Reads
disk_rrRandom Disk Reads
disk_rwRandom Disk Writes
disk_srcDirectory Searches
disk_wrtSequential Disk Writes
div_doubleDouble Precision Divides
div_floatSingle Precision Divides
div_intInteger Divides
div_longLong Integer Divides
div_shortShort Integer Divides
exec_testProgram Loads
fifo_testFIFO Messages
fork_testTask Creations
fun_calFunction Calls (no arguments)
fun_cal1Function Calls (1 arguments)
fun_cal15Function Calls (15 arguments)
fun_cal2Function Calls (2 arguments)
jmp_testNon-local gotos
link_testLink/Unlink Pairs
matrix_rtnsPoint Transformations
mem_rtns_1Dynamic Memory Operations
mem_rtns_2Block Memory Operations
misc_rtns_1Auxiliary Loops
mul_doubleDouble Precision Multiplies
mul_floatSingle Precision Multiplies
mul_intInteger Multiplies
mul_longLong Integer Multiplies
mul_shortShort Integer Multiplies
new_raphZeros Found using Newton-Raphson algorithm
num_rtns_1Numeric Functions (non-trigonometric)
page_testSystem Memory Allocations & Pages
pipe_cpyPipe Messages
ram_copyMemory to Memory Copy
series_1 Series Evaluations - Evaluates the infinite series for sin(x) around 0. Tests how well the system handles small numbers.
shared_memoryShared Memory Operations
shell_rtns_1 Shell Script - An empty shell script. Use this file to add new tests. For example, to benchmark a compiler, add a number of compiler commands to the shell script. singleuser will then run the contents of the shell script to exercise the compiler.
shell_rtns 2Shell Script - See description for shell_rtns_1
shell rtns_3Shell Script - See description for shell_rtns_1
sieveInteger Sieves - find all prime numbers from 0 to 1 million
signal_testSignal Traps
sort_rtns_1Sort Operations
stream_pipeStream Pipe Messages (when not supported, TCP is used)
string_rtnsString Manipulations
sync_disk_cpSync Disk Copies
sync_disk_rwSync Sequential Disk Writes
sync_disk_wrtSync Random Disk Writes
tcp_testTCP/IP Messages
trig_rtns Trigonometric Functions
udp_testUDP/IP DataGrams

A SAMPLE s9workfile

s9workfile contains a list of the tests to be run during the benchmark. If tests are deleted from the file, they are not run during the benchmark run. A sample s9workfile is listed below and contains all possible valid test names:

add_double
add_float
add_int
add_long
add_short
array_rtns
brk_test
creat-clo
dgram_pipe
dir_rtns_1
disk_cp
disk_rd
disk_rr
disk_rw
disk_src
disk_wrt
div_double
div_float
div_int
div_long
div_short
exec_test
fifo_test
fork_test
fun_cal
fun_cal1
fun_cal15
fun_cal2
jmp_test
link_test
matrix_rtns
mem_rtns_1
mem_rtns_2
misc_rtns_1
mul_double
mul_float
mul_int
mul_long
mul_short
new_raph
num_rtns_1
page_test
pipe_cpy
ram_copy
series_1
shared_memory
shell_rtns_1
shell_rtns_2
shell_rtns_3
sieve
signal_test
sort_rtns_1
stream_pipe
string_rtns
sync_disk_cp
sync_disk_rw
sync_disk_wrt
tcp_test
trig_rtns
udp_test
FILESIZE: 5M*
*not a test

THE BENCHMARK FILES

The following is a list of files on the benchmark tape.

MakefileMakefile composed by S9setup
RUNscript to run singleuser using input file
S9setupconfiguration script
add.cbenchmark code
aim_1.shshell script that can be customized
aim_2.shshell script that can be customized
aim_3.shshell script that can be customized
creat-clo.cbenchmark code
disk1.cbenchmark code
disk_src.cbenchmark code
div.cbenchmark code
fakeh.tarexercise directory in tar format
files.hbenchmark code
fillin.cbenchmark code
fun.cbenchmark code
funcal.cbenchmark code
funcal.hbenchmark code
int_fcns.cbenchmark code
mul.cbenchmark code
multiuser.cbenchmark code
num_fcm.cbenchmark code
pipe_test.cbenchmark code
ram.cbenchmark code
rand.cbenchmark code
rtmsec.c benchmark code
s9workfilelist of benchmark test to be run
singleuser.cbenchmark code
suite.hbenchmark code
testerr.hbenchmark code
rpt9.cReport generation code



INDEX

A  
 adding custom tests24
 aim_1.sh, aim_2.sh, and aim_3.sh shell script24
   
B  
 benchmark files31
 benchmark results19
 benchmark, definition3
 Bourne shell9
   
C  
 C language24
 cd command7
 compiler9
 compiler options9
 compiling the software13
 custom tests, C language and shell scripts24
   
D  
 dd command7
 disk space18
 -DNO_SOCKETPAIR13
 -DNO ULIMIT13
   
E  
 error message 
     disk space18
     Out of swap space18
 evaluating results25
   
F  
 files, list of31
 FILESIZE parameter8
   
I  
 installation5, 7
   
L  
 linker options9
 logfile.suite921
   
M  
 machine configuration (singleuser)14
 machine name (singleuser)14
 make2, 13
 Makefile24
     definition3
 minimum system requirements5
 mkdir command7
   
N  
 -nl21
   
O  
 operation, definition3
 Out of swap space18
 output files19
   
P  
 Path to disk files (singleuser)14
 PostScript, definition3
 premature termination of the benchmark18
     ulimit()13
   
R  
 register_test()24
 reports22
 results19, 25
 rpt92, 22
     definition3
   
S  
 S9setup2, 5, 9
     definition3
     running the script9
     transcript of script9
 s9workfile2, 8, 26, 29
 shell script24
     definition3
 shelLrtns_1, shell_rtns_2, shell _rtns_324
 singleuser2, 13, 14, 21, 24
     definition3
 singleuser.c24
 socketpair()13
 spreadsheet output file19
   
 starting the benchmark14
 stopping the benchmark17
 suite9.ss2, 19, 22
 swap18
 swapon18
 system resources, definition3
   
T  
 tar command7
 test environment, definition3
 test period (singleuser)14
 test, definition3
 tests26
     list of29
 troubleshooting18
   
U  
 ulimit()13