Non-transactional applications and utilities that do a lot of physical (non-VFA) DASD I/O can slow down DASD I/O generated by transactional work. To prevent this from happening a set of deliverables was provided with APAR PJ46401 to allow the user to control the amount of DASD I/O activity generated by a non-transactional application or utility.
A new C function, tpf_dasd_iops_limit, can be coded by user applications to check if the physical DASD I/O per second limit has been reached by this TPF subsystem. The function returns a flag indicating the DASD I/O limit has or has not been reached. If the DASD I/O limit has been reached, an additional value is returned indicating the number of microseconds the application should give up control before checking again.
A new parameter on the ZSONS command, ZSONS ALTER IOPS, will allow system administrators to set the desired physical DASD I/O per second limit for a TPF subsystem for applications and utilities that have tpf_dasd_iops_limit coded. A value of zero indicates there is no limit. ZSONS DISPLAY IOPS was also provided to display the limit set by ZSONS ALTER IOPS.
A new parameter on the ZSTAT command, ZSTAT IOPS will allow system administrators to display the number of physical DASD I/Os over the last second.
Examples:
ZSTAT IOPS
CSMP0097I 09.57.10 CPU-B SS-BSS SSU-HPN IS-01
STAT0062I 09.57.10 DASD IOPS DISPLAY
SUBSYSTEM TOTAL DEVA DEVB DEVC DEVD
BSS 48388 41435 6953 0 0
END OF DISPLAY+
...
ZSONS ALTER IOPS LIMIT-20000
CSMP0097I 11.50.47 CPU-B SS-BSS SSU-HPN IS-01
SONS0066I 11.50.47 MAXIMUM PHYSICAL DASD IOPS 20000+
Sample call to tpf_dasd_iops_limit
#include <tpf/c_iops.h>
#include <tpf/tpfapi.h>
int main();
{
struct iops_limit iops_info, *my_iops_limit;
my_iops_limit = &iops_info;
tpf_dasd_iops_limit(my_iops_limit);
while (my_iops_limit->limit_flag)
{
usleep((unsigned int)my_iops_limit->microseconds);
tpf_dasd_iops_limit(my_iops_limit);
}
…. issue find or file at this point ….
}
Recoup has been updated to use the tpf_dasd_iops_limit API. Furthermore, if Recoup is run on fenced I-streams, Recoup can generate a large number of DASD IOPS. If the IOPS limit is not set and depending on the capacity of the DASD subsystem, Recoup can overwhelm the DASD subsystem.
For a discussion on TPF’s use of this functionality for recoup, see
this BLOG entryFor more information on PJ46401 please see the
APEDIT