USEX: The Display Screen
» The Window Manager

A usex session, which may collectively consist of up to 100 processes, is controlled by a single process known as the window manager.

After all test parameters have been gathered, either interactively, from an input file, or as created by a usex -b or usex -e invocation, the window manager forks off the specified test programs, and then brings up the curses-based usex display screen in the terminal window.

The window manager is responsible for performing the following tasks:

  • Based upon the test parameters gathered interactively or automatically, forks the test processes. Depending upon the test type, each child test process will either:
    1. Execute the test's functionality directly, as in:
      » the I/O test
      » the transfer rate test
      » the virtual memory test
      » the dhrystone benchmark
      » the whetstone benchmark
    2. Act as a "test harness" that controls the execution of its own child test processes, as in:
      » the bin test suite
      » user-supplied tests
  • Gather output data from each child test process, and display it appropriately on the test's designated display line in the upper section of the usex display screen.
  • Once-per-second, gather a number of system statistics, and display them in the bottom part of the usex display screen.
  • Gather, display, and execute interactively-entered user commands.
  • » The Terminal Window
    The number of test programs that can be executed in a usex session is gated by the size of the terminal window in which it is invoked. The minimum allowable window size is 80x24, which allows up to 12 tests. If the window size is 80x60, or greater, the number of allowable tests scales to a maximum of 48.

    For example, when usex is invoked using the usex -e command line option, the session adapts to the size of its containing terminal window. Therefore, if it is invoked in an 80x24 window, it allocates the 12 available test slots like this:

    usex
    ********************************************************************************
    *  ID  BSIZE  MODE   POINTER   OPERATION         FILE NAME         PASS  STAT  *
    *  --  -----  ----  ---------  ---------  -----------------------  ----  ----  *
    *   1   8192  Fill                        /usr/tmp/ux026868_01        1  BKGD  *
    *   2   8192  Fill                        /usr/tmp/ux026868_02        1  BKGD  *
    *   3   8192  Fill                        /usr/tmp/ux026868_03        1  BKGD  *
    *   4   8192  Rate             write[84%] /usr/tmp/ux026868_04        1  BKGD  *
    *   5  480769 dhrystones/second           dhrystone benchmark         3  BKGD  *
    *   6                          calibrate  whetstone benchmark         1  BKGD  *
    *   7  18 mb random            1.4 mb     virtual memory test            BKGD  *
    *   8  18 mb random            1.4 mb     virtual memory test            BKGD  *
    *   9  18 mb sequential        2.9 mb     virtual memory test            BKGD  *
    *  10  /usr/bin/uptime  [                                       ]     1  BKGD  *
    *  11  /usr/bin/refer  [                                        ]     1  BKGD  *
    *  12  /usr/bin/mxtar  [                                        ]     1  BKGD  *
    ********************************************************************************
    *  Unix System EXerciser  *  USER SYSTEM IDLE  LOADAVG  TASKS/RUN   TEST TIME  *
    *    USEX Version 1.7     *   74%   24%    0%   10.04      90/8     000:00:09  *
    *                         *                                                    *
    *     anderson - i686     *  PAGE-IN PAGE-OUT  FREEMEM  FREESWAP   CSW   INTR  *
    *   Linux 2.2.5-15smp2    *    410    22551     3.0 mb   78.8 mb   1664  1978  *
    *                         *  SWAP-IN SWAP-OUT  BUFFERS   CACHED   FORKS        *
    *     8May01  15:43:24    *     0       41     10.0 mb   7.1 mb     0          *
    ********************************************************************************
    
    However, if the usex -e command is invoked in an 80x60 window, it allocates the 48 available test slots like this:
    usex
    ********************************************************************************
    *  ID  BSIZE  MODE   POINTER   OPERATION         FILE NAME         PASS  STAT  *
    *  --  -----  ----  ---------  ---------  -----------------------  ----  ----  *
    *   1   8192  Fill                        /usr/tmp/ux026485_01        1  BKGD  *
    *   2   8192  Fill                        /usr/tmp/ux026485_02        1  BKGD  *
    *   3   8192  Fill                        /usr/tmp/ux026485_03        1  BKGD  *
    *   4   8192  Fill                        /usr/tmp/ux026485_04        1  BKGD  *
    *   5   8192  Fill                        /usr/tmp/ux026485_05        1  BKGD  *
    *   6   8192  Fill                        /usr/tmp/ux026485_06        1  BKGD  *
    *   7   8192  Fill                        /usr/tmp/ux026485_07        1  BKGD  *
    *   8   8192  Fill                        /usr/tmp/ux026485_08        1  BKGD  *
    *   9   8192  Fill                        /usr/tmp/ux026485_09        1  BKGD  *
    *  10   8192  Fill                        /usr/tmp/ux026485_10        1  BKGD  *
    *  11   8192  Fill                        /usr/tmp/ux026485_11        1  BKGD  *
    *  12   8192  Fill                        /usr/tmp/ux026485_12        1  BKGD  *
    *  13   8192  Rate             read[10%]  /usr/tmp/ux026485_13        1  BKGD  *
    *  14  454545 dhrystones/second           dhrystone benchmark         4  BKGD  *
    *  15  467289 dhrystones/second           dhrystone benchmark         4  BKGD  *
    *  16  462962 dhrystones/second           dhrystone benchmark         4  BKGD  *
    *  17  480769 dhrystones/second           dhrystone benchmark         4  BKGD  *
    *  18                          calibrate  whetstone benchmark         1  BKGD  *
    *  19                          calibrate  whetstone benchmark         1  BKGD  *
    *  20                          calibrate  whetstone benchmark         1  BKGD  *
    *  21                          calibrate  whetstone benchmark         1  BKGD  *
    *  22  4 mb random             2.4 mb     virtual memory test            BKGD  *
    *  23  4 mb random             2.4 mb     virtual memory test            BKGD  *
    *  24  4 mb random             2.4 mb     virtual memory test            BKGD  *
    *  25  4 mb random             2.6 mb     virtual memory test            BKGD  *
    *  26  4 mb random             2.5 mb     virtual memory test            BKGD  *
    *  27  4 mb random             2.5 mb     virtual memory test            BKGD  *
    *  28  4 mb sequential         4.4 mb     virtual memory test            BKGD  *
    *  29  4 mb sequential         4.0 mb     virtual memory test            BKGD  *
    *  30  4 mb sequential         4.1 mb     virtual memory test            BKGD  *
    *  31  4 mb sequential         4.1 mb     virtual memory test            BKGD  *
    *  32  4 mb sequential         4.2 mb     virtual memory test            BKGD  *
    *  33  4 mb sequential         4.2 mb     virtual memory test            BKGD  *
    *  34  /usr/bin/man  [                                          ]     1  BKGD  *
    *  35  /bin/dd  [                                               ]     1  BKGD  *
    *  36  /usr/bin/gsdj  [                                         ]     1  BKGD  *
    *  37  /usr/bin/unprotoize  [                                   ]     1  BKGD  *
    *  38  /usr/bin/tty  [                                          ]     1  BKGD  *
    *  39  /usr/bin/unbuffer  [                                     ]     1  BKGD  *
    *  40  /usr/bin/ar  [                                           ]     1  BKGD  *
    *  41  /bin/ps  [                                               ]     1  BKGD  *
    *  42  /usr/bin/unexpand  [                                     ]     1  BKGD  *
    *  43  /usr/bin/look  [                                         ]     1  BKGD  *
    *  44  /usr/bin/protoize  [                                     ]     1  BKGD  *
    *  45  /usr/bin/perl  [                                         ]     1  BKGD  *
    *  46  /usr/bin/dislocate  [                                    ]     1  BKGD  *
    *  47  /usr/bin/ld  [                                           ]     1  BKGD  *
    *  48  /usr/bin/cc  [                                           ]     1  BKGD  *
    ********************************************************************************
    *  Unix System EXerciser  *  USER SYSTEM IDLE  LOADAVG  TASKS/RUN   TEST TIME  *
    *    USEX Version 1.7     *   93%    7%    0%   26.41     163/24    000:00:41  *
    *                         *                                                    *
    *     anderson - i686     *  PAGE-IN PAGE-OUT  FREEMEM  FREESWAP   CSW   INTR  *
    *   Linux 2.2.5-15smp2    *    1571    149      1.9 mb   79.4 mb   688    988  *
    *                         *  SWAP-IN SWAP-OUT  BUFFERS   CACHED   FORKS        *
    *     8May01  15:41:47    *     91      8       2.6 mb  11.0 mb     9          *
    ********************************************************************************
    
    On the other hand, it is not required to use all of the available test slots afforded by the containing terminal window size. However, the display screen will always occupy, at a minimum, an 80x24 display.

    For example, here is a usex session, invoked interactively, that is running one I/O test in a terminal window whose size is 80x32:

    usex
    ********************************************************************************
    *  ID  BSIZE  MODE   POINTER   OPERATION         FILE NAME         PASS  STAT  *
    *  --  -----  ----  ---------  ---------  -----------------------  ----  ----  *
    *   1   8192  Fill    1785856  write....  /usr/tmp/ux010831_01        1   OK   *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    ********************************************************************************
    *  Unix System EXerciser  *  USER SYSTEM IDLE  LOADAVG  TASKS/RUN   TEST TIME  *
    *    USEX Version 1.7     *   18%   12%   70%    0.43      77/4     000:00:16  *
    *                         *                                                    *
    *     anderson - i686     *  PAGE-IN PAGE-OUT  FREEMEM  FREESWAP   CSW   INTR  *
    *   Linux 2.2.5-15smp2    *     0      241      2.9 mb   127 mb    1377   686  *
    *                         *  SWAP-IN SWAP-OUT  BUFFERS   CACHED   FORKS        *
    *     9May01  10:16:25    *     0       0       3.5 mb  54.4 mb     0          *
    ********************************************************************************
    
    
    
    
    
    
    
    
    
    When usex is invoked interactively, the initial prompt informs the user of the exact number of tests that are allowed in that terminal window.

    When usex is invoked from an input file, the number of tests to be run is contained in the input file itself. That being the case, the user must make sure that the containing window will allow that many tests, or the session will fail immediately.

    If the usex -b or or usex -e command line options are used, the test will automatically scale to utilize all available slots (up to the maximum of 48).

    Note that for the purposes of this discussion, and in most of the other usex web pages, the screen-shot examples will typically use an 80x24 window.

    » The Display Screen Contents
    The usex display screen is broken up into 3 sections:
    1. The upper section is dedictated to the set of tests that have been specified to run. Each test is allotted one line of output.
      
      
    2. The lower left section contains the usex version, the host system's name, processor type, and kernel version, the date, and the time, which is updated once-per-second.
      
      
    3. The lower right section contains the session's run time and a set of system statistics, all of which are updated once-per-second.
    » Test Data
    Here is a usex -e session, which runs at least one of each of the usex built-in tests:
    usex
    ********************************************************************************
    *  ID  BSIZE  MODE   POINTER   OPERATION         FILE NAME         PASS  STAT  *
    *  --  -----  ----  ---------  ---------  -----------------------  ----  ----  *
    *   1   8192  Fill     450560  write....  /usr/tmp/ux010929_01        1   OK   *
    *   2   8192  Fill     466944  write....  /usr/tmp/ux010929_02        1   OK   *
    *   3   8192  Fill     442368  write....  /usr/tmp/ux010929_03        1   OK   *
    *   4   8192  Rate 8131 kb/sec read[70%]  /usr/tmp/ux010929_04        4   OK   *
    *   5  495049 dhrystones/second           dhrystone benchmark        12   OK   *
    *   6  185.829 MWIPS           Loop N3..  whetstone benchmark         2   OK   *
    *   7  15 mb random            7.5 mb     virtual memory test *           OK   *
    *   8  15 mb random            7.8 mb     virtual memory test             OK   *
    *   9  15 mb sequential        14.4 mb    virtual memory test *           OK   *
    *  10  /usr/bin/as  [/usr/bin/as -o /tmp/ux010929_tmp/ux010929_1]     1   OK   *
    *  11  /usr/bin/hexdump  [0000210 0000 0000 0000 0000 0000 0000 ]     1   OK   *
    *  12  /usr/sbin/nfsstat  [125405 27% 0       0% 195047 43% 1146]     1   OK   *
    ********************************************************************************
    *  Unix System EXerciser  *  USER SYSTEM IDLE  LOADAVG  TASKS/RUN   TEST TIME  *
    *    USEX Version 1.7     *   94%    6%    0%    5.29      91/8     000:03:05  *
    *                         *                                                    *
    *     anderson - i686     *  PAGE-IN PAGE-OUT  FREEMEM  FREESWAP   CSW   INTR  *
    *   Linux 2.2.5-15smp2    *    2785    106      2.1 mb   117 mb    803    532  *
    *                         *  SWAP-IN SWAP-OUT  BUFFERS   CACHED   FORKS        *
    *     9May01  10:42:46    *     13      0       2.6 mb  22.4 mb     2          *
    ********************************************************************************
    
    Looking at the upper test section, note that there is a header with 8 fields, which may or may not correlate to the individual test display lines. The following table describes the general meaning of each of the 8 headers. Consult each test type's web page for details.
    TEST HEADER FIELDS
    ID The test's ID number. There will be space for a minimum of 12 tests -- and if the containing terminal window size allows it, up to a maximum of 48 tests. However, the ID number appears only if a test has been specified for that slot.
    
    
    BSIZE The buffer size that was specified during invocation, which is either:
  • the I/O test read and write buffer size.
  • the transfer rate test read buffer size.
  • the allocated memory size of the virtual memory test.
  • The field does not apply to the dhrystone and whetstone benchmarks, the bin test suite, or user-supplied tests.
    
    
    MODE The current operating mode of the test:
  • For the I/O test, the field indicates either Fill, when the test is in its write-read-compare cycle working its way towards the file size limit, or Trun, when the test has reached the file size limit and is working its way back performing read-compare-truncate operations.
  • For the transfer rate test, it always shows Rate.
  • For the virtual memory test, it shows the memory access mode, which is either random or sequential.
  • The field does not apply to the dhrystone and whetstone benchmarks, the bin test suite, or user-supplied tests.
    
    
    POINTER For the I/O test, this field the current file pointer position, and is only displayed when the test is running in the foreground mode ("OK" status).

    For the transfer rate test, this field contains the data transfer rate measured during the previous test pass.

    The field does not apply to the dhrystone or whetstone benchmarks, the virtual memory test, the bin test suite, or user-supplied tests.

    
    
    OPERATION The current operation being performed by the test:
  • For the I/O test, this field shows one of the following operations: malloc, open, read, write, compare, truncate, close or unlink. It is only displayed when the test is running in foreground mode ("OK" status).
  • For the transfer rate test, this field shows one of the following operations: read followed by a percentage value, or write followed by a percentage value. The percentage value represents the current file pointer position in relation to the file size limit.
  • For the virtual memory test, this field shows a count of the number of byte accesses have been made, where each byte access represents the instantiation of a full page within the allocated memory segment.
  • For the whetstone benchmark, this field will indicate which part of the benchmark it is current executing: calibrate, Loop N1, Loop N2, Loop N3, Loop N4, Loop N5, Loop N6, Loop N7 or Loop N8.
  • The field does not apply to the dhrystone benchmark, the bin test suite, or user-supplied tests.
    
    
    FILE NAME This field either contains the name of a test's work file, or the test type name:
  • For the I/O test, this field shows the name of the test's work file. If a block or character device file was specified during invocation, it will be shown here. If a directory name was specified, a temporary file will be created in the directory, and its name will be displayed. Temporary file names will be the concatention of "ux", the usex window manager's PID, an underscore, and the test number.
  • For the transfer rate test, this field shows the name of the test's work file. If a device name is entered, it will be displayed here. If a directory name is entered, and that directory is a local, readable, non-NFS mount point, the associated block device will be substituted and displayed here; otherwise a temporary file will be created in that directory. If a temporary file is created, its name will be the concatention of "ux", the usex window manager's PID, an underscore, and the test number.
  • For the dhrystone and whetstone benchmarks, the test type is displayed.
  • For the virtual memory test, the test type is displayed. If the test is being run in the foreground mode ("OK" status), an accordian-style set of dancing asterisks follows the test name, where each asterisk that is displayed or removed indicates that the test has touched 1000 pages. The asterisks incorporate the space allocated for the PASS field as well -- since there is no concept of a "pass" in this test; it simply runs indefinitely.
  • The field does not apply to the bin test suite or user-supplied tests.
    
    
    PASS This field holds the current test pass number.
  • For the I/O test, a pass consists of consists of one complete "Fill" and "Trun" cycle.
  • For the transfer rate test, a pass consists of consists of one complete read of the work file up to the specified file size limit.
  • For the dhrystone benchmark, a pass consists of complete run of the test.
  • For the whetstone benchmark, a pass consists of complete run of the test.
  • For the bin test suite, a pass consists of the running of the complete set of approximately 330 commands.
  • For user-supplied tests, a pass consists of the successful execution of the specified command or shell script.
  • The field does not apply to the virtual memory test.
    
    
    STAT This field indicates the current status of the test. It will contain one of the following:
    OK The test is running successfully, using the the more-verbose, foreground display mode. This may result in significantly more output data being passed to the window manager for display than the background display mode. This is the default mode for all test types except for the bin test suite, but can be overridden during invocation or by input file setting. During runtime, a test may be interactively put into this mode with either the t or t<testnum> commands.
    BKGD The test is running successfully, using the less-verbose, background display mode. This usually results in significantly less output data being passed to the window manager for display than the foreground display mode. This is default mode for only the bin test suite, but can be overridden during invocation or by input file setting. During runtime, a test may be interactively put into this mode with either the tb or t<testnum>b commands.
    HOLD The test has been interactively instructed to block with either the th or t<testnum>h commands. The test will remain suspended until instructed to continue with either the t, t<testnum>, tb or t<testnum>b commands.
    EOFS This status is only applicable to the I/O test. If, during the Fill cycle, a write() system call fails because the file system is full, the test will post this status, and immediately enter the Trun cycle. Upon starting the next pass, the status will revert to OK or BKGD, whichever was last in effect.
    EOP This status is only applicable to the I/O test. If, during the Fill cycle, a write() system call to a block device fails because it has reached the end of the partition, the test will post this status, and immediately enter the Trun cycle. Upon starting the next pass, the status will revert to OK or BKGD, whichever was last in effect.
    <DEAD> The test is no longer running because it has either been explicitly killed by the user, or the test has experienced some kind of failure:
  • A test may be killed interactively during runtime with the tk or t<testnum>k commands.
  • A test may kill itself due to a failure. When this happens, a test-specific error indication will be displayed on the test's display line.
  • (WAIT) If a test is interactively killed during runtime with the tk or t<testnum>k commands, or when the usex is shut down, the window manager will send a SIGUSR1 to the test and post this status. Each test has a handler for this signal, which makes a "clean" shutdown, and then exits. Upon receipt of an indication that the test has exited properly, a <DEAD> status will be posted.
    (KILL) If a test is interactively killed during runtime with the tk or t<testnum>k commands, the window manager sends a SIGUSR1 to the test, which has a handler installed then make a "clean" shutdown. If that attempt fails, the window manager subsequently sends a SIGKILL to the test process, and this status will be displayed momentarily, followed by KILLED when it has been confirmed that the test no longer exists.
    KILLED A test has been killed by brute force with a SIGKILL, because the "clean" shutdown attempt using SIGUSR1 failed. See (KILL) above.
    <HANG> If a test process exists, but has not sent an indication that it is running normally for more than the default period of 10 minutes, then the window manager will post this status. Upon receiving subsequent indication that the test is running OK, the window manager will revert the status to OK or BKGD, whichever was last in effect.
    <WARN> This status will be posted by a test if it encounters a system resource related failure, such as an ENOMEM or EAGAIN return from a system call. Rather than killing the test, it will temporarily block, and retry the operation at a later time. This status will be displayed until the test is able to continue. It will also be seen momentarily if a bin test command returns an error status, but will immediately be overwritten with a DEAD status.
    <EXIT> If a test calls exit() on its own accord without being explicitly killed by the window manager, then this status will be posted. This is a rare situation, because when tests fail, their normal behavior is to report the error to the window manager, and then wait to be explicitly killed.
    STOP If a test process exists, has been externally stopped with a SIGSTOP signal. OK or BKGD, whichever was last in effect.
    
    
    Several test types have display lines whose output does not correlate to the headers explained in the table above:
    UNCORRELATED TEST LINE DISPLAYS
    bin test suite As each command in the bin test suite is run, its fully qualified path name is displayed after the test's ID number. Following the path name is a pair of square brackets that fill the remainder of the test display line up to the PASS field:
  • If running in the background display mode, ("BKGD" status), the bracketed space will be empty.
  • If running in the foreground display mode, ("OK" status), the bracketed space will contain as much of each line of the command's textual output as will fit.
  • user-supplied
    tests
    The user-supplied command name is displayed after the test's ID number. Following the command name is a pair of square brackets that fill the remainder of the test display line up to the PASS field:
  • If running in the background display mode, ("BKGD" status), the bracketed space will be empty.
  • If running in the foreground display mode, ("OK" status), the bracketed space will contain as much of each line of the command's textual output as will fit.
  • dhrystone benchmark After the test's ID number, the number of dhrystones per second that was measured during the previous test pass is displayed.
    
    
    whetstone benchmark After the test's ID number, the number of MWIPS (mega-whetstone instructions per second) that was measured during the previous test pass is displayed.
    
    
    » System Statistics
    The bottom two sections of the display screen contain system-related statistics that provide a comprehensive view of how the tests are affecting system performance.

    The lower-left box contains the usex version, the running system's hostname, its processor type, the running kernel version, the date, and time. The date and time are updated once per second. The lower-right box contains a set of system statistics that are update once per second.

    For example, here is a usex -b session:

    usex
    ********************************************************************************
    *  ID  BSIZE  MODE   POINTER   OPERATION         FILE NAME         PASS  STAT  *
    *  --  -----  ----  ---------  ---------  -----------------------  ----  ----  *
    *   1  /usr/sbin/ab  [                                          ]     2  BKGD  *
    *   2  /usr/bin/ar  [                                           ]     2  BKGD  *
    *   3  /usr/bin/tie  [                                          ]     3  BKGD  *
    *   4  /usr/bin/ar  [                                           ]     2  BKGD  *
    *   5  /bin/rmdir  [                                            ]     3  BKGD  *
    *   6  /usr/bin/sum  [                                          ]     3  BKGD  *
    *   7  /usr/bin/gdb  [                                          ]     2  BKGD  *
    *   8  /bin/sleep  [                                            ]     2  BKGD  *
    *   9  /bin/sync  [                                             ]     2  BKGD  *
    *  10  /usr/bin/splash  [                                       ]     3  BKGD  *
    *  11  /usr/bin/look  [                                         ]     2  BKGD  *
    *  12  /bin/csh  [                                              ]     2  BKGD  *
    ********************************************************************************
    *  Unix System EXerciser  *  USER SYSTEM IDLE  LOADAVG  TASKS/RUN   TEST TIME  *
    *    USEX Version 1.7     *   29%   31%   40%   12.26     106/4     000:03:15  *
    *                         *                                                    *
    *     anderson - i686     *  PAGE-IN PAGE-OUT  FREEMEM  FREESWAP   CSW   INTR  *
    *   Linux 2.2.5-15smp2    *    2462    62       1.6 mb   127 mb    1305   583  *
    *                         *  SWAP-IN SWAP-OUT  BUFFERS   CACHED   FORKS        *
    *    10May01  11:05:28    *     0       0       2.6 mb  43.3 mb     90         *
    ********************************************************************************
    
    The contents of the lower-right box are described in the following table. The system statistics are updated once per second:
    SYSTEM STATISTICS
    USER SYSTEM IDLE The percentage of time that the system CPU(s) spent in user mode, system mode, and in the idle task.
    
    
    LOADAVG The average number of jobs in the run queue.
    
    
    TASKS/RUN The total number of tasks instantiated in the system, followed by how many of them are in the TASK_RUNNING (i.e., ready-to-run) state.
    
    
    TEST TIME The amount of time that this usex session has been running.
    
    
    PAGE-IN PAGE-OUT The number of pages that the system paged in, followed by the number that were paged out (from disk).
    
    
    FREEMEM The amount of free physical memory in the system.
    
    
    FREESWAP The amount of free swap space on the system.
    
    
    CSW The total number of context switches that took place on all of the system's CPUs.
    
    
    INTR The total number of interrupts that took place on all of the systems CPU's.
    
    
    SWAP-IN SWAP-OUT The number of pages that the system swapped in, followed by the number that were swapped out (from disk).
    
    
    BUFFERS The amount of physical memory consumed by the system's buffer cache.
    
    
    CACHED The amount of physical memory consumed by the system's page cache.
    
    
    FORKS The number of tasks that were forked.
    
    
    » Command Box
    The usex window manager constantly monitors for runtime interactive command input from the user. It interacts with the keyboard in "raw" mode, and therefore a <RETURN> is only required when necessary.

    When the first character of a user command is entered, a new box, called the "command box", is opened. The command box is located in the middle of the line of asterisks separating the test data from the system statistics. Then:

    1. The character entered by the user is displayed.
      
      
    2. If the character is one of the following one-character commands:
          k  q  h  d  f  F  m  M  i  s
      
      then the command will be executed immediately.
      
      
    3. If the character is not one of those listed above, the command box remains "open", which means that the cursor will be positioned immediately to the right of the entered character. Test data and system statistics will continue to be updated, but the cursor will return to same location in the command box.
      
      
    4. This character-by-character process continues until a command-completing character, or a <RETURN> is entered.

      Commands that do not require a <RETURN> are:

          tb  th  tk   t<testnum>b  t<testnum>k  t<testnum>h
          t<testnum>i  t<testnum>m  rk
      

      Commands that do require a <RETURN> are:

          ![command]  <RETURN>  t  t<testnum>  r
      
    5. The command entered will then be executed.
      
      
    6. Upon completion of the command, the command box will be "closed", meaning that the cursor will no longer be positioned after the last character entered. However, the contents of the command box will remain on the display screen.
      
      
    7. As soon as the next user command is initiated with a new character, the previous command string will be deleted, and control returns back to step 1.
    For example, here is a usex -b session, which imposes a fairly high load factor on the system. In order to give the system a breather, all of the tests can be temporarily put "on hold" with the th command. Before entering any characters, the display screen looks like this:
    usex
    ********************************************************************************
    *  ID  BSIZE  MODE   POINTER   OPERATION         FILE NAME         PASS  STAT  *
    *  --  -----  ----  ---------  ---------  -----------------------  ----  ----  *
    *   1  /usr/bin/rdate  [                                        ]    47  BKGD  *
    *   2  /bin/df  [                                               ]    47  BKGD  *
    *   3  /bin/ps  [                                               ]    47  BKGD  *
    *   4  /usr/sbin/ab  [                                          ]    49  BKGD  *
    *   5  /bin/usleep  [                                           ]    48  BKGD  *
    *   6  /bin/fgrep  [                                            ]    46  BKGD  *
    *   7  /bin/sleep  [                                            ]    51  BKGD  *
    *   8  /bin/sort  [                                             ]    49  BKGD  *
    *   9  /usr/bin/uptime  [                                       ]    49  BKGD  *
    *  10  /usr/bin/nroff  [                                        ]    49  BKGD  *
    *  11  /usr/bin/odvips  [                                       ]    48  BKGD  *
    *  12  /usr/bin/cdp  [                                          ]    50  BKGD  *
    ********************************************************************************
    *  Unix System EXerciser  *  USER SYSTEM IDLE  LOADAVG  TASKS/RUN   TEST TIME  *
    *    USEX Version 1.7     *   56%   44%    0%   11.76     110/15    000:44:17  *
    *                         *                                                    *
    *     anderson - i686     *  PAGE-IN PAGE-OUT  FREEMEM  FREESWAP   CSW   INTR  *
    *   Linux 2.2.5-15smp2    *     0       0       5.9 mb   117 mb    1708   818  *
    *                         *  SWAP-IN SWAP-OUT  BUFFERS   CACHED   FORKS        *
    *    10May01  15:45:42    *     0       0       2.6 mb  39.9 mb    138         *
    ********************************************************************************
    
    Upon entering "t", the command box opens, displays the "t" followed by the cursor, and waits for a command-completion character:
    usex
    ********************************************************************************
    *  ID  BSIZE  MODE   POINTER   OPERATION         FILE NAME         PASS  STAT  *
    *  --  -----  ----  ---------  ---------  -----------------------  ----  ----  *
    *   1  /usr/bin/gsdj500  [                                      ]    47  BKGD  *
    *   2  /bin/doexec  [                                           ]    48  BKGD  *
    *   3  /bin/csh  [                                              ]    47  BKGD  *
    *   4  /usr/bin/man  [                                          ]    49  BKGD  *
    *   5  /usr/bin/less  [                                         ]    48  BKGD  *
    *   6  /usr/bin/unbuffer  [                                     ]    47  BKGD  *
    *   7  /usr/bin/zgrep  [                                        ]    51  BKGD  *
    *   8  /usr/bin/man  [                                          ]    49  BKGD  *
    *   9  /bin/doexec  [                                           ]    49  BKGD  *
    *  10  /usr/bin/lesskey  [                                      ]    49  BKGD  *
    *  11  /usr/bin/zgrep  [                                        ]    48  BKGD  *
    *  12  /usr/bin/netscape  [                                     ]    50  BKGD  *
    *************************************[ t_ ]*************************************
    *  Unix System EXerciser  *  USER SYSTEM IDLE  LOADAVG  TASKS/RUN   TEST TIME  *
    *    USEX Version 1.7     *    0%    2%   97%   11.95     124/2     000:44:24  *
    *                         *                                                    *
    *     anderson - i686     *  PAGE-IN PAGE-OUT  FREEMEM  FREESWAP   CSW   INTR  *
    *   Linux 2.2.5-15smp2    *     0       0       6.3 mb   117 mb    763    682  *
    *                         *  SWAP-IN SWAP-OUT  BUFFERS   CACHED   FORKS        *
    *    10May01  15:45:49    *     0       0       2.6 mb  37.4 mb     0          *
    ********************************************************************************
    
    Test data and system statistics will continue being updated while the window manager waits for the next character. Upon entering the command-completing "h" character, all tests are immediately put on hold, as evidenced by their STAT fields changing from BKGD to HOLD:
    usex
    ********************************************************************************
    *  ID  BSIZE  MODE   POINTER   OPERATION         FILE NAME         PASS  STAT  *
    *  --  -----  ----  ---------  ---------  -----------------------  ----  ----  *
    *   1  /bin/mail  [                                             ]    47  HOLD  *
    *   2  /usr/bin/od  [                                           ]    48  HOLD  *
    *   3  /bin/usleep  [                                           ]    47  HOLD  *
    *   4  /usr/bin/man  [                                          ]    49  HOLD  *
    *   5  /bin/chmod  [                                            ]    48  HOLD  *
    *   6  /usr/bin/man  [                                          ]    47  HOLD  *
    *   7  /usr/bin/zdiff  [                                        ]    51  HOLD  *
    *   8  /usr/bin/weave  [                                        ]    49  HOLD  *
    *   9  /usr/bin/rcsdiff  [                                      ]    50  HOLD  *
    *  10  /usr/bin/hexdump  [                                      ]    49  HOLD  *
    *  11  /usr/bin/guile  [                                        ]    48  HOLD  *
    *  12  /bin/nice  [                                             ]    50  HOLD  *
    *************************************[ th ]*************************************
    *  Unix System EXerciser  *  USER SYSTEM IDLE  LOADAVG  TASKS/RUN   TEST TIME  *
    *    USEX Version 1.7     *   12%   10%   78%   12.04      96/3     000:44:32  *
    *                         *                                                    *
    *     anderson - i686     *  PAGE-IN PAGE-OUT  FREEMEM  FREESWAP   CSW   INTR  *
    *   Linux 2.2.5-15smp2    *     0       0       9.6 mb   117 mb    1074   574  *
    *                         *  SWAP-IN SWAP-OUT  BUFFERS   CACHED   FORKS        *
    *    10May01  15:45:57    *     0       0       2.6 mb  37.4 mb     0          *
    ********************************************************************************
    
    The command box closes, although the "th" command string will remain displayed until the next command is entered. Follow the "details" links from the interactive commands page for more examples.
    » Status Box
    Another normally-invisible data field is the status box. It is located in the middle of the last line of asterisks on the display screen. It is used to relay status information to the user as the result of:
  • an interactive command.
  • non-fatal usex-related error messages.
  • informative messages that indicate what the window manager is doing during session shutdown.
  • For example, the runtime F command saves the default input file, and informs the user of its name in the status box:
    usex
    ********************************************************************************
    *  ID  BSIZE  MODE   POINTER   OPERATION         FILE NAME         PASS  STAT  *
    *  --  -----  ----  ---------  ---------  -----------------------  ----  ----  *
    *   1   8192  Fill                        /usr/tmp/ux009798_01        1  BKGD  *
    *   2   8192  Fill                        /usr/tmp/ux009798_02        1  BKGD  *
    *   3   8192  Fill                        /usr/tmp/ux009798_03        1  BKGD  *
    *   4   8192  Fill                        /usr/tmp/ux009798_04        1  BKGD  *
    *   5   8192  Fill                        /home/ux009798_05           1  BKGD  *
    *   6   8192  Fill                        /home/ux009798_06           1  BKGD  *
    *   7   8192  Fill                        /home/ux009798_07           1  BKGD  *
    *   8   8192  Fill                        /home/ux009798_08           1  BKGD  *
    *   9  /usr/bin/patch  [                                        ]     1  BKGD  *
    *  10  /bin/nice  [                                             ]     1  BKGD  *
    *  11  /usr/bin/od  [                                           ]     1  BKGD  *
    *  12  25 mb random            10.1 mb    virtual memory test            BKGD  *
    *************************************[ F ]**************************************
    *  Unix System EXerciser  *  USER SYSTEM IDLE  LOADAVG  TASKS/RUN   TEST TIME  *
    *    USEX Version 1.7     *   67%   10%   22%    4.32     103/4     000:00:17  *
    *                         *                                                    *
    *     anderson - i686     *  PAGE-IN PAGE-OUT  FREEMEM  FREESWAP   CSW   INTR  *
    *   Linux 2.2.5-15smp2    *    535     233      2.6 mb   116 mb    1592  1256  *
    *                         *  SWAP-IN SWAP-OUT  BUFFERS   CACHED   FORKS        *
    *    10May01  16:26:58    *     0       0       2.6 mb  18.3 mb     19         *
    *********************[ input file: /tmp/ux009798 (saved) ]**********************
    
    During the shutdown of a usex session, several messages will be temporarily displayed in the status box. Here is a shutdown example, in which the window manager is in the act of killing all of the tests:
    usex
    ********************************************************************************
    *  ID  BSIZE  MODE   POINTER   OPERATION         FILE NAME         PASS  STAT  *
    *  --  -----  ----  ---------  ---------  -----------------------  ----  ----  *
    *   1   8192  Fill                        /usr/tmp/ux024930_01        1 <DEAD> *
    *   2   8192  Fill                        /usr/tmp/ux024930_02        1 <DEAD> *
    *   3   8192  Fill                        /usr/tmp/ux024930_03        1 <DEAD> *
    *   4   8192  Rate             read[34%]  /usr/tmp/ux024930_04        1 <DEAD> *
    *   5  454545 dhrystones/second           dhrystone benchmark        16 <DEAD> *
    *   6                          Loop N1..  whetstone benchmark         1 <DEAD> *
    *   7  19 mb random            11.5 mb    virtual memory test           <DEAD> *
    *   8  19 mb random            11.4 mb    virtual memory test           <DEAD> *
    *   9  19 mb sequential        21.3 mb    virtual memory test           <DEAD> *
    *  10  /usr/bin/splash  [                                       ]     1 (WAIT) *
    *  11  /bin/cp  [                                               ]     1 (WAIT) *
    *  12  /usr/bin/nroff  [                                        ]     1 (WAIT) *
    ********************************************************************************
    *  Unix System EXerciser  *  USER SYSTEM IDLE  LOADAVG  TASKS/RUN   TEST TIME  *
    *    USEX Version 1.7     *   96%    4%    0%    9.23      90/8     000:00:50  *
    *                         *                                                    *
    *     anderson - i686     *  PAGE-IN PAGE-OUT  FREEMEM  FREESWAP   CSW   INTR  *
    *   Linux 2.2.5-15smp2    *    1895     64      1.5 mb   110 mb    705    592  *
    *                         *  SWAP-IN SWAP-OUT  BUFFERS   CACHED   FORKS        *
    *     4May01  12:41:04    *    180      0       2.6 mb  18.8 mb     5          *
    ***************************[ killing all tests... ]*****************************
    
    Finally, here is an example of what happens when faulty user input is entered, such as trying to put a non-existent test number into the background display mode with the t<testnum>b command:
    usex
    ********************************************************************************
    *  ID  BSIZE  MODE   POINTER   OPERATION         FILE NAME         PASS  STAT  *
    *  --  -----  ----  ---------  ---------  -----------------------  ----  ----  *
    *   1  /bin/netstat  [Kernel IP routing table                   ]     1   OK   *
    *   2  /usr/bin/look  [lookahead                                ]     1   OK   *
    *   3  /usr/bin/cc  [/usr/bin/cc -o /tmp/ux013342_tmp/ux013342_0]     1   OK   *
    *   4  /usr/bin/file  [/usr/bin/file: ELF 32-bit LSB executable,]     1   OK   *
    *   5  /usr/sbin/nfsstat  [calls      badcalls   badauth    badc]     1   OK   *
    *   6  /usr/bin/printenv  [CVSROOT=/nfs/projects/cvsroot        ]     1   OK   *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    *                                                                              *
    ************************************[ t7b ]*************************************
    *  Unix System EXerciser  *  USER SYSTEM IDLE  LOADAVG  TASKS/RUN   TEST TIME  *
    *    USEX Version 1.7     *   52%   23%   24%    1.46     100/4     000:00:10  *
    *                         *                                                    *
    *     anderson - i686     *  PAGE-IN PAGE-OUT  FREEMEM  FREESWAP   CSW   INTR  *
    *   Linux 2.2.5-15smp2    *    367     194      3.1 mb   113 mb    3363  1230  *
    *                         *  SWAP-IN SWAP-OUT  BUFFERS   CACHED   FORKS        *
    *    10May01  16:41:48    *     0       0       2.6 mb  44.9 mb     40         *
    *****************************[ invalid input: t7b ]*****************************