


                           Optimizing Windows NT

                              Response Probe


1.  Overview

    This directory tree contains the Response Probe for the x86 and MIPS
    platforms.  The principle documentation for the Response Probe is in
    Appendix C of the book "Optimizing Windows NT."  This file explains
    what is on this floppy disk.


2.  Directory Organization

    This directory has three sub-directories.  "i386" contains the x86
    executable files, "MIPS" contains the MIPS executable files, and
    "EXAMPLE" contains an example of Response Probe usage.


3.  i386 & MIPS

    Depending on which platform you are on, you should add the
    corresponding directory to your path.  Alternatively, you can copy
    the files from the corresponding directory into a directory on your
    path.

    A.  Response Probe

        The file PROBE.EXE becomes the main controlling process for the 
        Response Probe.  The file PROBEPRC.EXE is the child process
        which actually applies the workload.  You should copy this file
        to files with different names in order to see multiple processes
        separately in Performance Monitor.  This techniques is discussed
        in Appendix C of "Optimizing Windows NT".  TIMERW32 and STATW32 
        are .dll's which are used by the Response Probe to perform timing
        functions.  PROBE, TIMERW32, and STATW32, as well as PROBEPRC and
        any copies of it you have made under new names, must all be on your 
        PATH in order for the Response Probe to run.

    B.  CREATFIL

        The CREATFIL utlity creates a file of arbitrary size filled with
        binary zeros.  You specify the file size you need in kilbytes, 
        where 1 kilobyte is equal to 1024 bytes.

        Usage:

            creatfil  <NewFileName>  <size in kbytes>

	Example:

            creatfil  access.dat  1024

	This example create a file called access.dat filled with 1 megabyte 
        of binary zero bytes.

    C.  WAIT

        WAIT is a simple utility used to pause execution of a test.  Such pauses 
        permit system functions such as the lazy writer to complete operation
        from a prior test before beginning a new one.  Wait will sound 5 beeps
        at the start of the pause, and one at the end.  This will help you 
        perform any manual activities you might need to carry out during the
        pause.  The beep time is included as a portion of the pause time and
        does not add to it as long as the pause time is at least 3 seconds.

        Usage:

            wait  <pause time in seconds>              

4.  Example

    This example is a brief sample of how to set up and run a Response
    Probe experiment.  There is a batch file for running the
    experiment, and the parameter files are explained in Appendix C of
    the book.  All the above programs are used in this example.

    The example creates four processes.  They all have the name
    probeprc.  As explained in above, if you want to look at them
    separately in Performance Monitor, you must copy PROBEPRC.EXE to
    four new file names, and reference those in the *.SCR files
    instead of PROBEPRC.EXE.

    Each process creates four threads.

    Each thread has an average 1-second think time.  It does an
    average of 100 read/write operations, where each operation
    consists of an unbuffered read followed by an unbuffered
    write.  After each read/write pair, it does an average of 10
    milliseconds of computation.  During that time it references an
    average of 1 MB of "code" space and 1 MB of data space.  The file
    and code space are shared, but the data space is private to each
    of the four processes.

    This example uses many of the Response Probe features and should
    give you a good basis for devising whatever experiments you might
    need.

    Usage:

        doprobe [testtime]

    where "testtime" is the length of time to run each of the four
    record sizes ( the default is 5 minutes).
