Utilize a new procedure to better manage host server job performance.
The good news in the IBM i world is that more and more applications and tools are using modern, industry-standard interfaces such as ODBC, ADO.NET, and JDBC to access DB2 for i databases. The bad news from a systems management perspective is that all of those interfaces by default run in the same subsystem (QUSRWRK) on your IBM i servers. Analysts utilizing an ODBC-based reporting tool are competing for the same resources as those users who are using a JDBC-based OLTP application. Both sets of users have workloads running in QZDASOINIT jobs in the same subsystem.
This mixed usage of QZDASOINIT jobs in a single subsystem leaves administrators in a bind as they try to prevent the reporting workload from stealing resources from the OLTP workload and vice versa. It's a difficult task to separate these disparate workloads into separate subsystems. Prior to the latest IBM i Technology Refresh (TR) for the 7.1 and 7.2 releases, the only solution available was to route host server jobs to different subsystems based on the client's TCP/IP address. This solution was difficult to use because there was no programmatic interface (System i Navigator only) and because of the complexity of mapping a user profile to a specific TCP/IP address (especially with the popularity of DHCP).
As previously highlighted, the latest IBM i TR delivers a slicker routing solution for administrators struggling to managr different types of host server job consumers. This solution is the new SET_SERVER_SBS_ROUTING stored procedure, which resides in the QSYS2 library.
This article explores this new capability in detail by utilizing the job routing technology to ensure that your executive's reports are always routed to a powerful subsystem. You don't want to get angry calls from your executives wondering why their reports are still running, so you want to make sure that the QZDASOINIT jobs used by their ODBC-based reports always run in a separate subsystem.
If you don't already have a special subsystem created to handle your executives' workloads, the first step would be creating and starting that subsystem. The following script of CL commands accomplishes that task.
CRTSBSD SBSD(ExecSBS) POOLS((1 *BASE))
ADDJOBQE SBSD(ExecJOBQ) JOBQ(ExecJOBQ)
CRTCLS CLS(ExecCLS) RUNPTY(5) TIMESLICE(5000)
ADDPJE SBSD(QGPL/ExecSBS) PGM(QSYS/QZDASOINIT) JOBD(QGPL/QDFTSVR) CLS(ExecCLS)
There are many different way to configure and create a subsystem to provide the required amount of resources for your executives' host server job workloads. However, one configuration step is required in order to be able to use the SET_SERVER_SBS_ROUTING stored procedure. The requirement is that the Prestart Job Entry for the QZDASOINIT jobs must have the same name as the subsystem; in this example, they both share the name of ExecSBS.
Now that you have the more powerful subsystem up and running, the final step is using the new stored procedure to change the routing of the QZDASOINIT jobs used by your executive. As you can see from this example invocation of the SET_SERVER_SBS_ROUTING procedure, all that's required for input is the user profile and target subsystem name for the QZDASOINIT jobs.
Once this stored procedure call completes, any new connection made by the specified user profile (MREXEC) will automatically be routed to the specified subsystem (EXECSBS). This subsystem routing information is stored permanently on the system, so the specified routing information will persist across system and subsystem restarts.
This new procedure applies to more than just the QZDASOINIT server jobs. It also can be used for the routing of QRWTSRVR host server jobs that are commonly associated with the usage of DRDA requests and the IBM DB2 Connect product. If the same routing behavior is desired for both types of host server jobs, then the special value of *ALL can be specified for the second parameter. In addition, the new procedure also allows group profile or supplemental group profile values to be passed for the first parameter so that it's easy to enable the same subsystem routing behavior for a group of similar users.
If your executive wants proof that the QZDASOINIT jobs are going to run in a separate subsystem, the new SERVER_SBS_ROUTING catalog view provides a solution. The following query utilizes this catalog view to return a list of the user profiles that have QZDASOINIT server jobs being routing to an alternate subsystem.
SELECT Authorization_Name, QZDASOINIT_Subsystem
The figure below contains the result set from the prior query, proving that the ODBC-based reports run by the MREXEC user profile will run in the more powerful ExecSBS subsystem.
Figure 1: You can see the query results.
More details about this enhancement are available in the DB2 Technology Updates Wiki.
Hopefully, it's now clear how simple it is to route different host server job workloads into separate subsystems with the SET_SERVER_SBS_ROUTING stored procedure. Whether you need to make requests run faster for your executive or need to isolate resources for transactional and query workloads, this new functionality will make your job easier.