Steps for tracing on zFS

If you are re-creating a problem and need to collect a zFS trace, use the following steps:

  1. Allocate the trace output data set as a PDSE, RECFM=VB, LRECL=133 with a primary allocation of at least 50 cylinders and a secondary allocation of 30 cylinders.
  2. Define the zFS trace output data set to zFS by either using the IOEFSPRM trace_dsn option, or dynamically by using the zfsadm config -trace_dsn command.

    If you use the IOEFSPRM option, zFS must be stopped and then restarted to pick up the change, unless you also dynamically activate the trace output data set with the zfsadm config -trace_dsn command.

  3. When you are ready to re-create the problem, reset the zFS trace table using the MODIFY ZFS,TRACE,RESET command.
  4. Re-create the problem.
  5. Enter the MODIFY ZFS,TRACE,PRINT command. This formats and prints the trace table to the PDSE defined on the trace_dsn option.
  6. Capture the ZFSKNTnn member from the trace output data set, (for example, copy it to a sequential data set) so that it can be sent to IBM® service.

A separate trace output data set is required for each member of a sysplex.

  1. Ensure that you set up the trace data sets so that each system in the sysplex can write to its own trace output data set concurrently. This requires separate IOEFSPRM files or the use of system symbols in the trace_dsn name or the use of an IOEPRMxx parmlib member. For more information, see Using zFS in a shared file system environment.
  2. Allocate the data set as a PDSE, RECFM=VB, LRECL=133 with a primary allocation of at least 50 cylinders and a secondary allocation of 30 cylinders. Each trace output is created as a new member with a name of ZFSKNTnn, where nn starts at 01 and increments for each trace output until zFS is restarted. After restart, when the next trace output is sent to the trace output data set, ZFSKNT01 is overlaid. You should not be accessing the trace output data set while a trace is being sent to the trace output data set. The space that is used by a particular trace depends on how large the trace_table_size is and how recently the trace was reset. For example, a 32-MB trace_table_size can generate a trace output member of 100 cylinders of 3390. It is important that the trace output data set be large enough to hold the trace output. If it runs out of room while sending the trace to the trace output data set, the complete trace will not be captured.
    Note: You can have a trace_table_size up to Start of change65535 MBEnd of change, but to print the trace to a PDSE you must limit its size to 750 MB.
IBM service might require you to trace more events. Additional trace information can be obtained using the following methods:
  • Add events to trace by specifying the ioedebug statements in a data set that is read when zFS is started (or restarted). The data set name is specified in the IOEFSPRM debug_settings_dsn option. It is a PDS member with an LRECL of at least 80. IBM specifies the exact statements needed in the data set.
  • Dynamically add the events to trace by entering the MODIFY ZFS,IOEDEBUG command. IBM specifies the exact statements needed.
  • If you were not able to capture the trace, but you have a zFS dump, IBM service can obtain the trace from the dump. To obtain a dump, you can issue a MODIFY ZFS command. See Understanding zFS dumps for additional information.

The zFS trace table is above the 2-GB bar to avoid consuming space in the zFS address space, which is below the bar.