WindowsXP/Source/XPSP1/NT/sdktools/profile
2024-08-03 16:30:48 +02:00
..
makefile Initial commit 2024-08-03 16:30:48 +02:00
profile.c Initial commit 2024-08-03 16:30:48 +02:00
profile.rc Initial commit 2024-08-03 16:30:48 +02:00
readme.txt Initial commit 2024-08-03 16:30:48 +02:00
sources Initial commit 2024-08-03 16:30:48 +02:00

                    Installing and Using 
                        Profile.exe
                Windows NT Sampling Profiler  


                                                    Windows NT v4.0

Overview:

The Windows NT Sampling Profiler is an easy to use tool that records
the how often each function of an application is called during the
course of that application. 


Installation:

Required Files:
    PROFILE.EXE     Windows NT Sampling Profiler
        Installed from the SDK
    PSAPI.DLL       Process Support API Library
        Installed from the SDK

Before trying to use the Sampling Profile make sure the required
files listed above are in the path. 

Use:

    Required Environment Variables:

    The Sampling profiler must have access to the image's symbols 
    in order to produce the most meaningful output. The sybmols 
    are searched in the path described by the 

        _NT_SYMBOL_PATH

    environment variable. Be sure to set this variable to the 
    correct path before attempting the profile.


    Command Line Arguments:

    Usage: profile [/a] [/innn] [/k] name-of-image [parameters]...
       /a       All hits
       /bnnn    Set profile bucket size to 2 to the nnn bytes
       /ffilename Output to filename
       /innn    Set profile interval to nnn (in 100ns units)
       /k               profile system modules
       /s[profilesource] Use profilesource instead of clock interrupt
       /S[profilesource] Use profilesource as secondary profile source

    /a 
        will display ALL hits or addresses that were sampled during 
        the test run. Normally the hits are summarized by function.

    /bnnn
        Sets the profile bucket size (in bytes) to use. The default 
        is 4 bytes. This determines the sample address granularity.

    /ffilename
        set the output file that is produced when the sampled program
        terminates. The defalt for this is "profile.out"

    /innn  
        Sets the sample interval in 100 nS units. The default value
        is 488.2 microseconds (or /i4882)

    /k
        allows processing of system functions that are called by
        the process being profiled. Normally on the the user mode
        functions of the process are profiled.

    /sprofilesource
        changes the profile sample interrupt from the clock interrupt
        to another source. This option is not supported on all 
        platforms, however.

        ALPHA Options:
            align
            totalissues
            pipelinedry
            loadinstructions
            pipelinefrozen
            branchinstructions
            totalnonissues
            dcachemisses
            icachemisses
            branchmispredicts
            storeinstructions

        MIPS options:
            align

    /Sprofilesource
        same options as above only this selects the secondary profile
        interrupt source


    Sample Command Lines:

        profile myprog.exe

            profiles the program "myprog.exe" using the default
            settings and monitoring only the user mode functions. 
            The output is written to the default filename of 
            "profile.out" in the default directory.

        profile /k /fMyProg.dat myprog.exe

            profiles the program "myprog.exe" using the default
            settings and monitoring both the user mode and the
            kernel mode functions executed by this process
            The output is written to the user specified filename
            of "MyProg.dat" in the default directory.

While the program being profiled runs, the instruction pointer is being 
sampled periodicaly and profile records the value of the instruction 
pointer each time the sample occurs inside the profiled process. When the
program terminates the recorded address values are looked up in the symbol
files to determine the function being run at the time. The tabulation 
of the results is then output to the specified, or default, filename.

The output consists of 3 comma separated fields. The first field is the 
number of times a sample occured in the function. The second field is the 
name of the module containing that function and the third field is the
name of the function within the module followed by it's virtual 
address. In a verbose listing each of these function entries is followed 
by a listing of the actual addresses that were sampled.