Using Strobe for z/OS UNIX System Services
Strobe for z/OS UNIX System Services enables you to measure applications that call z/OS UNIX System Services. You can find detailed instructions for submitting measurement requests in the Strobe/ISPF Online Tutorials and the Using-Strobe-to-measure-online-applications-and-batch-programs. There are a few special considerations to keep in mind when submitting measurement requests in a z/OS UNIX System Services environment. This chapter discusses how to create a Strobe Performance Profile in the context of these considerations.
Measuring the Application
With Strobe, you can measure applications that run as batch jobs, use TSO, or execute in online regions. This section describes how to measure applications executing in the z/OS UNIX System Services environment. Strobe reports on the CPU usage and wait times in the form of the Performance Profile.
Measuring an Active Job
To measure an active job, complete the following steps:
Select Option 1 (ADD ACTIVE) from the Strobe Options menu. The Strobe - Add Active Request panel (see the following figure) is displayed.Strobe - Add Active Request Panel
- Specify the target system in the SYSTEM field or clear this field to select from a list of systems.
Perform one of the following steps:
- Specify the target job step in the JOBNAME field. If you are submitting shell commands or shell scripts from TSO, enter the TSO ID.
- Clear the JOBNAME field and type J to view all active jobs, P to view all active processes, or A to view Java agents. Press Enter.
If you specified J, the Strobe - Active Job Selection List panel is displayed. This panel lists all active jobs on the system. Type S to the left of the job to select it for measurement. Press Enter. Continue at step 4.
If you specified P, the Strobe - Active Process Selection List panel is displayed (Strobe - Active Process Selection List Panel). The following fixed fields provide additional information for the process:
PID: Process identification number
LVL: Level in the process hierarchy in which the process resides
PGPID: Process group identification number
USER: Creator of processes listed in the JOBNAME field.
If you specified A, the Strobe - Active JAVA Agent Selection list panel is displayed.
Type S to the left of the desired process to select it for measurement. Press Enter.
Strobe - Active Process Selection List Panel
- Configure the measurement session by specifying the following information on the Strobe - Add Active Request panel (Strobe - Add Active Request Panel):
- Estimated run time in the SESSION DURATION field
- How many measurement samples you want Strobe to take in the TARGET SAMPLE SIZE field
- The TSO user ID in the TSO USER ID TO NOTIFY field. Strobe notifies this user ID when the measurement request is complete.
- Specify the sample data set information in the SAMPLE DATA SET INFORMATION fields.
Specify any additional measurement options by typing Y in the corresponding field and then pressing Enter. You can do the following:
- Specify special data collectors
- Specify additional module mapping facilities
- Add session management parameters
- Request a retention time frame.
Strobe then displays the selected panels.
- When you press Enter on the last panel, Strobe submits the measurement request.
Refer to the Using-Strobe-to-measure-online-applications-and-batch-programs for more information on these measurement options.
Changing the Format of the Strobe - Active Process Selection List Panel
To change the order of fields or add additional fields appearing on the Strobe- Active Process Selection List panel, type Y in the Change Display Format field. The Strobe - Active Process Display Format panel is displayed. Put the fields in order by numbering them in the Display Order column. The PID, LVL, PGPID, and USER fields are fixed and always appear as the first four fields of the Strobe - Active Process Selection List panel, as shown in Strobe - Active Process Selection List Panel.
Limiting Processes on the Strobe - Active Process Selection List Panel
The processes displayed on the Strobe - Active Process Selection List panel can be limited by specifying job name or user name criteria on the Strobe - Limit Active Process List panel (Strobe - Limit Active Process List Panel). To access this panel, enter Y in the Change List Limits field on the Active Process Selection List panel (Strobe - Active Process Selection List Panel) and press Enter.
Filter the active processes to be displayed by entering either or both of the following:
- Job name or prefix followed by an asterisk (*)
- User name or prefix followed by an asterisk.
When you press Enter, the Strobe - Limit Active Process List panel will appear again with only those processes listed that meet the specified criteria.
Strobe - Limit Active Process List Panel
Measuring a Job That Is Not Yet Executing
To add a measurement request for a job step that is not yet executing, select Option 2 (ADD QUEUED) from the Strobe Options menu.
For additional information on Strobe enhanced reporting for programs executed via BPXBATCH, see Measuring a Job That Is Not Yet Executing for BPXBATCH.
Complete the following information in the Strobe - Add Queued Request panel (Strobe - Add Queued Request Panel):
- Specify the name of the target job in the JOBNAME field.
- Identify the target job in the PROGRAM or STEP field according to what you want to measure. To specify a job by its program name, enter the name as it appears in the PGM= operand of the EXEC statement.
- Specify the target system in the SYSTEM field or clear this field to select from a list of systems.
- Configure the measurement session by specifying:
- Estimated run time in the SESSION DURATION field
- How many measurement samples you want Strobe to take in the TARGET SAMPLE SIZE field
- TSO user ID in the TSO USER ID TO NOTIFY field. Strobe notifies this user ID when the measurement request is complete.
- Specify the sample data set information in the SAMPLE DATA SET INFORMATION fields.
- Specify any additional measurement options by typing Y in the corresponding field and then pressing Enter. You can:
- Specify special data collectors
- Specify additional module mapping facilities
- Add session management parameters
- Request a retention time frame.
Strobe displays the selected panels.
- When you press Enter on the last panel, Strobe submits the measurement request.
Strobe - Add Queued Request Panel
The next section, Measuring a Job That Is Not Yet Executing for BPXBATCH, describes how Strobe’s BPXBATCH measurement support enables Strobe to report on activity in significant executable processes that run in separate address spaces under BPXBATCH or AOPBATCH. Strobe will not provide this information if:
- BPXBATCH measurement support is not enabled. To enable it, ensure that Strobe is installed with BPXBATCH=YES in the Strobe parameter data set.
- You specify PROGRAM as other than BPXBATCH or AOPBATCH.
In these instances, Strobe will measure and report on activity in the single address space in which the measured program runs.
To measure significant executable processes spawned or forked by z/OS UNIX System Services into different address spaces, add several identical Add Queued requests for the same job/program/step/number. Each new address space created for the job will be measured by one of these requests, and some of them will measure significant executable processes. (The others will be insignificant measurements, for example, measurement of shell commands.)
To measure processes run under your TSO user ID (for example, from a UNIX shell) submit an Add Active measurement request for your TSO user ID. Then issue the commands to run the processes. The resulting measurement will include all activity in your TSO user ID address space.
Refer to the Using-Strobe-to-measure-online-applications-and-batch-programs for more information on submitting an Add Queued request.
Measuring a Job That Is Not Yet Executing for BPXBATCH
You can submit an Add Queued request for any address space that is running z/OS UNIX System Services. However, Strobe provides enhanced measurement support for z/OS UNIX System Services processes issued via BPXBATCH or AOPBATCH. These jobs can run in multiple address spaces. For these measurement requests, Strobe can identify and measure all significant executable processes, in any address space.
You must specify BPXBATCH=YES (the default) in the Strobe installation PARMLIB.
To capture extended BPXBATCH measurement data, submit an Add Queued request as described in Measuring a Job That Is Not Yet Executing, with the following additional requirements:
- Specify the name of the target job in the JOBNAME field. The value must be exactly 8 characters in length.
- Specify PROGRAM as BPXBATCH or AOPBATCH.
- Optionally, specify a value for STEP. The value must meet these conditions:
- It cannot be named STEP1. STEP1 is used by IBM as an internal stepname for z/OS UNIX System Services.
- It is a single step name. You cannot specify a list of steps
- You can specify STEP=*ALL, but *ALL does not support mixed USS and non-USS steps. If the JCL has mixed steps, then you must use STEPNAME or PROGRAM name. Also, the JOBNAME is required to be 8 characters.
When you submit a request that meets these requirements, Strobe creates one measurement request to act as a template request for each significant executable process that runs under BPXBATCH or AOPBATCH, to a limit of twenty.
As each significant executable process becomes active, Strobe copies the template request and adds an active request (with the same options) for the process. The template request is never used for an actual measurement session. When all of the processes have been measured (to the limit of twenty), Strobe marks the template request complete.
Viewing Measurement Status for BPXBATCH Programs
When viewing the measurement status of Strobe BPXBATCH support requests, you will see active requests for all significant executable processes running under BPXBATCH, as they become active. The template request, the original request you submitted to measure BPXBATCH, remains queued until the job is complete.
Strobe- Status Panel Showing BPXBATCH Requests
In this example, request number 531 is the template. Request 532 was a copy of that request created to measure a process running under BPXBATCH which has completed. Request number 533 shows a process that is still being measured.
Details about the request used as a template, the new request numbers, and the executable process commands that were measured are available in the Strobe log.
For non-BPXBATCH programs, you will see only one entry on the STATUS panel for the measurement request.
Creating the Performance Profile
Once you have the information you need (the sample data set and, optionally, the map data sets), you can create a Performance Profile for the application.
You have three options for creating a Performance Profile with Strobe/ISPF:
- Create a Performance Profile automatically when submitting a measurement request for an active or queued request.
Type Y in the AUTO PROFILE CREATION field on the Strobe - Add Active Request panel or the Strobe- Add Queued Request panel.
- Create a Performance Profile from the Strobe Options menu.
Select Option 4 (PROFILE) from the Strobe Options menu. Strobedisplays the Strobe- Produce a Performance Profile panel, where you can specify options for the Performance Profile.
- Create a Performance Profile from the Strobe- Status panel.
Type P to the left of a completed measurement request number on the Strobe- Status panel. Strobe displays the Strobe - Produce a Performance Profile panel, where you can specify options for the Performance Profile.
For more information about creating a Performance Profile and code block detailed reporting, refer to the Using-Strobe-to-measure-online-applications-and-batch-programs.
Controlling the Level of Detail in the Performance Profile
By specifying certain Strobe options, you can either compress or expand the level of detail of the reports in the Performance Profile.
You can control the size of the reports by specifying certain parameters when you create the Performance Profile. For example, on a number of reports, you can specify a minimum percentage of activity that must occur for a procedure or cylinder to appear as an individual line on the report. If the minimum percentage is not attained, contiguous procedures or cylinders are condensed on a single line in the report. The lower the number that you specify, the greater the level of detail in the reports.
The following reports have minimum percentage options:
- Program Usage by Procedure
- DASD Usage by Cylinder
- Transaction Usage by Control Section
- Attribution.
You can also break the reports into manageable sections by specifying the report resolution; that is, the number of bytes to be considered a codeblock for detailed reporting. Once again, the lower the number you specify, the greater the level of detail in the reports. For more information, refer to the Using-the-Strobe-Application-Performance-Measurement-System or the Using-Strobe-to-measure-online-applications-and-batch-programs.
Creating a Profile That Relates CPU Activity with Source Statement Text
For C/C++ applications that call z/OS UNIX System Services, Strobe for z/OS UNIX System Services can associate CPU activity to specific statement numbers. The process of creating this association is called indexing. Indexing of C programs is done with DDIO files. The remainder of this section deals specifically with C++. Associating the reported statement number with the source code text is a four-step process. You must do the following:
- Create a compiler listing data set
- Create a map data set from the compiler listing data set
- Edit the map data set
- Create the Performance Profile, providing the map data set as input.
Since you do not need this level of detail for all modules, first create a Performance Profile without providing any map data sets as input. Then review the Performance Profile to determine the modules for which you want to see statement-specific information. You need to create map data sets only for the modules in which you are interested.
The following sections describe how to create a C++ compiler listing data set with the appropriate compile options, and how to create the map data set. For detailed information on this process, refer to the Using-Strobe-to-measure-online-applications-and-batch-programs.
Create the Compiler Listing Data set
If you are interested in viewing C++ statement and line number information, you must provide a compiler listing data set with the appropriate compile options.
To prepare a C++ compiler listing data set, first compile the C++ application. Set the environmental variable to CXX_STEPS = 0Xffffffff to force the use of the Prelinker option, as shown in the following example:
_CXX_STEPS=0xffffffff
c++ \
-v \
-W 0,list,source,csect \
-W 1,p,map \
-W 1,map,list \
myprog.C \
1>myprog.list \
2>myprog.err \
&
Next, convert the compiler listing data set to an MVS sequential file using the following DCB characteristics, VBA, LRECL=137. Once you create the compiler listing data set, you are ready to create the map data set, as described in the following sections.
Create the Map Data set
After you have a compiler listing data set, your next step is to create a map data set. A map data set is a repository for the information required to relate addresses in the object code with statements in the source program.
To create a map data set, select Option 5 (INDEX) from the Strobe Options menu and press Enter. Strobe displays the Strobe- Index to Create a Map data set panel.
To complete the Strobe indexing procedure, specify the following:
- Y in the C++ language field
- Name of the map data set in the OUTPUT: Map Data set field
- Name of the compiler listing data set in one of the INPUT: Compiler SYSPRINT Data sets fields.
Edit the Map Data set
Edit the map data set only if a control section’s name is a longname or greater than eight characters. For all longnames, Strobe truncates these names to the first eight characters when creating the map data set. Strobe will not provide indexed information in the Performance Profile for the control section because it does not recognize the truncated name. To create an indexed Performance Profile, replace the truncated name with the Strobe-generated token name.
To edit the map data set:
- Determine the token Strobe uses to represent the truncated name by referring to the Token-Longname Cross Reference report (Token - Longname Cross Reference Report).
- For each longname, overwrite the truncated name in the map data set with the token from the Token-Longname Cross Reference report.
Create the indexed Performance Profile as described in the Using-Strobe-to-measure-online-applications-and-batch-programs.