A - Page 1 - ---------------------------------------------------------------------- | README file for IORM V5.0A and V6.0A | | | | Version 03.11.2006 | ---------------------------------------------------------------------- This README file describes the functionality of the BS2000 IORM subsystem (I/O Resource Manager). A - Page 2 - Contents -------- 1 General . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1 Installing IORM . . . . . . . . . . . . . . . . . . . . . 4 1.2 Starting IORM . . . . . . . . . . . . . . . . . . . . . . 5 1.3 IORM statements . . . . . . . . . . . . . . . . . . . . . 5 2 Components of an I/O Configuration . . . . . . . . . . . 6 2.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Generation . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 I/O tables in BS2000 . . . . . . . . . . . . . . . . . . 9 2.4 Executing an I/O in BS2000 . . . . . . . . . . . . . . . 9 2.5 I/O tables in IORM . . . . . . . . . . . . . . . . . . . 9 3 IOPT - I/O Priority Handling for Tasks . . . . . . . . . 10 3.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 IOPT settings . . . . . . . . . . . . . . . . . . . . . . 12 3.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . 26 3.4 IOPT appendix . . . . . . . . . . . . . . . . . . . . . . 27 4 DPAV - Dynamic Parallel Access Volume . . . . . . . . . . 32 4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . 32 4.2 DPAV settings . . . . . . . . . . . . . . . . . . . . . . 35 4.3 Example . . . . . . . . . . . . . . . . . . . . . . . . 37 4.4 DPAV appendix . . . . . . . . . . . . . . . . . . . . . . 38 5 DDAL - Dynamic Device Allocation . . . . . . . . . . . . 40 5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . 40 5.2 DDAL settings . . . . . . . . . . . . . . . . . . . . . . 40 6 IOLVM - I/O Limit for Virtual Machines . . . . . . . . . 41 6.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . 41 6.2 IOLVM settings . . . . . . . . . . . . . . . . . . . . . 41 6.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . 41 7 TCOM - Tape Compression . . . . . . . . . . . . . . . . . 42 7.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . 42 7.2 TCOM settings . . . . . . . . . . . . . . . . . . . . . . 43 8 Creating error documentation . . . . . . . . . . . . . . 44 9 Appendix . . . . . . . . . . . . . . . . . . . . . . . . 45 A - Page 3 - 1 General ------- The following functions are implemented in the BS2000 IORM subsystem for autonomous, I/O resources dynamic control (devices, controllers, channels, paths): IOPT - I/O Priority Handling for Tasks DPAV - Dynamic Parallel Access Volume DDAL - Dynamic Device Allocation IOLVM - I/O Limit for Virtual Machines TCOM - Tape Compression When it is started, IORM links into the BS2000 I/O system and gathers I/O data over it. Utilization of the I/O resources can be determined with this data. IORM periodically checks whether a controlling intervention into I/O operation is necessary/meaningful. Settings for I/O priorities, thresholds and devices can be set for IORM via a parameter file and in dialog. IORM is linked to the following BS2000 version: IORM V5.0A to BS2000 V14.0C IORM V6.0A to BS2000 V15.0B IORM supports both S and SX servers. In VM mode, IORM should be used on the monitor system and all guest systems. The subsystems exchange I/O data and control information over an internal VM interface. A prerequisite for this is at least VM2000/V8. There is no IORM connection between different S or SX servers. A - Page 4 - 1.1 Installing IORM --------------- IORM is installed with the installation monitor IMON. The IORM release unit consists of the following release items: IORM V5.0A: ---------- SYSLNK.IORM.050 IORM module library for S servers SPMLNK.IORM.050 IORM module library for SX servers SYSMES.IORM.050 Message file for IORM SYSSDF.IORM.050 SDF syntax file SYSSSC.IORM.050 Subsystem catalog SYSDAT.IORM.050 IORM parameter file SYSSII.IORM.050 Structure information SYSNRF.IORM.050 NOREF file SYSREP.IORM.050 SYSRMS.IORM.050 RMS delivery set SYSRME.IORM.050 README file IORM V6.0A: ---------- SYSLNK.IORM.060 IORM module library for S servers SPMLNK.IORM.060 IORM module library for SX servers SYSMES.IORM.060 Message file for IORM SYSSDF.IORM.060 SDF syntax file SYSSSC.IORM.060 Subsystem catalog SYSDAT.IORM.060 IORM parameter file SYSSII.IORM.060 Structure information SYSNRF.IORM.060 NOREF file SYSREP.IORM.060 SYSRMS.IORM.060 RMS delivery set SYSRME.IORM.060 README file For IORM the object corrections of release 2/2006 (December 2006) are presumed. For DPAV in VM monitor system with BS2000 V15.0B the optional correction A0536434-004 is additional required when operating BS2000/V13.0A guest systems on the same server. A - Page 5 - 1.2 Starting IORM ------------- Privileges required for IORM: TSOS or OPERATING. The IORM subsystem is loaded with /START-SUBSYSTEM IORM. The actions needed for IORM operation are executed with the first /START-IORM or /IORM call: set up tables, link to the BS2000 system, process the statements from the SYSDAT.IORM.050 or SYSDAT.IORM.060 parameter file under the user ID. The following IORM calls allow further settings to be passed to IORM. The statements can be input either directly in dialog or in the form of a file. Example: /START-SUBSYSTEM IORM /START-IORM Starts and initializes the IORM subsystem. Processes the statements from SYSDAT.IORM.050 or SYSDAT.IORM.060. The next evening: /ASSIGN-SYSDTA TO=SYSDAT.IORM.NIGHT /START-IORM Passes new settings to the already active IORM subsystem from the SYSDAT.IORM.NIGHT file. The next morning: /ASSIGN-SYSDTA TO=SYSDAT.IORM.DAY /START-IORM Passes new settings to the already active IORM subsystem from the SYSDAT.IORM.DAY file. 1.3 IORM statements --------------- An IORM statement consists of a string made up of letters and digits with no spaces. A comment line begins with "*". General statements: END Stops the IORM program. The IORM subsystem remains active with its functions. HELP Lists the IORM statements. IORM_DUMP Creates diagnostic documents. All further statements are described with the function concerned. A - Page 6 - 2 Components of an I/O Configuration ---------------------------------- 2.1 Overview -------- Device ------ A logical device or a logical volume in a disk or tape subsystem is referred to simply as a device in the following sections. A device in BS2000 is defined with either a 2 or a 4 character name. Channel device: a device connected to a channel. Emulated device: a device that is connected to a Host Bus Adapter (HBA) of an SX server and supported via an X2000 emulation. The IORM IOPT, DPAV and IOLVM functions only act on disks and the DDAL function acts only on tape devices. (Device) Controller ------------------- A controller regulates the I/O process for one or more devices. The controller is also responsible for handling the protocol with the channel. (Controller) Port ----------------- A port is part of a controller that represents, via a cable, the interface of the controller to the "outside world", e.g. to a host. A type S port that is connected dynamically via a type S director, is addressed with 2 hex characters, the so-called link address. This corresponds to the address of the port on the director to which the controller is connected. A type S port that is connected directly to a type S channel or is connected via a director with a static connection, does not require an additional address. A fibre channel port has an address comprising 16 hex characters, the WWPN (World Wide Port Name). Currently, up to 1024 devices (LUNs) can be connected to a type S port and up to 2048 to an FC port. Logical controller ------------------ A physical controller is a complete disk or tape subsystem. Disks and Controllers are nowadays generally installed in the same cabinet. Devices in a subsystem can be reached via one or more ports. A device in BS2000 can be defined on a maximum of 8 ports. A logical controller consists of a maximum of 8 ports with a maximum of 256 common devices. A logical controller on a type S channel has an address comprising 2 hex characters: 00 - 0F. A device is addressed via a link address, the address of the logical controller and the unit address. On the FC channel, all devices of a logical controller have the same high-order byte in the LUN (Logical Unit Number), e.g. LUN 0000 - 00FF or LUN 0300 - 03FF. Where the term controller is used in the following sections, a logical controller is meant. A - Page 7 - Channel ------- A channel is a hardware component on the host that represents the interface of the host to controllers or other hosts via a cable. The channel firmware is responsible for transferring the I/O commands and I/O data and for handling the relevant protocol. Type 2 channel: a channel connected via copper cable with a maximum data rate of 4.5 MB/s. Several controllers can be connected via "daisy chaining". Type S channel: a channel connected via fiber optics with a maximum data rate of 17 MB/s. Only one controller can be connected directly to a type S channel. Several controllers can be connected via a director. Fibre channel: a channel connected via fiber optics (also called host bus adapter on SX servers) with an appreciably higher data rate than the S type channel. Only one controller can be connected directly. Multiple controllers can be connected via fibre channel switch(es). Type FC channel: fibre channel on S servers with a transfer rate of 1 GB/s. Supported in BS2000 since V14.0B. (Channel) Path -------------- Connection between channel and controller. Type S director --------------- Autonomous hardware that allows multiple controllers to be connected to a type S channel or multiple type S channels to one controller port. A static connection must be set up between the ports of a director or a dynamic connection must be allowed in order for the communication between channel and controller to function. A maximum of two directors may be connected in series between channel and controller. Where a maximum of one dynamic connection may exist and a static connection must be set up on the other director. Fibre channel switch -------------------- Autonomous hardware that allows connection of multiple controllers to one fibre channel or multiple fibre channels to one controller port. Connection via "zoning" must be allowed for the communication between channel and controller to function. A - Page 8 - 2.2 Generation ---------- Static generation ----------------- Channel devices --------------- Channel devices are generated with the BS2000 tool IOGEN. Each device is assigned a name and a Unit Address (UA) or a LUN as well as one or more (maximum 8) controllers to which the device is "connected". A controller can be defined as required as a set of n (1<= n <= 8) ports with a maximum of 256 common devices. This controller is not to be confused with the logical controller described above. The logical controller is the grouping together of all controllers for a device. Each controller is assigned a name, with ESCON the number of the logical controller and n paths (1<= n <= 8). Each path, i.e. each port to channel connection is described by the address of the channel (channel path ID or CHPID) and by - a controller address for connection to a type 2 channel - a link address for connection via a type S director with a dynamic connection - a WWPN for connection to an FC channel. Each channel is defined via a CHPID. Type S director and FC switch do not require a generation statement. From the generation statements for the devices, controllers and channels, IOGEN creates a set of tables, called an IORSF, that must subsequently be transferred to the SVP HD of the target system. Using the IORSF, the channel subsystem creates the subchannel area during IMPL. Emulated devices ---------------- Emulated devices are generated with the X2000 WSA tool. Each device is assigned a name and a UA or LUN as well as a CHPID. An IORSF is only created on SX servers for the channel peripherals. Dynamic generation ------------------ On S servers, the I/O configuration can be changed during operation with the commands ADD-IO-UNIT, MODIFY-IO-UNIT and REMOVE-IO-UNIT. The changes have an immediate affect on the I/O tables in BS2000 and the active IORSF. Dynamically emulated devices can be added and removed on SX servers via WSA. BS2000 is informed of the changes via channel report. A - Page 9 - 2.3 I/O tables in BS2000 -------------------- The BS2000 I/O tables are created during IPL. The starting point for the channel peripherals is an IORSF. BS2000 obtains information about emulated devices from X2000. A PDT (Physical Device Table) entry is created for each device, a PCT (Physical Controller Table) entry for each controller and a CCT (Channel Control Table) entry for each channel. The entries contain generation data and space for control data. Each channel device has a relationship to one or more controllers (maximum 8) and each controller on the other hand, to one or more channels (maximum 8). A total of 8 channels are allowed per channel device. Each emulated device has connection to just one CCT entry, i.e. an emulated device always appears to have just one path for BS2000, even if several paths exist in reality. 2.4 Executing an I/O in BS2000 -------------------------- In the BS2000 I/O system, each device is represented with a table entry in the PDT. Each I/O order is forwarded by the relevant device driver in the form of a channel program to the I/O controller IOCNTRL for execution. If the PDT entry shows that the device is inactive, the I/O order is started. Any further I/O orders for this device are then placed in the device wait queue by IOCNTRL. When the device is no longer active, the next order is taken from the wait queue and started. I/O orders for different devices can be started concurrently. Over one channel, one path, one port, a number of I/Os can therefore be active concurrently. In VM mode, I/Os for 'shared' devices are serialized by BS2000, while the BS2000 I/Os for 'exclusive' devices go directly to the hardware. With PAV (Parallel Access Volume), several I/Os are possible concurrently on one disk. This also applies for emulated disks on SX servers as of BS2000 V15.0B. When starting an I/O, task priorities are not taken into account in either the BS2000 or the VM2000 I/O system. 2.5 I/O tables in IORM ------------------ When the IORM subsystem is started, table entries are created for devices, controllers, ports, paths and channels. IORM obtains the necessary data for this from the BS2000 I/O system. No additional generation is therefore required for IORM. A - Page 10 - 3 IOPT - I/O Priority Handling for Tasks -------------------------------------- 3.1 Overview -------- Less important but I/O intensive applications can have massive effects on other, much more important, applications. Conflicts can arise when these applications execute I/Os on a) the same (logical) device or on different (logical) devices that b) lie on the same physical device c) are connected over the same paths d) are reachable over the same ports e) are connected to the same channels. IORM can detect such conflict situations and actively intervene in the I/O operation. To this end, three I/O priorities for tasks were introduced for IORM: HIGH, MEDIUM and LOW. The priorities can be set via the IORM statements IOPT_PRI_HIGH and IOPT_PRI_MED. As of BS2000 V16.0A, the I/O priorities are also supported directly by BS2000 (PCS/PRIOR). A category can be assigned a HIGH, MEDIUM or LOW priority with the IO-PRIO operand of the MODIFY-TASK-CATEGORIES command. The default setting is *NONE. When set with MODIFY-TASK-CATEGORIES, the I/O priority is controlled by BS2000 (PCS/PRIOR). As of BS2000 V16.0A, settings made via IORM are only effective for IO-PRIO=*NONE. If the tasks were assigned I/O priorities in this way and the IOPT function was activated with the IORM statement IOPT_SET_ON=YES, IORM periodically checks whether tasks with a lower IO-PRIO are hindering tasks with a higher IO-PRIO. If they are, IORM intervenes in control of the BS2000 I/O order and "brakes" the tasks with IO-PRIO=LOW or IO-PRIO=MEDIUM. IORM does not intervene for tasks with IO-PRIO=HIGH. Only disk devices are considered in IOPT. The IORM brake does not affect all I/Os. Exceptions are: FDDRL, ARCHIVE, VOLIN, PAGING. IOPT only works locally to the system. Only the I/O utilization and the I/O priorities for the system concerned are considered for this. In VM mode, the IOPT settings are required in all systems in which IOPT is to be active. The IORM statement IOPT_DEV_ADD can be used to define devices on which the IORM priority control is to be employed. A - Page 11 - The IORM statement IOPT_LOW_XXX_YYY can be used to set defaults for tasks with IO-PRIO=LOW and IOPT_MED_XXX_YY used for tasks with IO-PRIO=MEDIUM. Three thresholds or I/O quotas can be defined for each of the I/O units device (XXX=DEV), path (XXX=PTH), port (XXX=POR) and channel (XXX=CHN). The default values set in IORM correspond to the entries in the supplied file SYSDAT.IORM.050 or SYSDAT.IORM.060. IORM continuously collects utilization values for all known I/O units (devices, paths, ports and channels), separated into IO-PRIO=HIGH / MEDIUM / LOW. The IOPT settings are checked periodically and controlling intervention into BS2000 operation is made if necessary. The fact that the I/O utilization increases appreciably faster on a device in comparison to a path, a port or a channel, particularly with multiple-path device connection should be taken into account for the IORM settings. In addition to the above mentioned I/O units (devices, paths, ports and channels), the I/O unit device group has been introduced into IORM. A device group consists of one or more devices. A device group is defined with the IORM statement IOPT_GRP_XXX_ADD. If a conflict situation exists on a physical disk but IORM cannot detect this quickly enough because the utilization for the paths, ports and channels are still below the prescribed thresholds, it may be meaningful to group all logical devices on the physical disk together to form a device group for IORM. A - Page 12 - 3.2 IOPT settings ------------- Activate IOPT function: ---------------------- IOPT_SET_ON=YES Activates the IOPT function in the system. The functional mode depends on the other settings. Deactivate IOPT function: ------------------------ IOPT_SET_ON=NO (default value) Deactivates the IOPT function in the system. Query current setting: --------------------- IOPT_SET_ON? Define limit value for I/O priority HIGH: ---------------------------------------- IOPT_PRI_HIGH=X (0 <= X <= 255, default: X=155) All tasks with Task-Prio <= IOPT_PRI_HIGH come into the class of IO-PRIO=HIGH. Define limit value for I/O priority MEDIUM: ------------------------------------------ IOPT_PRI_MED=Y (0 <= Y <= 255, default: Y=205) Tasks with Task-Prio <= IOPT_PRI_MED and Task-Prio > IOPT_PRI_HIGH come into the class of IO-PRIO=MEDIUM. Tasks with Task-Prio > IOPT_PRI_MED are in the class of IO-PRIO=LOW. If possible, the IO-PRIO should be defined via the BS2000 command MODIFY-TASK-CATEGORIES and not with IOPT_PRI_HIGH and IOPT_PRI_MED. Query current limit values: -------------------------- IOPT_PRI_HIGH? IOPT_PRI_MED? A - Page 13 - Define disk devices for IOPT: ---------------------------- IOPT_DEV_ADD=ALL Activates all disk devices for IOPT. IOPT_DEV_ADD=D-R(MN1,MN2) Activates a device range for IOPT. The range contains all devices between device MN1 and device MN2. Default: no devices are activated. IOPT_DEV_REM=ALL Deactivates all disk devices for IOPT. IOPT_DEV_REM=D-R(MN1,MN2) Deactivates a device range for IOPT. The range contains all devices between device MN1 and device MN2. Query activated disk devices: ---------------------------- IOPT_DEV_ADD?* Lists all activated devices. IOPT_DEV_ADD?N* Lists all activated devices whose names begin with N. IOPT_DEV_ADD?NN* Lists all activated devices whose names begin with NN. IOPT_DEV_ADD?NNN* Lists all activated devices whose names begin with NNN. IOPT_DEV_ADD?NNNN Lists the device named NNNN if it is activated. A - Page 14 - Define device groups: -------------------- IOPT_GRP_XXX_ADD=D-R(MN1,MN2) Adds the device group from device MN1 to device MN2 to device group XXX (001 <= XXX <= 255). IOPT_GRP_XXX_REM=ALL Removes all devices from device group XXX (001 <= XXX <= 255). IOPT_GRP_XXX_REM=D-R(MN1,MN2) Removes the device range from device MN1 to device MN2 from device group XXX (001 <= XXX <= 255). Query device groups: ------------------- IOPT_GRP_XXX_ADD?* Lists all devices belonging to device group XXX. IOPT_GRP_XXX_ADD?N* Lists all devices belonging to device group XXX whose names begin with N. IOPT_GRP_XXX_ADD?NN* Lists all devices belonging to device group XXX whose names begin with NN. IOPT_GRP_XXX_ADD?NNN* Lists all devices belonging to device group XXX whose names begin with NNN. IOPT_GRP_XXX_ADD?NNNN The device named NNNN is listed if it belongs to device group XXX. A - Page 15 - Define limit values for IO-PRIO=LOW and channels: ------------------------------------------------ Limit value 1: ------------- IOPT_LOW_CHN_1HM=X (0 < X <= 100, default: X=20) IOPT_LOW_CHN_1QH=Y (0 < Y <= 100, default: Y=40) IOPT_LOW_CHN_1QM=Z (0 < Z <= 100, default: Z=55) IOPT_LOW_CHN_1HM defines the first threshold value for the percentile channel utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If the utilization by the tasks with IO-PRIO=HIGH and IO-PRIO=MED remain below the value X, IORM does not block tasks with IO-PRIO=LOW due to the channel load. If utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds the value X but stays below the second threshold set by IOPT_LOW_CHN_2HM, the utilization by tasks with IO-PRIO=LOW is limited to the value Y set by IOPT_LOW_CHN_1QH or the value Z set by IOPT_LOW_CHN_1QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. Limit value 2: ------------- IOPT_LOW_CHN_2HM=X (0 < X <= 100, default: X=30) IOPT_LOW_CHN_2QH=Y (0 < Y <= 100, default: Y=30) IOPT_LOW_CHN_2QM=Z (0 < Z <= 100, default: Z=40) IOPT_LOW_CHN_2HM defines the second threshold for the percentile channel utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds value X but stays below the third threshold set by IOPT_LOW_CHN_3HM, the utilization by tasks with IO-PRIO=LOW is limited to the value Y set by IOPT_LOW_CHN_2QH or the value Z set by IOPT_LOW_CHN_2QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. Limit value 3: ------------- IOPT_LOW_CHN_3HM=X (0 < X <= 100, default: X=40) IOPT_LOW_CHN_3QH=Y (0 < Y <= 100, default: Y=20) IOPT_LOW_CHN_3QM=Z (0 < Z <= 100, default: Z=30) IOPT_LOW_CHN_3HM defines the third threshold value for the percentile channel utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds the value X, the utilization by tasks with IO-PRIO=LOW is limited to value Y set by IOPT_LOW_CHN_3QH or value Z set by IOPT_LOW_CHN_3QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. A - Page 16 - Define limit values for IO-PRIO=LOW and ports: --------------------------------------------- Limit value 1: ------------- IOPT_LOW_POR_1HM=X (0 < X <= 100, default: X=20) IOPT_LOW_POR_1QH=Y (0 < Y <= 100, default: Y=40) IOPT_LOW_POR_1QM=Z (0 < Z <= 100, default: Z=55) IOPT_LOW_POR_1HM defines the first threshold value for percentile port utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED remain below the value X, IORM does not block tasks with IO-PRIO=LOW due to the port load. If the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds value X but stays below the second threshold set by IOPT_LOW_POR_2HM, the utilization by tasks with IO-PRIO=LOW is limited to the value Y set by IOPT_LOW_POR_1QH or the value Z set by IOPT_LOW_POR_1QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. Limit value 2: ------------- IOPT_LOW_POR_2HM=X (0 < X <= 100, default: X=30) IOPT_LOW_POR_2QH=Y (0 < Y <= 100, default: Y=30) IOPT_LOW_POR_2QM=Z (0 < Z <= 100, default: Z=40) IOPT_LOW_POR_2HM defines the second threshold value for percentile port utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds value X but stays below the third threshold set by IOPT_LOW_POR_3HM, the utilization by tasks with IO-PRIO=LOW is limited to the value Y set by IOPT_LOW_POR_2QH or the value Z set by IOPT_LOW_POR_2QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. Limit value 3: ------------- IOPT_LOW_POR_3HM=X (0 < X <= 100, default: X=40) IOPT_LOW_POR_3QH=Y (0 < Y <= 100, default: Y=20) IOPT_LOW_POR_3QM=Z (0 < Z <= 100, default: Z=30) IOPT_LOW_POR_3HM defines the third threshold value for percentile port utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds value X, the utilization by tasks with IO-PRIO=LOW is limited to the value Y set by IOPT_LOW_POR_3QH or value Z set by IOPT_LOW_POR_3QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. A - Page 17 - Define limit value for IO-PRIO=LOW and paths: -------------------------------------------- Limit value 1: ------------- IOPT_LOW_PTH_1HM=X (0 < X <= 100, default: X=20) IOPT_LOW_PTH_1QH=Y (0 < Y <= 100, default: Y=40) IOPT_LOW_PTH_1QM=Z (0 < Z <= 100, default: Z=55) IOPT_LOW_PTH_1HM defines the first threshold value for percentile path utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If the utilization by the tasks with IO-PRIO=HIGH and IO-PRIO=MED remain below the value X, IORM does not block tasks with IO-PRIO=LOW due to the path load. If utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds the value X but stays below the second threshold set by IOPT_LOW_PTH_2HM, the utilization by tasks with IO-PRIO=LOW is limited to the value Y set by IOPT_LOW_PTH_1QH or the value Z set by IOPT_LOW_PTH_1QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. Limit value 2: ------------- IOPT_LOW_PTH_2HM=X (0 < X <= 100, default: X=30) IOPT_LOW_PTH_2QH=Y (0 < Y <= 100, default: Y=30) IOPT_LOW_PTH_2QM=Z (0 < Z <= 100, default: Z=40) IOPT_LOW_PTH_2HM defines the second threshold value for percentile path utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds value X but stays below the third threshold set by IOPT_LOW_PTH_3HM, the utilization by tasks with IO-PRIO=LOW is limited to the value Y set by IOPT_LOW_PTH_2QH or the value Z set by IOPT_LOW_PTH_2QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. Limit value 3: ------------- IOPT_LOW_PTH_3HM=X (0 < X <= 100, default: X=40) IOPT_LOW_PTH_3QH=Y (0 < Y <= 100, default: Y=20) IOPT_LOW_PTH_3QM=Z (0 < Z <= 100, default: Z=30) IOPT_LOW_PTH_3HM defines the third threshold value for percentile path utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds the value X, the utilization by tasks with IO-PRIO=LOW is limited to value Y set by IOPT_LOW_PTH_3QH or value Z set by IOPT_LOW_PTH_3QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. A - Page 18 - Define limit value for IO-PRIO=LOW and devices: ---------------------------------------------- Limit value 1: ------------- IOPT_LOW_DEV_1HM=X (0 < X <= 100, default: X=15) IOPT_LOW_DEV_1QH=Y (0 < Y <= 100, default: Y=35) IOPT_LOW_DEV_1QM=Z (0 < Z <= 100, default: Z=50) IOPT_LOW_DEV_1HM defines the first threshold value for percentile device utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If the utilization by the tasks with IO-PRIO=HIGH and IO-PRIO=MED remain below the value X, IORM does not block tasks with IO-PRIO=LOW due to the device load. If the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds value X but stays below the second threshold set by IOPT_LOW_DEV_2HM, the utilization by tasks with IO-PRIO=LOW is limited to the value Y set by IOPT_LOW_DEV_1QH or the value Z set by IOPT_LOW_DEV_1QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. Limit value 2: ------------- IOPT_LOW_DEV_2HM=X (0 < X <= 100, default: X=22) IOPT_LOW_DEV_2QH=Y (0 < Y <= 100, default: Y=25) IOPT_LOW_DEV_2QM=Z (0 < Z <= 100, default: Z=40) IOPT_LOW_DEV_2HM defines the second threshold value for percentile device utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds value X but stays below the third threshold set by IOPT_LOW_DEV_3HM, the utilization by tasks with IO-PRIO=LOW is limited to the value Y set by IOPT_LOW_DEV_2QH or the value Z set by IOPT_LOW_DEV_2QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. Limit value 3: ------------- IOPT_LOW_DEV_3HM=X (0 < X <= 100, default: X=30) IOPT_LOW_DEV_3QH=Y (0 < Y <= 100, default: Y=10) IOPT_LOW_DEV_3QM=Z (0 < Z <= 100, default: Z=30) IOPT_LOW_DEV_3HM defines the third threshold value for percentile device utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED. If the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds the value X, the utilization by tasks with IO-PRIO=LOW is limited to value Y set by IOPT_LOW_DEV_3QH or value Z set by IOPT_LOW_DEV_3QM. If there is only low utilization by IO-PRIO=HIGH, value Z applies, otherwise value Y applies. A - Page 19 - Limit value 0: ------------- IOPT_LOW_DEV_0SU=X (0 < X <= 100, default: X=70) IOPT_LOW_DEV_0HM=Y (0 < Y <= 100, default: Y=1) IOPT_LOW_DEV_0RQ=Z (0 < Z <= 100, default: Z=25) In addition to the three limit values listed above, one more blocking condition can be defined for devices: If the total utilization of a device exceeds the value X, the sum of the utilizations by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceeds the value Y and the average number of I/O orders times ten exceeds the value Z, the utilization by tasks with IO-PRIO=LOW is limited as with exceeding the first threshold. If the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED exceed the value X defined for limit values 2 or 3 the blocking conditions defined there apply. If a block is set in spite of appreciably lower total utilization and the utilization by tasks with IO-PRIO=HIGH and IO-PRIO=MED do not increase substantially, the block is removed again. This additional blocking functionality can be meaningful if the first threshold is not reached due to high device utilization by tasks with IO-PRIO=LOW. A - Page 20 - Define limit values for IO-PRIO=MEDIUM and channels: --------------------------------------------------- Limit value 1: ------------- IOPT_MED_CHN_1H=X (0 < X <= 100, default: X=20) IOPT_MED_CHN_1Q=Y (0 < Y <= 100, default: Y=50) IOPT_MED_CHN_1H defines the first threshold value for percentile channel utilization by tasks with IO-PRIO=HIGH. If the utilization by the tasks with IO-PRIO=HIGH remain below the value X, IORM does not block tasks with IO-PRIO=MED due to the channel load. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X but stays below the second threshold set by IOPT_MED_CHN_2H, utilization by tasks with IO-PRIO=MED is limited to the value Y set by IOPT_MED_CHN_1Q. Limit value 2: ------------- IOPT_MED_CHN_2H=X (0 < X <= 100, default: X=30) IOPT_MED_CHN_2Q=Y (0 < Y <= 100, default: Y=40) IOPT_MED_CHN_2H defines the second threshold value for percentile channel utilization by tasks with IO-PRIO=HIGH. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X but remains below the third threshold set by IOPT_MED_CHN_3H, utilization by tasks with IO-PRIO=MED is limited to the value Y set by IOPT_MED_CHN_2Q. Limit value 3: ------------- IOPT_MED_CHN_3H=X (0 < X <= 100, default: X=40) IOPT_MED_CHN_3Q=Y (0 < Y <= 100, default: Y=30) IOPT_MED_CHN_3H defines the third threshold value for percentile channel utilization by tasks with IO-PRIO=HIGH. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X, the utilization by tasks with IO-PRIO=MED is limited to the value Y set by IOPT_MED_CHN_3Q. A - Page 21 - Define limit values for IO-PRIO=MEDIUM and ports: ------------------------------------------------ Limit value 1: ------------- IOPT_MED_POR_1H=X (0 < X <= 100, default: X=20) IOPT_MED_POR_1Q=Y (0 < Y <= 100, default: Y=50) IOPT_MED_POR_1H defines the first threshold value for percentile port utilization by tasks with IO-PRIO=HIGH. If the utilization by the tasks with IO-PRIO=HIGH remain below value X, IORM does not block tasks with IO-PRIO=MED due to the port load. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X but stays below the second threshold set by IOPT_MED_POR_2H, utilization by tasks with IO-PRIO=MED is limited to the value Y set by IOPT_MED_POR_1Q. Limit value 2: ------------- IOPT_MED_POR_2H=X (0 < X <= 100, default: X=30) IOPT_MED_POR_2Q=Y (0 < Y <= 100, default: Y=40) IOPT_MED_POR_2H defines the second threshold value for percentile port utilization by tasks with IO-PRIO=HIGH. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X but stays below the third threshold set by IOPT_MED_POR_3H, utilization by tasks with IO-PRIO=MED is limited to the value Y set by IOPT_MED_POR_2Q. Limit value 3: ------------- IOPT_MED_POR_3H=X (0 < X <= 100, default: X=40) IOPT_MED_POR_3Q=Y (0 < Y <= 100, default: Y=30) IOPT_MED_POR_3H defines the third threshold value for percentile port utilization by tasks with IO-PRIO=HIGH. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X, the utilization by tasks with IO-PRIO=MED is limited to the value Y set by IOPT_MED_POR_3Q. A - Page 22 - Define limit value for IO-PRIO=MEDIUM and paths: ----------------------------------------------- Limit value 1: ------------- IOPT_MED_PTH_1H=X (0 < X <= 100, default: 20) IOPT_MED_PTH_1Q=Y (0 < Y <= 100, default: 50) IOPT_MED_CHN_1H defines the first threshold value for percentile path utilization by tasks with IO-PRIO=HIGH. If the utilization by the tasks with IO-PRIO=HIGH remain below value X, IORM does not block tasks with IO-PRIO=MED due to path load. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X but stays below the second threshold set by IOPT_MED_CHN_2H, utilization by tasks with IO-PRIO=MED are limited to the value Y set by IOPT_MED_CHN_1Q. Limit value 2: ------------- IOPT_MED_PTH_2H=X (0 < X <= 100, default: X=30) IOPT_MED_PTH_2Q=Y (0 < Y <= 100, default: Y=40) IOPT_MED_PTH_2H defines the second threshold value for percentile path utilization by tasks with IO-PRIO=HIGH. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X but stays below the third threshold set by IOPT_MED_PTH_3H, utilization by tasks with IO-PRIO=MED are limited to the value Y set by IOPT_MED_PTH_2Q. Limit value 3: ------------- IOPT_MED_PTH_3H=X (0 < X <= 100, default: X=40) IOPT_MED_PTH_3Q=Y (0 < Y <= 100, default: Y=30) IOPT_MED_PTH_3H defines the third threshold value for percentile path utilization by tasks with IO-PRIO=HIGH. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X, the utilization by tasks with IO-PRIO=MED are limited to the value Y set by IOPT_MED_PTH_3Q. A - Page 23 - Define limit value for IO-PRIO=MEDIUM and devices: ------------------------------------------------- Limit value 1: ------------- IOPT_MED_DEV_1H=X (0 < X <= 100, default: 15) IOPT_MED_DEV_1Q=Y (0 < Y <= 100, default: 50) IOPT_MED_DEV_1H defines the first threshold value for percentile device utilization by tasks with IO-PRIO=HIGH. If the utilization by the tasks with IO-PRIO=HIGH remain below value X, IORM does not block tasks with IO-PRIO=MED due to device load. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X but stays below the second threshold set by IOPT_MED_DEV_2H, utilization by tasks with IO-PRIO=MED are limited to the value Y set by IOPT_MED_DEV_1Q. Limit value 2: ------------- IOPT_MED_DEV_2H=X (0 < X <= 100, default: 22) IOPT_MED_DEV_2Q=Y (0 < Y <= 100, default: 35) IOPT_MED_DEV_2H defines the second threshold value for percentile device utilization by tasks with IO-PRIO=HIGH. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X but stays below the third threshold set by IOPT_MED_DEV_3H, utilization by tasks with IO-PRIO=MED are limited to the value Y set by IOPT_MED_DEV_2Q. Limit value 3: ------------- IOPT_MED_DEV_3H=X (0 < X <= 100, default: 30) IOPT_MED_DEV_3Q=Y (0 < Y <= 100, default: 25) IOPT_MED_DEV_3H defines the third threshold value for percentile device utilization by tasks with IO-PRIO=HIGH. If the utilization by tasks with IO-PRIO=HIGH exceeds the value X, the utilization by tasks with IO-PRIO=MED are limited to the value Y set by IOPT_MED_DEV_3Q. A - Page 24 - Limit value 0: ------------- IOPT_MED_DEV_0S=X (0 < X <= 100, default: X=70) IOPT_MED_DEV_0H=Y (0 < Y <= 100, default: Y=1) IOPT_MED_DEV_0R=Z (0 < Z <= 100, default: Z=25) In addition to the three limit values listed above, one more blocking condition can be defined for devices: If the total utilization of a device exceeds the value X, the sum of the utilizations by tasks with IO-PRIO=HIGH exceeds the value Y and the average number of I/O orders times ten exceeds the value Z, the utilization by tasks with IO-PRIO=MED is limited as with exceeding the first threshold. If the utilization by tasks with IO-PRIO=HIGH exceed the value X defined for limit values 2 or 3, the blocking conditions defined there apply. If a block is set in spite of appreciably lower total utilization and the utilization by tasks with IO-PRIO=HIGH does not increase substantially, the block is removed again. This additional blocking functionality can be meaningful if the first threshold is not reached due to high device utilization by tasks with IO-PRIO=MED. A - Page 25 - Query limit value for IO-PRIO=LOW: --------------------------------- IOPT_LOW_XXX_YYY? Supplies the current value for XXX = CHN or POR or PTH or DEV and YYY = iHM or iQH or iQM with i = 1 or 2 or 3. IOPT_LOW? Supplies all current values for IOPT_LOW_XXX_YYY. Query limit value for IO-PRIO=MEDIUM: ------------------------------------ IOPT_MED_XXX_YY? Supplies the current value for XXX = CHN or POR or PTH or DEV and YY = iH or iQ with i = 1 or 2 or 3. IOPT_MED? Supplies all current values for IOPT_MED_XXX_YY. A - Page 26 - 3.3 IOPT examples ------------- /START-SUBSYSTEM IORM /START-IORM Starts and initializes the IORM subsystem. Processes the statements from SYSDAT.IORM.050 or SYSDAT.IORM.060. They can appear as follows: IOPT_SET_ON=YES IOPT_DEV_ADD=ALL END This activates the IOPT function for all devices. The default values are taken as the limit values for IO-PRIO=LOW and IO-PRIO=MEDIUM. The logical devices 8800, 8801, 8810, 8820, 8821 and 8822 are on a physical device. Applications with IO-PRIO=HIGH are active with 8800 and 8801, and applications with IO-PRIO=LOW with 8810, 8820, 8821 and 8822. The applications with IO-PRIO=LOW disturb the applications with IO-PRIO=HIGH. IORM does not detect conflicts on the logical devices since the utilization on the ports, paths and channels is still below the specified threshold. A device group 001 is therefore defined. /START-IORM IOPT_GRP_001_ADD=D-R(8800,8801) IOPT_GRP_001_ADD=D-R(8810,8810) IOPT_GRP_001_ADD=D-R(8820,8822) END A - Page 27 - 3.4 IOPT appendix ------------- Query utilization of HIGH/MEDIUM/LOW: ------------------------------------ IOPT_INF_DEV?NNNN Supplies for device NNNN the percentile utilization values by IO-PRIO HIGH, MEDIUM and LOW tasks as well as explicit and implicit blocking factors for MEDIUM and LOW. The blocking factor is the relationship between the duration of the block by IORM and the I/O duration. An explicit block for MEDIUM/LOW for a channel (port, path , device) is caused if the first threshold for MEDIUM/LOW for the utilization of a channel (port, path, device) is exceeded. An implicit block for a device is caused if a channel, a port or a path (to which the device is "connected") is explicitly blocked. Further selection options for devices: IOPT_INF_DEV?* all devices IOPT_INF_DEV?N* all devices, whose name starts with N IOPT_INF_DEV?NN* all devices, whose name starts with NN IOPT_INF_DEV?NNN* all devices, whose name starts with NNN IOPT_INF_CHN?NN Supplies for channel NN the percentile utilization values by IO-PRIO HIGH, MEDIUM and LOW tasks and explicit blocking factors for MEDIUM and LOW. An explicit block comes directly from channel NN. Further selection options for channels: IOPT_INF_CHN?* all channels A - Page 28 - IOPT_INF_PTH?NNNN/CC Supplies for the path of channel CC to controller NNNN the percentile utilization values by IO-PRIO HIGH, MEDIUM and LOW tasks and explicit blocking factors for MEDIUM and LOW. An explicit block comes directly from path NNNN/CC. Further selection options for path: IOPT_INF_PTH?* all paths IOPT_INF_POR?NNNNNNNNNNNNNNNN Supplies for port NNNNNNNNNNNNNNNN the percentile utilization values by IO-PRIO HIGH, MEDIUM and LOW tasks and explicit blocking factors for MEDIUM and LOW. An explicit block comes directly from the port. Further selection options for ports: IOPT_INF_POR?* all Ports The port name corresponds to - the WWPN (16 characters) of the controller port for connection to the FC channel - director name / link address (e.g. CD03/55) if the controller is connected to a type S director - the channel name with direct connection to a type S channel or a type 2 channel. A - Page 29 - Example: I/Os are active for devices 3801 and 3803 on controller 3800 and channel 50. The FC port on the controller has WWPN 5006048448586C01. a) Query for channel 50: IOPT_INF_CHN?50 UNIT NAME | HIG MED LOW | EXPLICIT DELAY | IMPLICIT DELAY | % % % | MED LOW | MED LOW ------------------+-------------+----------------+---------------- 50 | 24 19 13 | 0 0.01 | 0 0 b) Query for path 3800/50: IOPT_INF_PTH?3800/50 UNIT NAME | HIG MED LOW | EXPLICIT DELAY | IMPLICIT DELAY | % % % | MED LOW | MED LOW ------------------+-------------+----------------+---------------- 3800/50 | 24 19 13 | 0 0.01 | 0 0 c) Query for port 5006048448586C01: IOPT_INF_POR?5006048448586C01 UNIT NAME | HIG MED LOW | EXPLICIT DELAY | IMPLICIT DELAY | % % % | MED LOW | MED LOW ------------------+-------------+----------------+---------------- 5006048448586C01 | 24 19 13 | 0 0.01 | 0 0 d) Query for devices 3801 and 3803: IOPT_INF_DEV?380* UNIT NAME | HIG MED LOW | EXPLICIT DELAY | IMPLICIT DELAY | % % % | MED LOW | MED LOW ------------------+-------------+----------------+---------------- 3800 | 0 0 0 | 0 0 | 0 0 3801 | 70 0 11 | 0 5.81 | 0 0 3802 | 0 0 0 | 0 0 | 0 0 3803 | 0 60 29 | 0 1.62 | 0 0 A - Page 30 - IOPT check: --------- Before IOPT is activated with IOPT_SET_ON=YES, a check could be made with IOPT resources to ascertain whether using IOPT would be beneficial. To do this, the limits for the I/O priorities are initially set with IOPT_PRI_HIGH and IOPT_PRI_MED and the limit values for utilizations are set with IOPT_LOW... and IOPT_MED... The check is activated with IOPT_SET_ON=CHK. The time for starting the checking period is set with IOPT_CHK_RESET. For example, after 1 hour or after 1 day a query can be made as to how often in the elapsed checking period with IOPT_SET_ON=YES a block would have been initiated for low priority tasks. Example: I/Os are active for devices 3801 and 3803 on controller 3800 and channel 50. The FC port on the controller has WWPN 5006048448586C01. a) Query all channels: IOPT_CHK_CHN?* UNIT NAME | FREQUENCY % -----------------+------------- 50 | 73 The blocking conditions for channel 50 were fulfilled up to 73 %. b) Query all paths: IOPT_CHK_PTH?* UNIT NAME | FREQUENCY % -----------------+------------- 3800/50 | 73 The blocking conditions for path 3800/50 (controller/channel) were fulfilled up to 73 %. c) Query all ports: IOPT_CHK_POR?* UNIT NAME | FREQUENCY % -----------------+------------- 5006048448586C01 | 73 The blocking conditions for port 5006048448586C01 were fulfilled up to 73 %. d) Query all devices: IOPT_CHK_DEV?* UNIT NAME | FREQUENCY % -----------------+------------- 3801 | 73 3803 | 73 A - Page 31 - A quantitative analysis is subsequently conceivable with IOPT_INF...: a) For channel 50: IOPT_INF_CHN?50 UNIT NAME | HIG MED LOW | EXPLICIT DELAY | IMPLICIT DELAY | % % % | MED LOW | MED LOW ------------------+-------------+----------------+---------------- 50 | 22 22 44 | 0 0 | 0 0 b) For path 3800/50: IOPT_INF_PTH?3800/50 UNIT NAME | HIG MED LOW | EXPLICIT DELAY | IMPLICIT DELAY | % % % | MED LOW | MED LOW ------------------+-------------+----------------+---------------- 3800/50 | 22 22 44 | 0 0 | 0 0 c) For port 5006048448586C01: IOPT_INF_POR?5006048448586C01 UNIT NAME | HIG MED LOW | EXPLICIT DELAY | IMPLICIT DELAY | % % % | MED LOW | MED LOW ------------------+-------------+----------------+---------------- 5006048448586C01 | 22 22 44 | 0 0 | 0 0 d) For devices 3801 and 3803: IOPT_INF_DEV?380* UNIT NAME | HIG MED LOW | EXPLICIT DELAY | IMPLICIT DELAY | % % % | MED LOW | MED LOW ------------------+-------------+----------------+---------------- 3800 | 0 0 0 | 0 0 | 0 0 3801 | 48 0 48 | 0 0 | 0 0 3802 | 0 0 0 | 0 0 | 0 0 3803 | 0 48 48 | 0 0 | 0 0 Subsequently, it makes sense to activate the IOPT function with IOPT_SET_ON=YES and select devices with IOPT_DEV_ADD. Further selection options for devices: IOPT_CHK_DEV?N* all devices, whose name starts with N IOPT_CHK_DEV?NN* all devices, whose name starts with NN IOPT_CHK_DEV?NNN* all devices, whose name starts with NNN IOPT_CHK_DEV?NNNN device named NNNN A - Page 32 - 4 DPAV - Dynamic Parallel Access Volume ------------------------------------- 4.1 Overview -------- I/O execution without PAV (Parallel Access Volume) -------------------------------------------------- If the device entry in the PDT for a disk indicates that the device is inactive, an I/O order is immediately started. Each further order for this device is then initially just put into the device wait queue (PDT-Q) by the I/O controller IOCNTRL. The next order from the PDT-Q is only started when the device is no longer active. Since, at any given time, only one I/O order is executed per disk, the total duration of an I/O is made up of the actual I/O duration in the hardware and the wait time in the PDT-Q. High PDT-Q times can be caused by several applications working concurrently with high loads on one disk. However, even one application that passes I/O orders asynchronously to IOCNTRL can also get caught up in the problem with high PDT-Q times. To avoid high PDT-Q times without PAV, the data inventory must be reorganized and frequently required data redistributed from one disk over several disks. The solution to the problem lies in executing multiple I/O orders concurrently on one disk. Different techniques exist for this, depending on the port type. Parallel I/O execution for emulated disks on SX servers ------------------------------------------------------- The I/O interface between BS2000 and X2000 was extended with BS2000 V15.0B and X2000 V2.5. BS2000 can now issue multiple I/O orders concurrently to X2000 for emulated disks. These are forwarded to the device and processed in turn there. A - Page 33 - I/O execution with static PAV ----------------------------- Symmetrix controllers offer the PAV (Parallel Access Volume) function on type S and type 2 channels. The controllers allow multiple concurrent accesses to a logical volume. (As of microcode level 5567) The PAV volumes are set up in Symmetrix by the EMC technician. A logical PAV volume is represented by a so-called base device and one or more alias devices. The base and alias devices must be generated as independent devices for BS2000 (and therefore also as different sub-channels for the channel subsystem. The alias devices may have any unit addresses but must be generated in the same logical controller as the corresponding base device. The base and alias devices have the same device type. BS2000 determines the relationship between base and alias devices dynamically when a device is attached. If BS2000 detects a base device, it searches for corresponding alias devices on the same controller and attaches them implicitly. The alias devices are also implicitly set to "ready" for subsequent use. As soon as a base device and the corresponding alias devices are attached and set to ready, IOCNTRL can start I/O orders for the PAV volume concurrently via the base and alias devices. A PAV volume is imported via the base device. Orders for read or write I/Os in BS2000 are made via the base device. It is IOCNTRL that distributes the I/Os over the base and alias devices according to their loading. Read I/Os started concurrently by BS2000 on PAV volumes are executed concurrently by Symmetrix but write I/Os only with disjunctive extent entries in the channel program. This static PAV function is supported by BS2000 as of V14.0A. There is no PAV in the controller for disks on the FC channel of S servers. However, BS2000 makes use of the fact that devices on the FC channel can still accept I/O orders even if an I/O is already active, thus supporting a "software PAV" as of V14.0B. The alias devices must also be generated in this case as independent devices, on the same controller as the base device and with the same LUN but with a different unit (alias) address. A - Page 34 - I/O execution with dynamic PAV ------------------------------ Static PAV requires some prediction when planning the future device utilization. Provision must be made in the controller (setting up PAV volumes with type S or type 2 ports) and in BS2000 (generating alias devices). It is, of course, also possible to assign one or more alias devices to all disks in advance. However, attention must be paid to the fact that an address is "used up" for each alias device, i.e. with one alias device each, only 128 volumes are possible for each logical controller. The generation problem can be eliminated with dynamic PAV (DPAV). DPAV autonomously assigns alias devices to those volumes that would profit most from them. Dynamic PAV is supported for disk devices on the FC channel of S servers but not for devices on the type S channel or type 2 channel. Alias devices on the FC channel are switched over by dynamically changing the I/O configuration from one base device to another base device. To do this, an alias device is temporarily removed from the I/O configuration (REMOVE-IO-UNIT) and subsequently re-entered (ADD-IO-UNIT) with the same LUN as the new base device. The unit address (alias address) thereby remains intact. Since the device number of a base device on the FC channel must be lower than the device numbers of the corresponding alias devices, (see the IOGEN program DVC statement in the "System Installation" manual), it is advisable to generate alias devices in the "rear" area of a controller. For a controller with 256 devices from 8000 to 80FF and using 80C0 to 80FF for the alias devices, all alias devices fulfill the device number condition for all possible base devices (8000 to 80BF). However, if for example 8010 were generated as an alias device for 8000, it could not be switched over to a base device between 8011 and 80FF. DPAV only uses previously generated alias devices, but does not define any additional device entries itself. The DPAV function must be activated with DPAV_SET_ON=YES in VM mode in each guest system that is to profit from DPAV. Alias devices for DPAV use can be defined with DPAV_DEV_ADD. All alias devices that are generated but not allowed for DPAV retain their static character. An alias device is modified in the monitor system in VM mode. VM2000 V8 is required for this and BS2000 V15.0B in monitor system. An alias device that is allowed for DPAV may not be attached in a guest system in which DPAV is not active. IORM V5.0A only supports DPAV in a guest system but not in the monitor system and also not in native mode. A - Page 35 - 4.2 DPAV settings ------------- Activate DPAV function: ---------------------- DPAV_SET_ON=YES Activates the DPAV function in a system. This setting is required in VM operation in all systems where DPAV is to be active. The functional mode depends on the other settings. Deactivate DPAV function: ------------------------ DPAV_SET_ON=NO (default value) Deactivates the DPAV function in the system. This setting is required in VM operation in all systems where DPAV is not to be active. Query current setting: --------------------- DPAV_SET_ON? A - Page 36 - Define alias devices for DPAV: ----------------------------- DPAV_DEV_ADD=ALL[,VM-INDEX] Activates all alias devices for DPAV. DPAV_DEV_ADD=D-R(MN1,MN2)[,VM-INDEX] Activates an alias range for DPAV. The range includes all devices between devices MN1 and MN2. Default: no devices are activated. Special features for VM mode: - DPAV_DEV_ADD is only specified in the monitor system. - If a VM-INDEX is specified, the alias devices may only be used for DPAV in the guest system specified via VM-INDEX - If no VM-INDEX is specified, the alias devices can be used for DPAV in all guest systems. DPAV_DEV_REM=ALL Deactivates all alias devices for DPAV. DPAV_DEV_REM=D-R(MN1,MN2) Deactivates an alias range for DPAV. The range includes all devices between devices MN1 and MN2. Special features for VM mode: - DPAV_DEV_REM is only specified in the monitor system. Query all alias devices that are activated for DPAV: --------------------------------------------------- DPAV_DEV_ADD?* Lists all alias devices that are activated for DPAV. DPAV_DEV_ADD?N* Lists all alias devices that are activated for DPAV and whose names begin with N. DPAV_DEV_ADD?NN* Lists all alias devices that are activated for DPAV and whose names begin with NN. DPAV_DEV_ADD?NNN* Lists all alias devices that are activated for DPAV and whose names begin with NNN. DPAV_DEV_ADD?NNNN Lists the alias device whose name is NNNN, if it is activated for DPAV. A - Page 37 - 4.3 DPAV example ------------ Monitor system -------------- /START-SUBSYSTEM IORM /START-IORM Starts and initializes the IORM subsystem. The statements from SYSDAT.IORM.050 or SYSDAT.IORM.060 are processed. These appear as follows: DPAV_SET_ON=YES DPAV_DEV_ADD=D-R(88D3,88D5) DPAV_DEV_ADD=D-R(88E3,88E5),8 DPAV_DEV_ADD=D-R(88F3,88F5),10 END The DPAV function is activated in monitor system. Alias devices 88D3, 88D4 and 88D5 may be used for DPAV in all guest systems. Alias devices 88E3, 88E4 and 88E5 may be used for DPAV in guest system 8. Alias devices 88F3, 88F4 and 88F5 may be used for DPAV in guest system 10. All other generated alias devices are not allowed for DPAV, they remain statically assigned to the base devices. Guest system ------------ /START-SUBSYSTEM IORM /START-IORM Starts and initializes the IORM subsystem. The statements from SYSDAT.IORM.050 or SYSDAT.IORM.060 are processed. These appear as follows: DPAV_SET_ON=YES END The DPAV function is activated in guest system. A - Page 38 - 4.4 DPAV appendix ------------- PAV check --------- The DPAV function is first activated with DPAV_SET_ON=YES and then DPAV_CHK_RESET is used to set the time for starting the checking period. Already assigned alias devices can also be activated with DPAV_DEV_ADD. e.g. after 1 hour or 1 day, the devices can be determined for which an additional alias device would have been useful within the prior checking period. Example: For device 3801 on controller 3800 (devices 3800 ... 38FF) two I/O orders are always pending and just one alias device 3807 is assigned. For device 3803 there are frequently several I/O orders pending but there are no alias devices assigned to device 3803. a) Query all devices for which an additional alias device would have been useful: DPAV_CHK_DEV?* UNIT NAME | FREQUENCY % -----------+------------- 3803 | 100 For device 3803, the requirements for an additional alias device were 100% fulfilled. Further selection options for devices: DPAV_CHK_DEV?N* all devices, whose name starts with N DPAV_CHK_DEV?NN* all devices, whose name starts with NN DPAV_CHK_DEV?NNN* all devices, whose name starts with NNN DPAV_CHK_DEV?NNNN device named NNNN A - Page 39 - b) Query existing alias devices: The next step checks whether alias devices are present on controller 3800: DPAV_CHK_ALI?38* UNIT NAME | I/O PER SEC -----------+------------- 380A | 0 380B | 0 380C | 0 380D | 0 380E | 0 380F | 0 3804 | 0 3805 | 0 3806 | 0 3807 | 2569 3808 | 0 3809 | 0 2569 I/Os per second are active on alias device 3807 and the remaining alias devices show no I/O activity. The I/O rate only refers to the home system ! In VM mode, I/Os could possibly be active on other guest systems ! Further selection options for alias devices: DPAV_CHK_ALI?* all alias devices DPAV_CHK_ALI?N* all alias devices whose name starts with N DPAV_CHK_ALI?NNN* all alias devices whose name starts with NNN DPAV_CHK_ALI?NNNN alias device named NNNN c) Activate alias devices for DPAV: DPAV_DEV_ADD=D-R(3804,3806) DPAV_DEV_ADD=D-R(3808,380F) Alias device 3807 remains statically assigned to device 3801, the other alias devices on controller 3800 are activated for DPAV. If no alias devices are generated on the controller, some could be added in the configuration (with IOGEN or /ADD-IO-UNIT). Then define the time for starting the checking period with DPAV_CHK_RESET. A few minutes later, after two alias devices have been assigned to device 3803, DPAV_CHK_DEV?* no longer shows 3803. A - Page 40 - 5 DDAL - Dynamic Device Allocation -------------------------------- 5.1 Overview -------- A tape device is selected in the device management, possibly together with MAREN, such that a device of the requisite type (e.g. C4) is selected within the storage location (e.g. a CentricStor) determined by the requested volume. Up to V15.0, the possible devices are simply selected sequentially. If multiple tapes are in use concurrently, this could result in unfavorable load distribution. Multiple devices on one ICP may be in use within a CentricStor while, at the same time, no devices are active on other ICPs. As of V16.0, device selection for CentricStor has been optimized. The device management notes the number of active devices for each ICP and uses these counts for device selection. A prerequisite for this is the setting *BY-CONTROLLER in the NEXT-TAPE-MOUNT operand of the MODIFY-MOUNT-PARAMETER command. However, the device management only knows the device assignments within a BS2000 system. If several guest systems in a server concurrently require devices, this could still result in an uneven load distribution despite the optimization in the device management. The DDAL function represents an extension of the optimized (local) device selection for all systems of a server in VM mode. It is thereby important that IORM is in use in the monitor system and in all guest systems. VM-wide internal communication ensures that IORM knows the overall assignments of the ICPs in all systems of this server. When a device is assigned, IORM makes the global assignment counter available to the device management. IORM V5.0A does not support DDAL. 5.2 DDAL settings ------------- Activate DDAL function: ---------------------- DDAL_SET_ON=YES Activates the DDAL function in the system. In VM mode, this setting is required in all systems in which DDAL is to be active. Deactivate DDAL function: ------------------------ DDAL_SET_ON=NO (default value) Deactivates the DDAL function in the system. In VM mode, this setting is required in all systems in which DDAL is not to be active. Query current setting: --------------------- DDAL_SET_ON? A - Page 41 - 6 IOLVM - I/O Limit for Virtual Machines -------------------------------------- 6.1 Overview -------- Less important guest systems that have intensive I/O activity, can severely impede other, much more important guest systems. Conflicts can arise if these guest systems execute I/Os on a) the same (logical) device or on different (logical) devices that are however b) on the same physical device c) connected via the same paths d) reachable via the same ports e) connected to the same channels. IORM can detect such conflict situations and actively intervene in the I/O operation. IORM continuously collects utilization values for all known I/O units (devices, paths, ports and channels) and device groups (see IOPT_GRP_XXX_ADD). The IOLVM settings are checked periodically and controlling intervention into BS2000 operation is made if necessary. Only disk devices are considered in IOLVM. The IORM brake does not affect all I/Os. Exceptions are: FDDRL, ARCHIVE, VOLIN, PAGING. 6.2 IOLVM settings -------------- Define I/O limit (in monitor system): ------------------------------------ IOLVM_XXX=N Defines an I/O limit of N % for guest system XXX. For N = 100, no I/O limitation takes place in guest system XXX. As of VM2000 V09.0A, the definition is made with VM2000 commands /MODIFY-VM-ATTRIBUTES or /CREATE-VM. Query I/O limit: --------------- IOLVM_XXX? As of VM2000 V09.0A, the query is made with the VM2000 command /SHOW-VM-ATTRIBUTES. 6.3 Example ------- IOLVM_008=20 (in the monitor system) Defines an I/O limit of 20 % for guest system 8. If guest system 8 causes the I/O utilization for a shared disk, a device group, a path, a port or a channel to exceed 20%, IORM makes controlling intervention into guest system 8. A - Page 42 - 7 TCOM - Tape Compression ----------------------- 7.1 Overview -------- To ensure optimum data backup to LTO tapes, a minimum data rate must be maintained so that the tapes "stream" continuously. For LTO3 tapes in LTO3 devices, the rate is approximately 40 MB/sec compressed or 80 MB/sec uncompressed, with a compression factor of 2.0. Within the range of from 40 MB/sec (80 MB/sec) to 80 MB/sec (160 MB/sec), the device dynamically adjusts to the data rate of the host. If the minimum data rate is not reached, the tape is braked by the device, rewound a little and then repositioned again behind the data that was written last. Frequent events of this type (start/stop operation) can adversely affect the lifetime of a tape. The minimum data rate required to maintain streaming mode can be achieved with ARCHIVE 8.0B together with data on fast disk drives and "large" RAID systems. (see also the system support manual, section 5.8 PAV). This is not achieved with slow disk drives or disks on a type S channel. "In between" (with LTO3 approximately at 40 MB/sec to 80 MB/sec with a compression factor of 2.0) there is an area where the minimum data rate is achieved if the compression in the device is disabled. The tape capacity is correspondingly lower with disabled compression (with LTO3 around 400 GB instead of 800 GB with a compression factor of 2.0). The TCOM function is available as of IORM V6.0A to control the compression factor of LTO tapes. The compression is always enabled by default. This setting also applies if IORM is not used. The compression can also be completely disabled with TCOM. As a further alternative, TCOM also offers the option of dynamically switching the compression according to the data rate. The compression is disabled if the data rate is sufficient for streaming the tape without compression, but not with compression. The compression is enabled if the data rate is also sufficient for streaming with compression. With S servers, TCOM determines the amount of data transferred from the server to the device and from the device to the tape, directly from the device. With SX servers, only the amount of data transferred from the server to the device is known. The amount of data transferred from the device to the tape is calculated via the specified compression factor (default value 2.0). A - Page 43 - 7.2 TCOM settings Enable compression: ------------------ TCOM_SET=ON Enables the compression for LTO devices. The tape capacity utilization is optimum with this setting but if the tape data rate is low the tape frequently goes into start/stop mode. Disable compression: ------------------- TCOM_SET=OFF Disables the compression for LTO devices. The number of start/stop events can be minimized with low tape data rates but the tape capacity decreases as a function of the data compression rate. Enable dynamic compression: -------------------------- TCOM_SET=DYN Enables/disables the compression for LTO devices according to the data rate. This setting combines the advantages of optimum tape capacity with a high data rate and reduced start/stop events with a low data rate. Default setting: TCOM_SET=ON. The setting applies for all LTO devices in the home system. Query current setting: --------------------- TCOM_SET? Define compression factor: ------------------------- TCOM_FACTOR=N.N Defines the compression factor for the data to be saved for TCOM_SET=DYN and SX servers. Values between 1.0 and 9.9 are permitted. Default value: 2.0. Query set compression factor: ---------------------------- TCOM_FACTOR? A - Page 44 - 8 Creating Error Documentation ---------------------------- For a successful diagnosis and elimination of IORM problems, adequate error documentation should be created or saved as soon as possible. For reproducible errors, the user should include detailed information on how to generate the error condition. In addition to the CONSLOG file and the IORM statements, an IORM dump should always be made: /ASSIGN-SYSDTA TO=filename /START-IORM IORM_DUMP END The IORM dump is then available in the file specified by filename. For problems with DPAV or DDAL in VM mode, these documents will also be required from the guest system(s) and the monitor system. A - Page 45 - 9 Appendix -------- Hardware configuration ---------------------- Hardware dependencies of the IORM functions: IOPT : Disk devices on S and SX server. DPAV : Disk devices on FC channel of S server. On fibre channels of the SX servers the PAV function is not available. Since OSD/XC V2.0 and X2000 V2.5 parallel IOs for emulated disk devices are supported via RSC. DDAL : Tape devices on S and SX server. IOLVM: Disk devices on S and SX server. TCOM : LTO tape drives on fibre channel of S and SX server. Software configuration ---------------------- Software dependencies of the IORM functions: IOPT : Since OSD V5.0C resp. OSD/XC V1.0. DPAV : Native: Since OSD V6.0B. VM2000: Since OSD V5.0C and VM2000 V8.0A. On the monitor system at least OSD V6.0B is necessary. DDAL : This function is necessary only in VM mode. In native mode the funcionality is realized in device management of BS2000 since OSD V7.0A resp. OSD/XC V3.0A. The function is used by device management since OSD V7.0A resp. OSD/XC V3.0. On guest systems or monitor system with OSD V6.0B resp. OSD/XC V2.0 DDAL should be activated too. IOLVM: Since OSD V5.0C resp. OSD/XC V1.0. TCOM : Since OSD V6.0B resp. OSD/XC V2.0.